The adastrap depends on several libraries (libc, libm, libz, libgmp, libmpfr, libmpc), but currently only libc and libm ship with it. If one of the other libs changes, boom, the build breaks. Also, having to manually specify the library versions in the Makefile is cumbersome.
I have revised the adastrap build such that it extract the list of required shared libraries directly from the cc1 binary and includes all of them in the new bootstrap. I successfully built a new adastrap with this and used it to re-build gcc. OK? Once this is in, new adastraps should be built for all architectures. (I can do aarch64, amd64, and maybe i386.) The trigger for all of this is that I would like to update libmpfr and libmpc... Index: Makefile =================================================================== RCS file: /cvs/ports/lang/gcc/8/Makefile,v retrieving revision 1.23 diff -u -p -r1.23 Makefile --- Makefile 7 Sep 2019 23:32:43 -0000 1.23 +++ Makefile 8 Nov 2019 20:14:15 -0000 @@ -20,26 +20,12 @@ REVISION = 4 FULL_VERSION = $V FULL_PKGVERSION = $V -ADASTRAP_LIBC-amd64 = 95.1 -ADASTRAP_LIBM-amd64 = 10.1 ADASTRAP-amd64 = adastrap-amd64-$V-1.tar.xz -ADASTRAP_LIBC-arm = 88.0 -ADASTRAP_LIBM-arm = 9.0 ADASTRAP-arm = adastrap-arm-4.9.4-0.tar.xz -ADASTRAP_LIBC-hppa = 95.0 -ADASTRAP_LIBM-hppa = 10.1 ADASTRAP-hppa = adastrap-hppa-$V-0.tar.xz -ADASTRAP_LIBC-i386 = 95.1 -ADASTRAP_LIBM-i386 = 10.1 ADASTRAP-i386 = adastrap-i386-$V-1.tar.xz -ADASTRAP_LIBC-mips64 = 95.1 -ADASTRAP_LIBM-mips64 = 10.1 ADASTRAP-mips64 = adastrap-mips64-$V-0.tar.xz -ADASTRAP_LIBC-powerpc = 95.1 -ADASTRAP_LIBM-powerpc = 10.1 ADASTRAP-powerpc = adastrap-powerpc-$V-1.tar.xz -ADASTRAP_LIBC-sparc64 = 93.0 -ADASTRAP_LIBM-sparc64 = 10.1 ADASTRAP-sparc64 = adastrap-sparc64-6.5.0-0.tar.xz PKGNAME-main = gcc-${FULL_PKGVERSION} @@ -258,33 +244,19 @@ ADA_PACKAGE = ${PACKAGE_REPOSITORY}/${MA GCC_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-main}.tgz GXX_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-c++}.tgz +.PHONY: adastrap + adastrap: ${ADA_PACKAGE} ${GCC_PACKAGE} ${GXX_PACKAGE} -.if !defined(ADASTRAP_LIBC-${MACHINE_ARCH}) || \ - !defined(ADASTRAP_LIBM-${MACHINE_ARCH}) - @echo 1>&2 "Error: you must specify libc and libm to bundle" - @exit 1 -.else mkdir -p ${WRKDIR}/prepare/bootstrap/system-libs - cp /usr/lib/libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} \ - ${WRKDIR}/prepare/bootstrap/system-libs - cp /usr/lib/libm.so.${ADASTRAP_LIBM-${MACHINE_ARCH}} \ - ${WRKDIR}/prepare/bootstrap/system-libs - cd ${WRKDIR}/prepare/bootstrap && tar zxf ${ADA_PACKAGE} - cd ${WRKDIR}/prepare/bootstrap && tar zxf ${GCC_PACKAGE} - cd ${WRKDIR}/prepare/bootstrap && tar zxf ${GXX_PACKAGE} + cd ${WRKDIR}/prepare/bootstrap && tar xzf ${ADA_PACKAGE} + cd ${WRKDIR}/prepare/bootstrap && tar xzf ${GCC_PACKAGE} + cd ${WRKDIR}/prepare/bootstrap && tar xzf ${GXX_PACKAGE} rm -rf ${WRKDIR}/prepare/bootstrap/{+*,info,man,share} - rm -rf ${WRKDIR}/prepare/bootstrap/lib/gcc/*-unknown-openbsd*/$V/include-fixed - if ! ldd ${WRKDIR}/prepare/bootstrap/bin/egcc | \ - fgrep libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} >/dev/null; then \ - echo 1>&2 "Error: adastrap egcc linked against unbundled libc"; \ - exit 1; \ - fi - if ! ldd ${WRKDIR}/prepare/bootstrap/bin/egcc | \ - fgrep libm.so.${ADASTRAP_LIBM-${MACHINE_ARCH}} >/dev/null; then \ - echo 1>&2 "Error: adastrap egcc linked against unbundled libm"; \ - exit 1; \ - fi + rm -rf ${WRKDIR}/prepare/bootstrap/lib/gcc/*-openbsd*/$V/include-fixed + for f in \ + `ldd ${WRKDIR}/prepare/bootstrap/libexec/gcc/*-openbsd*/$V/cc1 | \ + awk '$$3 == "rlib" { print $$7 }'`; do \ + cp $$f ${WRKDIR}/prepare/bootstrap/system-libs/; \ + done cd ${WRKDIR}/prepare && tar cf - bootstrap | \ - xz > ${FULLDISTDIR}/${ADASTRAP-${MACHINE_ARCH}} -.endif - + xz -T0 > ${FULLDISTDIR}/${ADASTRAP-${MACHINE_ARCH}} -- Christian "naddy" Weisgerber na...@mips.inka.de