From dc8907d8e322bce1b6c09c72711302cb3e733e1d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 14 Sep 2012 00:49:39 +0200 Subject: distro: gcc: Patch `lib' spec to add `-rpath' for each `-L'. * distro/base.scm (gcc-4.7): Patch `LIB_SPEC' to add `-rpath' for each `-L'. Spec string suggested by Marc Glisse . (libtool): Add `libtool-skip-tests.patch'. * distro/patches/libtool-skip-tests.patch: New file. * Makefile.am (dist_patch_DATA): Add it. --- distro/base.scm | 21 ++++++++++++++++++- distro/patches/libtool-skip-tests.patch | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 distro/patches/libtool-skip-tests.patch (limited to 'distro') diff --git a/distro/base.scm b/distro/base.scm index 3790f48bfd..d6cb8b3170 100644 --- a/distro/base.scm +++ b/distro/base.scm @@ -765,6 +765,18 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.") ;; Tell where to find libstdc++, libc, and `?crt*.o', except ;; `crt{begin,end}.o', which come with GCC. + ;; + ;; The `%{L*:-rpath %*}' rule adds a `-rpath LIBDIR' argument + ;; for each occurrence of `-L LIBDIR'. We could avoid + ;; `-rpath' altogether and instead use the `LD_RUN_PATH' + ;; environment variable, but that would tend to include more + ;; than needed in the RPATH; for instance, given a package + ;; with `libfoo' as an input, all its binaries would have + ;; libfoo in their RPATH, regardless of whether they actually + ;; NEED it. See + ;; for + ;; details. + ;; XXX: For crt*.o, use `STANDARD_STARTFILE_PREFIX' instead? See ;; . (substitute* ("gcc/config/gnu-user.h" @@ -772,7 +784,7 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.") "gcc/config/i386/gnu-user64.h") (("#define LIB_SPEC (.*)$" _ suffix) (format #f "#define LIB_SPEC \"-L~a/lib -rpath=~a/lib \ --rpath=~a/lib64 -rpath=~a/lib \" ~a~%" +-rpath=~a/lib64 -rpath=~a/lib %{L*:-rpath %*}\" ~a~%" libc libc out out suffix)) (("([^ ]*)crt([^\\.])\\.o" _ prefix suffix) (string-append libc "/lib/" prefix "crt" suffix ".o")))) @@ -998,6 +1010,11 @@ modification.") (build-system gnu-build-system) (native-inputs `(("m4" ,m4) ("perl" ,perl))) + (arguments + ;; TODO: Use `TESTSUITEFLAGS=-jN' for tests. + `(#:patches (list (assoc-ref %build-inputs "patch/skip-tests")))) + (inputs `(("patch/skip-tests" + ,(search-patch "libtool-skip-tests.patch")))) (description "GNU Libtool, a generic library support script") (long-description "GNU libtool is a generic library support script. Libtool hides the @@ -1668,6 +1685,8 @@ exec ~a/bin/~a-gcc -B~a/lib -Wl,-dynamic-linker -Wl,~a/lib/~a \"$@\"~%" (define-public %final-inputs ;; Final derivations used as implicit inputs by `gnu-build-system'. + ;; FIXME: Build bash before the others, otherwise patch-shebangs uses it in + ;; bzip2, for instance. (let ((finalize (cut package-with-explicit-inputs <> %boot3-inputs (current-source-location)))) `(,@(map (match-lambda diff --git a/distro/patches/libtool-skip-tests.patch b/distro/patches/libtool-skip-tests.patch new file mode 100644 index 0000000000..6e12615d51 --- /dev/null +++ b/distro/patches/libtool-skip-tests.patch @@ -0,0 +1,37 @@ +Because our GCC `lib' spec automatically adds `-rpath' for each `-L' +and a couple more `-rpath, there are two test failures: +demo-hardcode.test, and destdir.at. Disable these. + +--- libtool-2.4.2/Makefile.in 2011-10-17 12:18:55.000000000 +0200 ++++ libtool-2.4.2/Makefile.in 2012-09-13 23:50:37.000000000 +0200 +@@ -909,7 +908,7 @@ COMMON_TESTS = \ + # but they depend on the other tests being run beforehand. + INTERACTIVE_TESTS = tests/demo-shared.test tests/demo-shared-make.test \ + tests/demo-shared-exec.test tests/demo-shared-inst.test \ +- tests/demo-hardcode.test tests/demo-relink.test \ ++ tests/demo-relink.test \ + tests/demo-noinst-link.test tests/demo-shared-unst.test \ + tests/depdemo-shared.test tests/depdemo-shared-make.test \ + tests/depdemo-shared-exec.test tests/depdemo-shared-inst.test \ +@@ -2580,8 +2579,7 @@ tests/cdemo-static-make.log: tests/cdemo + + tests/demo-shared-unst.log: tests/demo-noinst-link.log + tests/demo-noinst-link.log: tests/demo-relink.log +-tests/demo-relink.log: tests/demo-hardcode.log +-tests/demo-hardcode.log: tests/demo-shared-inst.log ++tests/demo-relink.log: tests/demo-shared-inst.log + tests/demo-shared-inst.log: tests/demo-shared-exec.log + tests/demo-shared-exec.log: tests/demo-shared-make.log + tests/demo-shared-make.log: tests/demo-shared.log + +--- libtool-2.4.2/tests/testsuite 2011-10-17 12:19:52.000000000 +0200 ++++ libtool-2.4.2/tests/testsuite 2012-09-14 00:28:45.000000000 +0200 +@@ -14443,6 +14443,6 @@ read at_status <"$at_status_file" + #AT_START_69 + at_fn_group_banner 69 'destdir.at:75' \ + "DESTDIR with in-package deplibs" " " 4 +-at_xfail=no ++at_xfail=yes + eval `$LIBTOOL --config | grep '^fast_install='` + case $fast_install in no) :;; *) false;; esac && at_xfail=yes + -- cgit 1.4.1