Skip to content

Commit bd72827

Browse files
committed
chore: Restore vendor script, new script for step-by-step vendoring
1 parent 38057b1 commit bd72827

File tree

5 files changed

+94
-48
lines changed

5 files changed

+94
-48
lines changed

.Rbuildignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ RELEASE.md
1313
\.github
1414
^\.gitattributes$
1515
^vendor\.sh$
16+
^vendor-one\.sh$
1617
^rconfigure\.py$
1718
^src/\.editorconfig$
1819
^\.vscode$

.github/workflows/vendor.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
- main
55
paths:
66
- ".github/workflows/vendor.yaml"
7-
- "vendor.sh"
7+
- "vendor-one.sh"
88
workflow_dispatch:
99
schedule:
1010
- cron: "*/5 * * * *"
@@ -39,7 +39,7 @@ jobs:
3939
id: vendor
4040
run: |
4141
git pull --rebase
42-
./vendor.sh .git/duckdb
42+
./vendor-one.sh .git/duckdb
4343
rm -rf .git/duckdb
4444
git push --dry-run
4545
# Check if ahead of upstream branch

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Then run the following commands
3636

3737
``` sh
3838
~ (cd duckdb && git checkout {{desired_branch}})
39-
~ (cd ducdkb-r && ./vendor.sh)
39+
~ (cd ducdkb-r && ./vendor-one.sh)
4040
~ (cd duckdb-r && R CMD INSTALL .)
4141
```
4242

vendor-one.sh

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/bin/bash
2+
# https://unix.stackexchange.com/a/654932/19205
3+
# Using bash for -o pipefail
4+
5+
set -e
6+
set -x
7+
set -o pipefail
8+
9+
cd `dirname $0`
10+
11+
if [ -z "$1" ]; then
12+
upstream_basedir=../duckdb
13+
else
14+
upstream_basedir="$1"
15+
fi
16+
17+
upstream_dir=.git/duckdb
18+
19+
if [ "$upstream_basedir" != ".git/duckdb" ]; then
20+
git clone "$upstream_basedir" "$upstream_dir"
21+
fi
22+
23+
if [ -n "$(git status --porcelain)" ]; then
24+
echo "Error: working directory not clean"
25+
exit 1
26+
fi
27+
28+
if [ -n "$(git -C "$upstream_dir" status --porcelain)" ]; then
29+
echo "Warning: working directory $upstream_dir not clean"
30+
fi
31+
32+
original=$(git -C "$upstream_dir" rev-parse --verify HEAD)
33+
34+
base=$(git log -n 3 --format="%s" -- src/duckdb | tee /dev/stderr | sed -nr '/^.*duckdb.duckdb@([0-9a-f]+)$/{s//\1/;p;}' | head -n 1)
35+
36+
message=
37+
38+
for commit in $(git -C "$upstream_dir" log --first-parent --reverse --format="%H" ${base}..HEAD); do
39+
echo "Importing commit $commit"
40+
41+
git -C "$upstream_dir" checkout "$commit"
42+
43+
rm -rf src/duckdb
44+
45+
echo "R: configure"
46+
DUCKDB_PATH="$upstream_dir" python3 rconfigure.py
47+
48+
# Always vendor tags
49+
if [ $(git -C "$upstream_dir" describe --tags | grep -c -- -) -eq 0 ]; then
50+
message="chore: Update vendored sources (tag $(git -C "$upstream_dir" describe --tags)) to duckdb/duckdb@$commit"
51+
changed=1
52+
break
53+
fi
54+
55+
if [ $(git status --porcelain -- src/duckdb | wc -l) -gt 1 ]; then
56+
message="chore: Update vendored sources to duckdb/duckdb@$commit"
57+
break
58+
fi
59+
done
60+
61+
if [ "$message" = "" ]; then
62+
echo "No changes."
63+
git checkout -- src/duckdb
64+
rm -rf "$upstream_dir"
65+
exit 0
66+
fi
67+
68+
git add .
69+
70+
(
71+
echo "$message"
72+
echo
73+
git -C "$upstream_dir" log --first-parent --format="%s" ${base}..${commit} | tee /dev/stderr | sed -r 's%(#[0-9]+)%duckdb/duckdb\1%g'
74+
) | git commit --file /dev/stdin
75+
76+
rm -rf "$upstream_dir"

vendor.sh

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,45 @@
1-
#!/bin/bash
2-
# https://unix.stackexchange.com/a/654932/19205
3-
# Using bash for -o pipefail
1+
#!/bin/sh
42

53
set -e
64
set -x
7-
set -o pipefail
85

96
cd `dirname $0`
107

118
if [ -z "$1" ]; then
12-
upstream_basedir=../duckdb
9+
duckdir=../duckdb
1310
else
14-
upstream_basedir="$1"
15-
fi
16-
17-
upstream_dir=.git/duckdb
18-
19-
if [ "$upstream_basedir" != ".git/duckdb" ]; then
20-
git clone "$upstream_basedir" "$upstream_dir"
11+
duckdir="$1"
2112
fi
2213

2314
if [ -n "$(git status --porcelain)" ]; then
2415
echo "Error: working directory not clean"
2516
exit 1
2617
fi
2718

28-
if [ -n "$(git -C "$upstream_dir" status --porcelain)" ]; then
29-
echo "Warning: working directory $upstream_dir not clean"
19+
if [ -n "$(git -C "$duckdir" status --porcelain)" ]; then
20+
echo "Warning: working directory $duckdir not clean"
3021
fi
3122

32-
original=$(git -C "$upstream_dir" rev-parse --verify HEAD)
33-
34-
base=$(git log -n 3 --format="%s" -- src/duckdb | tee /dev/stderr | sed -nr '/^.*duckdb.duckdb@([0-9a-f]+)$/{s//\1/;p;}' | head -n 1)
35-
36-
message=
23+
commit=$(git -C "$duckdir" rev-parse HEAD)
24+
echo "Importing commit $commit"
3725

38-
for commit in $(git -C "$upstream_dir" log --first-parent --reverse --format="%H" ${base}..HEAD); do
39-
echo "Importing commit $commit"
26+
base=$(git log -n 1 --format="%s" -- src/duckdb | sed 's#^.*duckdb/duckdb@##')
4027

41-
git -C "$upstream_dir" checkout "$commit"
28+
rm -rf src/duckdb
4229

43-
rm -rf src/duckdb
30+
echo "R: configure"
31+
python3 rconfigure.py
4432

45-
echo "R: configure"
46-
DUCKDB_PATH="$upstream_dir" python3 rconfigure.py
47-
48-
# Always vendor tags
49-
if [ $(git -C "$upstream_dir" describe --tags | grep -c -- -) -eq 0 ]; then
50-
message="chore: Update vendored sources (tag $(git -C "$upstream_dir" describe --tags)) to duckdb/duckdb@$commit"
51-
changed=1
52-
break
53-
fi
54-
55-
if [ $(git status --porcelain -- src/duckdb | wc -l) -gt 1 ]; then
56-
message="chore: Update vendored sources to duckdb/duckdb@$commit"
57-
break
58-
fi
59-
done
60-
61-
if [ "$message" = "" ]; then
33+
if [ $(git status --porcelain -- src/duckdb | wc -l) -le 1 ]; then
6234
echo "No changes."
6335
git checkout -- src/duckdb
64-
rm -rf "$upstream_dir"
6536
exit 0
6637
fi
6738

6839
git add .
6940

7041
(
71-
echo "$message"
42+
echo "chore: Update vendored sources to duckdb/duckdb@$commit"
7243
echo
73-
git -C "$upstream_dir" log --first-parent --format="%s" ${base}..${commit} | tee /dev/stderr | sed -r 's%(#[0-9]+)%duckdb/duckdb\1%g'
44+
git -C "$duckdir" log --first-parent --format="%s" ${base}..${commit} | sed -r 's%(#[0-9]+)%duckdb/duckdb\1%g'
7445
) | git commit --file /dev/stdin
75-
76-
rm -rf "$upstream_dir"

0 commit comments

Comments
 (0)