From d0339a3ec6bb682528fc930d5d26436bc05d129b Mon Sep 17 00:00:00 2001 From: Folkert Kevelam Date: Sat, 17 May 2025 23:04:25 +0200 Subject: [PATCH] Initial commit --- ...relocatable-instead-of-static-binary.patch | 11 ++ ...se-gcc-version-to-get-version-number.patch | 32 ++++ PKGBUILD | 175 ++++++++++++++++++ gpr.gpr-patch | 11 ++ 4 files changed, 229 insertions(+) create mode 100644 0001-Makefile-build-relocatable-instead-of-static-binary.patch create mode 100644 0002-compilers.xml-use-gcc-version-to-get-version-number.patch create mode 100644 PKGBUILD create mode 100644 gpr.gpr-patch diff --git a/0001-Makefile-build-relocatable-instead-of-static-binary.patch b/0001-Makefile-build-relocatable-instead-of-static-binary.patch new file mode 100644 index 0000000..a8510fa --- /dev/null +++ b/0001-Makefile-build-relocatable-instead-of-static-binary.patch @@ -0,0 +1,11 @@ +--- Makefile 2024-04-04 19:55:18.161620100 +1100 ++++ Makefile.new 2024-05-20 18:45:26.006166710 +1000 +@@ -82,7 +82,7 @@ + CLEANER=gprclean -q $(RBD) + + GPRBUILD_BUILDER=$(BUILDER) $(GPRBUILD_GPR) \ +- -XLIBRARY_TYPE=static -XXMLADA_BUILD=static ++ -XLIBRARY_TYPE=relocatable -XXMLADA_BUILD=relocatable + LIBGPR_BUILDER=$(BUILDER) $(GPR_GPR) $(LIBGPR_OS) + LIBGPR_INSTALLER=$(LIB_INSTALLER) $(GPR_GPR) $(LIBGPR_OS) -XBUILD=${BUILD} \ + --install-name=gpr \ diff --git a/0002-compilers.xml-use-gcc-version-to-get-version-number.patch b/0002-compilers.xml-use-gcc-version-to-get-version-number.patch new file mode 100644 index 0000000..d140363 --- /dev/null +++ b/0002-compilers.xml-use-gcc-version-to-get-version-number.patch @@ -0,0 +1,32 @@ +From 9dc1dc5559ae72026c8d33fed1e74c9612782b44 Mon Sep 17 00:00:00 2001 +From: Xiretza +Date: Sat, 4 Dec 2021 19:47:58 +0100 +Subject: [PATCH] compilers.xml: use gcc --version to get version number + instead of gcc -v + +The output of gcc -v is dependent on locale can thus break the regex. + +See also https://github.com/AdaCore/gprconfig_kb/issues/10 +--- + db/compilers.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/db/compilers.xml b/db/compilers.xml +index f8909d2..eee25a2 100644 +--- a/db/compilers.xml ++++ b/db/compilers.xml +@@ -22,9 +22,9 @@ + GCC + (.*-wrs-.*|.*-sysgo.*|.*-elf-.*|.*-eabi-.*|.*-eabispe-.*|avr-.*|.*-elinos-linux.*|.*-generic-linux-gnu-|.*mingw32.*|.*-xcoff-.*|arm-linux-androideabi-|arm-linux-gnueabi-|arm-linux-gnueabihf-|e500v2-gnu-linux-|powerpc-.*-linux.*-|.*-darwin.*-|aarch64-linux-gnu-)?gcc + +- $EXEC -v ++ $EXEC --version + +- ++ + + C + +-- +2.34.1 + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..927cd34 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,175 @@ +# Maintainer: Rod Kay + +# Contributor: Pierre-Marie de Rodat +# Contributor: Earnestly + +pkgbase=gprbuild +pkgdesc="Builder for multi-language systems." +pkgname=(libgpr gprbuild gprtools gprname gprslave) +pkgver=25.0.0 +pkgrel=1 +epoch=1 + +arch=(i686 x86_64) +url=https://github.com/AdaCore/gprbuild/ +license=(GPL3 custom) + +depends=(gcc-ada xmlada) +makedepends=(gprbuild python-sphinx) + +source=("gprbuild-${pkgver}::https://github.com/AdaCore/gprbuild/archive/refs/tags/v$pkgver.tar.gz" + "gprconfig_kb-${pkgver}::https://github.com/AdaCore/gprconfig_kb/archive/refs/tags/v$pkgver.tar.gz" + 0001-Makefile-build-relocatable-instead-of-static-binary.patch + gpr.gpr-patch) + +sha256sums=(d12f94c1ec0b6e219f6b162f71f57129d22426e7798092f5f85b9ec2cc818bf1 + 802e6d38a3b110897924a9c16e143cb86360f2dde94bb5b9144c7c391e37b121 + 96df34fab3c61790a7af8db2659a59ce9c8f767d712e9d999e50778bce259db1 + b4a31b4f23c1a040eebad26aff6c771d04afe0b9d7da19c97ef9fde9bceed3db) + + +_gprbuild_src=gprbuild-$pkgver +_gprconfig_kb_src=gprconfig_kb-$pkgver + + +prepare() +{ + cd $srcdir/$_gprbuild_src + patch -Np0 -i $srcdir/0001-Makefile-build-relocatable-instead-of-static-binary.patch + patch -Np0 -i $srcdir/gpr.gpr-patch # Rename 'libgpr.so' to 'libgpr-gnat.so' to prevent name clash with the 'grpc' package. + + ln -sfT $srcdir/gprconfig_kb-$pkgver/db/ share/gprconfig + + # GPRbuild hard-codes references to /usr/libexec, but ArchLinux packages + # must use /usr/lib instead. + # + sed -i 's/libexec/lib/g' \ + doinstall gprbuild.gpr \ + $srcdir/$_gprconfig_kb_src/db/compilers.xml \ + $srcdir/$_gprconfig_kb_src/db/linker.xml \ + $srcdir/$_gprconfig_kb_src/db/gnat.xml \ + $srcdir/$_gprconfig_kb_src/db/aamp.xml +} + + +build() +{ + cd $srcdir/$_gprbuild_src + + export OS=UNIX + + ADA_FLAGS="$CFLAGS" + ADA_FLAGS="${ADA_FLAGS//-Wformat}" + ADA_FLAGS="${ADA_FLAGS//-Werror=format-security}" + + GPRBUILD_OPTIONS="-R -cargs $ADA_FLAGS -largs $LDFLAGS -gargs" + make BUILD=production setup + + make GPRBUILD_OPTIONS="$GPRBUILD_OPTIONS" libgpr.build + make GPRBUILD_OPTIONS="$GPRBUILD_OPTIONS" build + + cd doc + make html \ + 1> doc-make-1.log \ + 2> doc-make-2.log +} + + +_install_licenses() +{ + cd $srcdir/$_gprbuild_src + + # Install the license. + # + install -D -m644 \ + COPYING3 \ + $pkgdir/usr/share/licenses/$pkgname/COPYING3 + + # Install the custom license. + # + install -D -m644 \ + COPYING.RUNTIME \ + $pkgdir/usr/share/licenses/$pkgname/COPYING.RUNTIME +} + + +package_libgpr() +{ + pkgdesc="Ada library to handle Gnat project files." + depends=(xmlada) + + cd $srcdir/$_gprbuild_src + + make prefix=$pkgdir/usr libgpr.install + _install_licenses +} + + +package_gprbuild() +{ + depends=(libgpr) + conflicts=(gprbuild-bootstrap gprbuild-bootstrap-debug) + + cd $srcdir/$_gprbuild_src + + make prefix=$pkgdir/usr install + + rm $pkgdir/usr/bin/gprclean + rm $pkgdir/usr/bin/gprconfig + rm $pkgdir/usr/bin/gprinstall + rm $pkgdir/usr/bin/gprls + rm $pkgdir/usr/bin/gprslave + rm $pkgdir/usr/bin/gprname + + _install_licenses + + # We don't need to distribute the installation script. + # + rm -f -- $pkgdir/usr/doinstall + + # Install the knowledge base. + # + cp -fr $srcdir/$_gprconfig_kb_src/db \ + $pkgdir/usr/share/gprconfig +} + + +package_gprtools() +{ + conflicts=(gprbuild-bootstrap gprbuild-bootstrap-debug) + + cd $srcdir/$_gprbuild_src + + mkdir -p $pkgdir/usr/bin + + cp exe/production/gprclean $pkgdir/usr/bin + cp exe/production/gprconfig $pkgdir/usr/bin + cp exe/production/gprinstall $pkgdir/usr/bin + cp exe/production/gprls $pkgdir/usr/bin + + _install_licenses +} + + +package_gprname() +{ + conflicts=(gprbuild-bootstrap gprbuild-bootstrap-debug) + + cd $srcdir/$_gprbuild_src + + mkdir -p $pkgdir/usr/bin + cp exe/production/gprname $pkgdir/usr/bin + + _install_licenses +} + + +package_gprslave() +{ + cd $srcdir/$_gprbuild_src + + mkdir -p $pkgdir/usr/bin + cp exe/production/gprslave $pkgdir/usr/bin + + _install_licenses +} diff --git a/gpr.gpr-patch b/gpr.gpr-patch new file mode 100644 index 0000000..f0f105d --- /dev/null +++ b/gpr.gpr-patch @@ -0,0 +1,11 @@ +--- gpr/gpr.gpr 2023-04-27 11:26:41.635112300 +1000 ++++ gpr/gpr.gpr-new 2023-10-18 09:33:01.782042032 +1100 +@@ -37,7 +37,7 @@ + + for Source_Dirs use ("src"); + +- for Library_Name use "gpr"; ++ for Library_Name use "gpr-gnat"; + for Object_Dir use "libobj/" & Bld & "/" & Gnat_Lib_Type; + for Library_Dir use "lib/" & Bld & "/" & Gnat_Lib_Type; +