From 8da930c48dc5ed8338bfdc108997f1f9f62c36f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Tue, 18 Aug 2020 19:53:55 +0700 Subject: [PATCH 1/3] xbps-src: use internal config in foreign environment When xbps-install is called without "-C", xbps-install will pick configuration from the location configured at build time. Should the default location not have a valid repository configuration, we couldn't run binary-bootstrap. On bootstrapping from scratch, without this change, xbps looks into system configuration, which isn't what we want. Run xbps-install with our internal configuration instead. --- xbps-src | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xbps-src b/xbps-src index 2462ddc0b89..1c83708c8da 100755 --- a/xbps-src +++ b/xbps-src @@ -613,8 +613,8 @@ if [ "$IN_CHROOT" ]; then readonly XBPS_BUILDDIR=/builddir else readonly XBPS_UHELPER_CMD="xbps-uhelper -r $XBPS_MASTERDIR" - readonly XBPS_INSTALL_CMD="xbps-install -c $XBPS_HOSTDIR/repocache-$XBPS_MACHINE -r $XBPS_MASTERDIR" - readonly XBPS_QUERY_CMD="xbps-query -c $XBPS_HOSTDIR/repocache-$XBPS_MACHINE -r $XBPS_MASTERDIR" + readonly XBPS_INSTALL_CMD="xbps-install -c $XBPS_HOSTDIR/repocache-$XBPS_MACHINE -r $XBPS_MASTERDIR -C etc/xbps.d" + readonly XBPS_QUERY_CMD="xbps-query -c $XBPS_HOSTDIR/repocache-$XBPS_MACHINE -r $XBPS_MASTERDIR -C etc/xbps.d" readonly XBPS_RECONFIGURE_CMD="xbps-reconfigure -r $XBPS_MASTERDIR" readonly XBPS_REMOVE_CMD="xbps-remove -r $XBPS_MASTERDIR" readonly XBPS_CHECKVERS_CMD="xbps-checkvers -r $XBPS_MASTERDIR" From 820fbce84300afb40add4eda8dc17b51032c7c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Tue, 18 Aug 2020 20:42:51 +0700 Subject: [PATCH 2/3] xbps-src: environment: keep LD_LIBRARY_PATH outside of chroot Using self-built xbps in non-standard location requires setting LD_LIBRARY_PATH. Thus, bootstrapping from foreign distribution with those binaries failed. --- common/environment/setup/sourcepkg.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh index bc06f745b78..d7253459be3 100644 --- a/common/environment/setup/sourcepkg.sh +++ b/common/environment/setup/sourcepkg.sh @@ -16,9 +16,13 @@ unset -v go_import_path go_package go_mod_mode unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted unset -v nopie build_options build_options_default bootstrap repository reverts -unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH +unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS unset -v CC CXX CPP GCC LD AR AS RANLIB NM OBJDUMP OBJCOPY STRIP READELF PKG_CONFIG +if [ "$IN_CHROOT" ]; then + unset -v LD_LIBRARY_PATH +fi + # hooks/do-extract/00-distfiles unset -v skip_extraction From fa43f300b6150ab2ce35fa6c10119ebe2e016ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 20 Aug 2020 20:24:52 +0700 Subject: [PATCH 3/3] glibc: fix bootstrap with gcc -fcf-protection Some distros ship gcc that implicitly enables the "-fcf-protection". Upstream GCC does not do that, so the glibc configure logic is not prepared for that. Hence, bootstrapping glibc on such system will result in error: elf/ld.so.new: hidden symbol `_dl_cet_open_check' isn't defined We must --enable-cet to fix it. Future glibc will --enable-cet automatically if -fcf-protection. Reference: 1: https://stackoverflow.com/a/59006638 2: https://sourceware.org/bugzilla/show_bug.cgi?id=25225 --- srcpkgs/glibc/template | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/srcpkgs/glibc/template b/srcpkgs/glibc/template index 4ea327aa1fa..5f0868ceb77 100644 --- a/srcpkgs/glibc/template +++ b/srcpkgs/glibc/template @@ -88,8 +88,11 @@ do_configure() { configure_args+=" --host=${XBPS_CROSS_TRIPLET}" configure_args+=" --with-sysroot=${XBPS_CROSS_BASE}" configure_args+=" --with-headers=${XBPS_CROSS_BASE}/usr/include" - else + elif [ ! "$CHROOT_READY" ]; then configure_args+=" --with-headers=${XBPS_MASTERDIR}/usr/include" + # TODO: remove when upgrade to newer version + configure_args+=" --enable-cet" + CPPFLAGS+=" -isystem ${XBPS_MASTERDIR}/usr/include" fi # Disable SSP from CFLAGS (enabled below)