unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Ting-Wei Lan <lantw44@gmail.com>
To: 35775@debbugs.gnu.org
Subject: bug#35775: Test gremlin.scm fails on foreign distributions
Date: Fri, 17 May 2019 21:44:01 +0800	[thread overview]
Message-ID: <3df718af-5469-4f1e-6e60-ef0d93673616@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 3193 bytes --]

There are two failed tests in tests/gremlin.scm.
The first one is 'elf-dynamic-info-needed, executable'. It seems that it
assumes the guile executable always links to libguile-2.2, libgc,
libunistring, libffi. However, on Fedora 30, /usr/bin/guile2.2 only
links to libguile-2.2, causing the test to fail because it cannot find
libgc, libunistring, libffi in NEEDED.
$ readelf -d /usr/bin/guile2.2

Dynamic section at offset 0x2d78 contains 28 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libguile-2.2.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x1000
 0x000000000000000d (FINI)               0x13b8
 0x0000000000000019 (INIT_ARRAY)         0x3d60
 0x000000000000001b (INIT_ARRAYSZ)       8 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x3d68
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x368
 0x0000000000000005 (STRTAB)             0x5a0
 0x0000000000000006 (SYMTAB)             0x3a8
 0x000000000000000a (STRSZ)              339 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0x3f78
 0x0000000000000002 (PLTRELSZ)           216 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x870
 0x0000000000000007 (RELA)               0x780
 0x0000000000000008 (RELASZ)             240 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x0000000000000018 (BIND_NOW)           
 0x000000006ffffffb (FLAGS_1)            Flags: NOW PIE
 0x000000006ffffffe (VERNEED)            0x720
 0x000000006fffffff (VERNEEDNUM)         2
 0x000000006ffffff0 (VERSYM)             0x6f4
 0x000000006ffffff9 (RELACOUNT)          3
 0x0000000000000000 (NULL)               0x0

I guess it may be related to the use of -Wl,--as-needed. The default
LDFLAGS for building packages includes -Wl,--as-needed since Fedora 30.
The second one is 'strip-runpath'. It seems that the reason is that
strip-runpath expects the executable to have RUNPATH because -Wl,-rpath
is used during linking. However, on systems which don't configure ld to
use --enable-new-dtags by default, RPATH is used instead of RUNPATH,
causing strip-runpath to fail. If I add '-Wl,--enable-new-dtags' to the
C compiler command line used by the test, the test passes.
expected-value: "hello\n"
actual-value: #f
actual-error:
+ (wrong-type-arg
+   "struct_vtable"
+   "Wrong type argument in position ~A (expecting ~A): ~S"
+   (1 "struct" #f)
+   (#f))
result: FAIL
I attached a patch which makes the tests pass on Fedora 30, but I am not
sure whether it is the correct way to fix things.

[-- Attachment #2: guix-1.0.0-tests-gremlin.patch --]
[-- Type: text/x-patch, Size: 1015 bytes --]

diff --git a/tests/gremlin.scm b/tests/gremlin.scm
index 77a5dc1998..b0bb7a8e49 100644
--- a/tests/gremlin.scm
+++ b/tests/gremlin.scm
@@ -52,7 +52,7 @@
     (or (not dyninfo)                             ;static executable
         (lset<= string=?
                 (list (string-append "libguile-" (effective-version))
-                      "libgc" "libunistring" "libffi")
+                      "libc")
                 (map (lambda (lib)
                        (string-take lib (string-contains lib ".so")))
                      (elf-dynamic-info-needed dyninfo))))))
@@ -79,7 +79,7 @@
          (lambda (port)
            (display "int main () { puts(\"hello\"); }" port)))
        (invoke c-compiler "t.c"
-               "-Wl,-rpath=/foo" "-Wl,-rpath=/bar")
+               "-Wl,--enable-new-dtags" "-Wl,-rpath=/foo" "-Wl,-rpath=/bar")
        (let* ((dyninfo (elf-dynamic-info
                         (parse-elf (call-with-input-file "a.out"
                                      get-bytevector-all))))

             reply	other threads:[~2019-05-17 13:45 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-17 13:44 Ting-Wei Lan [this message]
2019-05-18 10:28 ` bug#35775: Test gremlin.scm fails on foreign distributions Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3df718af-5469-4f1e-6e60-ef0d93673616@gmail.com \
    --to=lantw44@gmail.com \
    --cc=35775@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).