From c36a977e285a3dc164a1242e979f98c66a7be0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20A=C3=9Fhauer?= Date: Fri, 30 Jun 2023 21:49:59 +0200 Subject: [PATCH] clang: add helper script to keep package updated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- mingw-w64-clang/update-clang-from-msys2.sh | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 mingw-w64-clang/update-clang-from-msys2.sh diff --git a/mingw-w64-clang/update-clang-from-msys2.sh b/mingw-w64-clang/update-clang-from-msys2.sh new file mode 100644 index 0000000000000..24205d6757345 --- /dev/null +++ b/mingw-w64-clang/update-clang-from-msys2.sh @@ -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