* msys2-runtime: add a shell script to generate the patches from msys2/Cygwin The idea is to commit a change incrementing the `pkgver`, then running this script, and then amending the commit. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> * msys2-runtime: work around Cygwin's source code containing symlinks It is a bit unfortunate that MSYS2 substitutes symlinks by deep copies, by default. Git, for example, claims that it cannot do symlinks, but Cygwin now needs this. Let's make do with that default. The strategy we use is simple: we override the auto-detected `core.symlinks` setting. That will result in a dirty worktree, of course: deep copies are not symlinks, and `git status` will detect it. But that does not matter, as the build will now work ("deep" copies of those header files will work just as well as real symlinks would have done). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> * msys2-runtime: upgrade to v3.1.4 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
70 lines
1.9 KiB
Bash
70 lines
1.9 KiB
Bash
#!/bin/sh
|
|
|
|
die () {
|
|
echo "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
cd "$(dirname "$0")" ||
|
|
die "Could not cd to msys2-runtime/"
|
|
|
|
git rev-parse --verify HEAD >/dev/null &&
|
|
git update-index -q --ignore-submodules --refresh &&
|
|
git diff-files --quiet --ignore-submodules &&
|
|
git diff-index --cached --quiet --ignore-submodules HEAD -- ||
|
|
die "Clean worktree required"
|
|
|
|
git rm 0*.patch ||
|
|
die "Could not remove previous patches"
|
|
|
|
base_tag=refs/tags/cygwin-"$(sed -ne 'y/./_/' -e 's/^pkgver=//p' <PKGBUILD)"-release
|
|
msys2_branch=refs/heads/msys2-${base_tag#refs/tags/cygwin-}
|
|
url=https://github.com/msys2/Cygwin
|
|
|
|
test -d msys2-runtime ||
|
|
git clone --bare $url msys2-runtime ||
|
|
die "Could not clone msys2-runtime"
|
|
|
|
git -C msys2-runtime fetch --no-tags $url $base_tag:$base_tag $msys2_branch:$msys2_branch
|
|
|
|
git -c core.abbrev=7 \
|
|
-c diff.renames=true \
|
|
-c format.from=false \
|
|
-c format.numbered=auto \
|
|
-c format.useAutoBase=false \
|
|
-C msys2-runtime \
|
|
format-patch \
|
|
--topo-order \
|
|
--diff-algorithm=default \
|
|
--no-attach \
|
|
--no-add-header \
|
|
--no-cover-letter \
|
|
--no-thread \
|
|
--suffix=.patch \
|
|
--subject-prefix=PATCH \
|
|
--output-directory .. \
|
|
$base_tag..$msys2_branch ||
|
|
die "Could not generate new patch set"
|
|
|
|
patches="$(ls -1 0*.patch)" &&
|
|
for p in $patches
|
|
do
|
|
sed -i 's/^\(Subject: \[PATCH [0-9]*\/\)[1-9][0-9]*/\1N/' $p ||
|
|
die "Could not fix Subject: line in $p"
|
|
done &&
|
|
git add $patches ||
|
|
die "Could not stage new patch set"
|
|
|
|
in_sources="$(echo "$patches" | sed "{s/^/ /;:1;N;s/\\n/\\\\n /;b1}")"
|
|
in_prepare="$(echo "$patches" | tr '\n' '\\' | sed -e 's/\\$//' -e 's/\\/ &&&n /g')"
|
|
sed -i -e "/^ 0.*\.patch$/{:1;N;/[^)]$/b1;s|.*|$in_sources)|}" \
|
|
-e "/^ *apply_git_am_with_msg /{:2;N;/[^}]$/b2;s|.*| apply_git_am_with_msg $in_prepare\\n\\}|}" \
|
|
PKGBUILD ||
|
|
die "Could not update the patch set in PKGBUILD"
|
|
|
|
updpkgsums ||
|
|
die "Could not update the patch set checksums in PKGBUILD"
|
|
|
|
git add PKGBUILD ||
|
|
die "Could not stage updates in PKGBUILD"
|