On Fri, 8 Nov 2019 21:27:08 +0100, Christian Weisgerber wrote:
> 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?

This looks good.  OK.

> Once this is in, new adastraps should be built for all architectures.
> (I can do aarch64, amd64, and maybe i386.)

I'll get on it for powerpc, hppa and arm.  visa@, can you look at
mips64?

> 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

Reply via email to