Skip to content

Commit

Permalink
clang: add helper script to keep package updated
Browse files Browse the repository at this point in the history
We'll need to update our clang when Msys2 updates theirs and reapply our
customisations every time, so a script makes this job less tedious and
leaves no room to miss a step of the process.
This script performs the same steps as the previous two commits. (it
was used to generate the files for those)

Signed-off-by: Matthias Aßhauer <[email protected]>
  • Loading branch information
rimrul committed Jun 30, 2023
1 parent 79ea579 commit c36a977
Showing 1 changed file with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions mingw-w64-clang/update-clang-from-msys2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#!/usr/bin/bash
die () {
printf "$@" >&2
cleanup
exit 1
}
cleanup(){
rm -rf upstream
}

pkgname=mingw-w64-clang

old_pkgver="$(sed -ne 's/pkgver=\([.0-9]*\).*/\1/p' -e 's/_version=\([.0-9]*\).*/\1/p' < PKGBUILD)"
old_pkgrel="$(sed -ne 's/pkgrel=\([0-9]*\).*/\1/p' < PKGBUILD)"

test -n "$old_pkgver" ||
die "$0: could not determine current pkgver\n"

test -n "$old_pkgrel" ||
die "$0: could not determine current pkgrel\n"

git clone --sparse --depth 1 https://github.com/msys2/MINGW-packages upstream
cd upstream
git sparse-checkout add $pkgname
cd ..

new_pkgver="$(sed -ne 's/pkgver=\([.0-9]*\).*/\1/p' -e 's/_version=\([.0-9]*\).*/\1/p' < upstream/$pkgname/PKGBUILD)"
new_pkgrel="$(sed -ne 's/pkgrel=\([0-9]*\).*/\1/p' < upstream/$pkgname/PKGBUILD)"
rc="$(sed -ne 's/_rc="\(*\)".*/\1/p' < upstream/$pkgname/PKGBUILD)"

test -n "$new_pkgver" ||
die "$0: could not determine new pkgver\n"

test -n "$new_pkgrel" ||
die "$0: could not determine new pkgrel\n"

test -z "$rc" ||
die "$0: MSYS2 is currently on an RC version. This script is not able to handle RC versions."

test "$new_pkgver" = "$old_pkgver" &&
new_pkgrel="$old_pkgrel"

new_pkgrel=$(("$new_pkgrel"+1))

rm -f *.patch
mv upstream/$pkgname/*.patch ./
rm -f PKGBUILD
mv upstream/$pkgname/PKGBUILD ./
rm -f README-patches.md
mv upstream/$pkgname/README-patches.md ./

sed -i "s/pkgrel=[.0-9]\+\(.*\)/pkgrel=$new_pkgrel\1/" PKGBUILD

sed -i 's/1d33da596dcef12272389cb81277db205dd2153e2e52612d2d01ab3f0e7b3fb7/614a86cb22d3785d8099760c00f3981908c9a97b65b280e7350ee5dd1a0967bd/' PKGBUILD # I don't know how, but the hash of this patch changed

sed -i 's/-DCMAKE_BUILD_TYPE=Release/-DCMAKE_BUILD_TYPE=MinSizeRel/' PKGBUILD # size is the main reason we build our own clang
sed -i 's/-DLLVM_TARGETS_TO_BUILD=".*"/-DLLVM_TARGETS_TO_BUILD="host"/' PKGBUILD # we don't need any cross-compilation targets
sed -i 's/-DLLVM_ENABLE_SPHINX=ON/-DLLVM_ENABLE_SPHINX=OFF/' PKGBUILD # we don't need to spend time building documentation that we don't ship
sed -n '/^check()/{p;:a;N;/\n}/!ba;s/.*\n/echo \n/};p' -i PKGBUILD # skip about an hour of linker tests


cleanup

0 comments on commit c36a977

Please sign in to comment.