| #!/bin/bash |
| |
| set -e |
| |
| die () { |
| echo "$*" >&2 |
| exit 1 |
| } |
| |
| cd "$(dirname "$0")" || |
| die "Could not cd to mingw-w64-python3.9/" |
| |
| 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" |
| |
| source PKGBUILD || die "Can't source PKGBUILD" |
| |
| base_tag=refs/tags/v$pkgver |
| msys2_branch=mingw-v$pkgver |
| url=https://github.com/msys2-contrib/cpython-mingw |
| upstream_url=https://github.com/python/cpython |
| |
| test -d cpython || |
| git clone --bare $url cpython --depth=1000 --branch=$msys2_branch || |
| die "Could not clone cpython" |
| |
| git -C cpython fetch --no-tags $url $msys2_branch:$msys2_branch --depth=1000 |
| git -C cpython fetch --no-tags $upstream_url $base_tag:$base_tag --depth=1000 |
| |
| git -c core.abbrev=7 \ |
| -c diff.renames=true \ |
| -c format.from=false \ |
| -c format.numbered=auto \ |
| -c format.useAutoBase=false \ |
| -C cpython \ |
| 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" |
| _cmd=$(grep -ci ".github/workflows" $p) |
| if [ "$_cmd" != "0" ] |
| then |
| rm -f $p |
| fi |
| done && |
| patches="$(ls -1 0*.patch)" && |
| 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_patch_with_msg /{:2;N;/[^}]$/b2;s|.*| apply_patch_with_msg $in_prepare\\n\\ \n autoreconf -vfi\n}|}" \ |
| PKGBUILD || |
| die "Could not update the patch set in PKGBUILD" |
| |
| updpkgsums || |
| die "Could not update the patch set checksums in PKGBUILD" |
| |
| # bump pkgrel |
| sed "s/\(pkgrel\).*/pkgrel=$(($pkgrel + 1))/" -i PKGBUILD |
| |
| git add PKGBUILD || |
| die "Could not stage updates in PKGBUILD" |