commit:     25171b1f5847b461145906ac2bc230c462f62c21
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 15 22:41:30 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jun 15 22:45:26 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=25171b1f

app-arch/xz-utils: workaround libtool bug preventing shared library build

* Fix detection of `file` with libtool-2.5.0 (which xz-5.4.7, xz.5.6.2
  had dist tarballs created with). This only affects some targets. See
  bug #934370.

  See 
https://git.savannah.gnu.org/cgit/libtool.git/commit/?h=development&id=9a4a02615c9e7cbcfd690ed31874822a7d6aaea2.

* Add a sanity check for targets which support shared libraries where
  we verify liblzma.so is in the image.

  Use tc-is-static-only to handle the concern from bug #450436.

Bug: https://bugs.gentoo.org/450436
Closes: https://bugs.gentoo.org/934370
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...-utils-9999.ebuild => xz-utils-5.4.7-r1.ebuild} | 67 ++++++----------------
 ...-utils-9999.ebuild => xz-utils-5.6.2-r1.ebuild} | 15 +++++
 app-arch/xz-utils/xz-utils-9999.ebuild             | 15 +++++
 3 files changed, 47 insertions(+), 50 deletions(-)

diff --git a/app-arch/xz-utils/xz-utils-9999.ebuild 
b/app-arch/xz-utils/xz-utils-5.4.7-r1.ebuild
similarity index 72%
copy from app-arch/xz-utils/xz-utils-9999.ebuild
copy to app-arch/xz-utils/xz-utils-5.4.7-r1.ebuild
index a5c27989d3cc..2b5beefd93f6 100644
--- a/app-arch/xz-utils/xz-utils-9999.ebuild
+++ b/app-arch/xz-utils/xz-utils-5.4.7-r1.ebuild
@@ -45,9 +45,9 @@ DESCRIPTION="Utils for managing LZMA compressed files"
 HOMEPAGE="https://tukaani.org/xz/";
 
 # See top-level COPYING file as it outlines the various pieces and their 
licenses.
-LICENSE="0BSD LGPL-2.1+ GPL-2+ doc? ( CC-BY-SA-4.0 )"
+LICENSE="public-domain LGPL-2.1+ GPL-2+"
 SLOT="0"
-IUSE="cpu_flags_arm_crc32 doc +extra-filters pgo nls static-libs"
+IUSE="doc +extra-filters pgo nls static-libs"
 
 if [[ ${PV} != 9999 ]] ; then
        BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-lassecollin-20240529 )"
@@ -66,12 +66,15 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Workaround for bug #934370 (libtool-2.5.0), drop when dist tarball
+       # uses newer libtool with the fix.
+       export ac_cv_prog_ac_ct_FILECMD='file' FILECMD='file'
+
        local myconf=(
                --enable-threads
                $(multilib_native_use_enable doc)
                $(use_enable nls)
                $(use_enable static-libs static)
-               $(use_enable cpu_flags_arm_crc32 arm64-crc32)
        )
 
        if ! multilib_is_native_abi ; then
@@ -106,7 +109,6 @@ multilib_src_configure() {
 
 multilib_src_compile() {
        # -fprofile-partial-training because upstream note the test suite isn't 
super comprehensive
-       # TODO: revisit that now we have the tar/xz loop below?
        # See 
https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html#sec-gcc10-pgo
        local pgo_generate_flags=$(usev pgo "-fprofile-update=atomic 
-fprofile-dir=${T}/${ABI}-pgo -fprofile-generate=${T}/${ABI}-pgo 
$(test-flags-CC -fprofile-partial-training)")
        local pgo_use_flags=$(usev pgo "-fprofile-use=${T}/${ABI}-pgo 
-fprofile-dir=${T}/${ABI}-pgo $(test-flags-CC -fprofile-partial-training)")
@@ -116,52 +118,6 @@ multilib_src_compile() {
        if use pgo ; then
                emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" -k check
 
-               local tar_pgo_args=()
-
-               if has_version -b "app-alternatives/tar[gnu]" ; then
-                       tar_pgo_args+=(
-                               --mtime=@2718281828
-                               --sort=name
-                       )
-               fi
-
-               if multilib_is_native_abi ; then
-                       (
-                               shopt -s globstar
-
-                               tar \
-                                       "${tar_pgo_args[@]}" \
-                                       -cf xz-pgo-test-01.tar \
-                                       {"${S}","${BUILD_DIR}"}/**/*.[cho] \
-                                       {"${S}","${BUILD_DIR}"}/**/.libs/* \
-                                       {"${S}","${BUILD_DIR}"}/**/**.txt \
-                                       {"${S}","${BUILD_DIR}"}/tests/files
-
-                               stat --printf="xz-pgo-test-01.tar.tar size: 
%s\n" xz-pgo-test-01.tar || die
-                               md5sum xz-pgo-test-01.tar || die
-                       )
-
-                       local test_variants=(
-                               # Borrowed from ALT Linux
-                               # 
https://packages.altlinux.org/en/sisyphus/srpms/xz/specfiles/#line-80
-                               '-0 -C none'
-                               '-2 -C crc32'
-                               "$(usev extra-filters '-6 --arm --lzma2 -C 
crc64')"
-                               "$(usev extra-filters '-6 --x86 --lzma2=lc=4 -C 
sha256')"
-                               '-7e --format=lzma'
-
-                               # Our own variants
-                               ''
-                               '-9e'
-                               "$(usev extra-filters '--x86 
--lzma2=preset=9e')"
-                       )
-                       local test_variant
-                       for test_variant in "${test_variants[@]}" ; do
-                               "${BUILD_DIR}"/src/xz/xz -c ${test_variant} 
xz-pgo-test-01.tar | "${BUILD_DIR}"/src/xz/xz -c -d - > /dev/null
-                               assert "Testing '${test_variant}' variant 
failed"
-                       done
-               fi
-
                if tc-is-clang; then
                        llvm-profdata merge "${T}"/${ABI}-pgo 
--output="${T}"/${ABI}-pgo/default.profdata || die
                fi
@@ -171,6 +127,17 @@ multilib_src_compile() {
        fi
 }
 
+multilib_src_install() {
+       default
+
+       # bug #934370 and bug #450436
+       if ! tc-is-static-only && [[ ! -f "${ED}/usr/$(get_libdir)/liblzma.so" 
]] ; then
+               eerror "Sanity check for liblzma.so failed."
+               eerror "Shared library wasn't built, possible libtool bug"
+               [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && die "liblzma.so not found 
in build, aborting"
+       fi
+}
+
 multilib_src_install_all() {
        find "${ED}" -type f -name '*.la' -delete || die
 

diff --git a/app-arch/xz-utils/xz-utils-9999.ebuild 
b/app-arch/xz-utils/xz-utils-5.6.2-r1.ebuild
similarity index 91%
copy from app-arch/xz-utils/xz-utils-9999.ebuild
copy to app-arch/xz-utils/xz-utils-5.6.2-r1.ebuild
index a5c27989d3cc..e63700af983e 100644
--- a/app-arch/xz-utils/xz-utils-9999.ebuild
+++ b/app-arch/xz-utils/xz-utils-5.6.2-r1.ebuild
@@ -66,6 +66,10 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Workaround for bug #934370 (libtool-2.5.0), drop when dist tarball
+       # uses newer libtool with the fix.
+       export ac_cv_prog_ac_ct_FILECMD='file' FILECMD='file'
+
        local myconf=(
                --enable-threads
                $(multilib_native_use_enable doc)
@@ -171,6 +175,17 @@ multilib_src_compile() {
        fi
 }
 
+multilib_src_install() {
+       default
+
+       # bug #934370 and bug #450436
+       if ! tc-is-static-only && [[ ! -f "${ED}/usr/$(get_libdir)/liblzma.so" 
]] ; then
+               eerror "Sanity check for liblzma.so failed."
+               eerror "Shared library wasn't built, possible libtool bug"
+               [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && die "liblzma.so not found 
in build, aborting"
+       fi
+}
+
 multilib_src_install_all() {
        find "${ED}" -type f -name '*.la' -delete || die
 

diff --git a/app-arch/xz-utils/xz-utils-9999.ebuild 
b/app-arch/xz-utils/xz-utils-9999.ebuild
index a5c27989d3cc..e63700af983e 100644
--- a/app-arch/xz-utils/xz-utils-9999.ebuild
+++ b/app-arch/xz-utils/xz-utils-9999.ebuild
@@ -66,6 +66,10 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Workaround for bug #934370 (libtool-2.5.0), drop when dist tarball
+       # uses newer libtool with the fix.
+       export ac_cv_prog_ac_ct_FILECMD='file' FILECMD='file'
+
        local myconf=(
                --enable-threads
                $(multilib_native_use_enable doc)
@@ -171,6 +175,17 @@ multilib_src_compile() {
        fi
 }
 
+multilib_src_install() {
+       default
+
+       # bug #934370 and bug #450436
+       if ! tc-is-static-only && [[ ! -f "${ED}/usr/$(get_libdir)/liblzma.so" 
]] ; then
+               eerror "Sanity check for liblzma.so failed."
+               eerror "Shared library wasn't built, possible libtool bug"
+               [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && die "liblzma.so not found 
in build, aborting"
+       fi
+}
+
 multilib_src_install_all() {
        find "${ED}" -type f -name '*.la' -delete || die
 

Reply via email to