3 reldir=$HOME/linux-libre/releases
5 key=474402C8C582DAFBE389C427BCB7CF877E7D47A7
11 rup=$(echo "$rel" | sed 's,-gnu[0-9]*$,,')
12 cbr=$(echo "$rup" | sed 's,\(\.\|-rc\)[0-9]*$,,')
14 if test -d $reldir/$rel; then
15 echo $reldir/$rel exists >&2
19 if test -h $reldir/LATEST-$cbr.0; then
20 prev0=$(readlink $reldir/LATEST-$cbr.0)
21 prevn=$(readlink $reldir/LATEST-$cbr.N)
22 elif test -h $reldir/LATEST-$rup.N; then
24 prev0=$(readlink $reldir/LATEST-$cbr.0)
25 prevn=$(readlink $reldir/LATEST-$cbr.N)
27 echo Neither $reldir/LATEST-$cbr.0 nor $reldir/LATEST-$rup.N exist >&2
31 for up in linus stable; do
32 git rev-parse --verify -q $up/v$rup && break
35 git verify-tag $up/v$rup &&
37 { test -d scripts/v$rel ||
38 git worktree add --detach scripts/v$rel scripts/$cbr
41 git worktree add --detach sources/v$rel $up/v$rup &&
43 git worktree add --detach logs/v$rel public/logs/v$prevn &&
45 (cd logs/v$rel && git rm -f linux-*) &&
49 ../../scripts/v$rel/deblob-$cbr >& ../../logs/v$rel/linux-libre-$rel.log &&
50 git commit -m "GNU Linux-libre v$rel incremental" -a &&
54 DATE=$(git cat-file -p incr/v$rel |
55 gawk '/^(author|tagger)/ {
56 print strftime(PROCINFO["strftime"], $(NF-1))
58 export GIT_COMMITTER_DATE=$DATE GIT_AUTHOR_DATE=$DATE &&
62 git reset --soft -q public/sources/v$prevn &&
63 git commit --amend --reset-author -S$key \
64 -m "GNU Linux-libre $rel" &&
65 git tag -m "GNU Linux-libre $rel" -s -u $key sources/v$rel &&
67 git reset --hard incr/v$rel^ &&
68 { git merge --no-commit incr/v$prevn || :; } &&
69 git diff incr/v$rel > ../../linux-libre-$rel.patckT &&
70 mv -v ../../linux-libre-$rel.patckT ../../linux-libre-$rel.patck
73 git archive --format tar --prefix=linux-$rup/ -o linux-libre-$rel.tar sources/v$rel &&
74 gpg --armor --detach-sign linux-libre-$rel.tar &&
75 mv linux-libre-$rel.tar.asc logs/v$rel/linux-libre-$rel.tar.sign &&
77 for f in linux-libre-; do
78 if cmp logs/v$rel/$f$rel.log $reldir/$prevn/$f$prevn.log; then
79 ln -vf $reldir/$prevn/$f$prevn.log logs/v$rel/$f$rel.log &&
80 ln -vf $reldir/$prevn/$f$prevn.log.sign logs/v$rel/$f$rel.log.sign
82 gpg --armor --detach-sign logs/v$rel/$f$rel.log &&
83 mv -v logs/v$rel/$f$rel.log.asc logs/v$rel/$f$rel.log.sign
90 git commit --amend --reset-author -S$key -m "GNU Linux-libre $rel logs" &&
91 git tag -m "GNU Linux-libre $rel logs" -s -u $key logs/v$rel
94 git diff --src-prefix=linux-libre-$prev0/ --dst-prefix=linux-libre-$rel/ \
95 public/sources/v$prev0 sources/v$rel -- > patch-$prev0-$rel &&
97 if test "$prev0" != "$prevn"; then
98 git diff --src-prefix=linux-libre-$prevn/ --dst-prefix=linux-libre-$rel/ \
99 public/sources/v$prevn sources/v$rel -- > patch-$prevn-$rel
102 { scripts/v$rel/deblob-check --use-awk linux-libre-$rel.tar ||
103 scripts/v$rel/deblob-check --use-awk -C linux-libre-$rel.tar \
104 > linux-libre-$rel.check ||
105 { success=false; continue; }; }