Re: guix fails to build on aarch64

2022-01-08 Thread Chris Marusich
Hi Pierre,

Thank you very much for the details!  I have added this information to
the existing bug report:

https://issues.guix.gnu.org/52943

Please direct further discussion regarding this bug there, so that
people looking at the bug report will see an accurate record of the
investigation so far.

-- 
Chris

PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=106836


signature.asc
Description: PGP signature


Re: guix fails to build on aarch64

2022-01-04 Thread Pierre Langlois
Hi there,

Akira Kyle  writes:

> Ricardo Wurmus  writes:
>> > test-name: file-needed/recursive
>> > location:
>> > /tmp/guix-build-guix-1.3.0-14.2a621f1.drv-0/source/tests/gremlin.scm:70
>> > source:
>> …
>> > + (and (zero? (close-pipe pipe))
>> > +  (lset= string=?
>> > + (pk 'truth ground-truth)
>> > + (pk 'needed needed)
>> > actual-value: #f
>> > result: FAIL
>
>> Did the logs not contain the values for truth and needed?  That would
>> mean that the test already failed to close the pipe.
>
> I've been trying to debug failing guix tests on aarch64. At the end of
> logfile for the gremlin test suite there's the following which may be
> related to why the truth and needed values were not printed:
>
> a.out: stripping RUNPATH to
> ("/gnu/store/skfhr2f8b7jnnpiarrrcjn6qx0xzfw00-glibc-2.33/lib"
> "/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib"
> "/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib/gcc/aarch64-unknown-linux-gnu/10.3.0/../../.."
> "/gnu/store/40lx91wz35qci25qzi9xfqvxwby85xha-profile/lib") (removed
> ("/foo" "/bar"))
> a.out: warning: RUNPATH contains bogus entries:
> ("/gnu/store/skfhr2f8b7jnnpiarrrcjn6qx0xzfw00-glibc-2.33/lib"
> "/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib"
> "/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib/gcc/aarch64-unknown-linux-gnu/10.3.0/../../.."
> "/gnu/store/40lx91wz35qci25qzi9xfqvxwby85xha-profile/lib")
> a.out: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH ()
> WARNING: (test-gremlin): imported module (guix build utils) overrides
> core binding `delete'

I've also been trying to fix this test but without much luck.  It
does look similar to this issue for ppc64 [0], where the `ldd/ld.so'
beaviour isn't the same as what the gremlin guile module does. However
the patch proposed there isn't fixing the issue for me either on
aarch64.

[0]: https://issues.guix.gnu.org/52940,

Maybe we can compare notes and a solution will come up :-).  So the test
fails because 'truth', the result from `ldd', has ld-linux-aarch64.so
listed while 'needed', from the gremlin guile module doesn't:

--8<---cut here---start->8---
(truth ;; result from `ldd libguile.so'
 ("/gnu/store/...-gcc-10.3.0-lib/lib/libgcc_s.so.1"
  "/gnu/store/...-glibc-2.33/lib/ld-linux-aarch64.so.1"   ;; This isn't
  ;; in gremlins
  "/gnu/store/...-glibc-2.33/lib/libc.so.6"
  "/gnu/store/...-glibc-2.33/lib/libcrypt.so.1"
  "/gnu/store/...-glibc-2.33/lib/libdl.so.2"
  "/gnu/store/...-glibc-2.33/lib/libm.so.6"
  "/gnu/store/...-glibc-2.33/lib/libpthread.so.0"
  "/gnu/store/...-guile-3.0.7/lib/libguile-3.0.so.1"
  "/gnu/store/...-libffi-3.3/lib/libffi.so.7"
  "/gnu/store/...-libgc-8.0.4/lib/libgc.so.1"
  "/gnu/store/...-libunistring-0.9.10/lib/libunistring.so.2"))

(needed  ;; result from gremlin
 ("/gnu/store/...-gcc-10.3.0-lib/lib/libgcc_s.so.1"
  "/gnu/store/...-glibc-2.33/lib/libc.so.6"
  "/gnu/store/...-glibc-2.33/lib/libcrypt.so.1"
  "/gnu/store/...-glibc-2.33/lib/libdl.so.2"
  "/gnu/store/...-glibc-2.33/lib/libm.so.6"
  "/gnu/store/...-glibc-2.33/lib/libpthread.so.0"
  "/gnu/store/...-guile-3.0.7/lib/libguile-3.0.so.1"
  "/gnu/store/...-libffi-3.3/lib/libffi.so.7"
  "/gnu/store/...-libgc-8.0.4/lib/libgc.so.1"
  "/gnu/store/...-libunistring-0.9.10/lib/libunistring.so.2"))
--8<---cut here---end--->8---

Digging a bit more I started comparing x86_64 and aarch64 binaries and
noticed that libguile.so didn't have the same dynamic section:

--8<---cut here---start->8---
# On aarch64:
$ objdump -x 
/gnu/store/pqw0c33k2h8n2snpchnyvx7w617kk31s-guile-3.0.7/lib/libguile-3.0.so.1.4.0



/gnu/store/pqw0c33k2h8n2snpchnyvx7w617kk31s-guile-3.0.7/lib/libguile-3.0.so.1.4.0:
 file format elf64-littleaarch64
...
Dynamic Section:

  NEEDED   libgc.so.1   

  NEEDED   libpthread.so.0  

  NEEDED   libffi.so.7  

  NEEDED   libunistring.so.2

  NEEDED   libcrypt.so.1

  NEEDED   libdl.so.2  

Re: guix fails to build on aarch64

2022-01-03 Thread Akira Kyle
Ricardo Wurmus  writes:
> > test-name: file-needed/recursive
> > location:
> > /tmp/guix-build-guix-1.3.0-14.2a621f1.drv-0/source/tests/gremlin.scm:70
> > source:
> …
> > + (and (zero? (close-pipe pipe))
> > +  (lset= string=?
> > + (pk 'truth ground-truth)
> > + (pk 'needed needed)
> > actual-value: #f
> > result: FAIL

> Did the logs not contain the values for truth and needed?  That would
> mean that the test already failed to close the pipe.

I've been trying to debug failing guix tests on aarch64. At the end of
logfile for the gremlin test suite there's the following which may be
related to why the truth and needed values were not printed:

a.out: stripping RUNPATH to
("/gnu/store/skfhr2f8b7jnnpiarrrcjn6qx0xzfw00-glibc-2.33/lib"
"/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib"
"/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib/gcc/aarch64-unknown-linux-gnu/10.3.0/../../.."
"/gnu/store/40lx91wz35qci25qzi9xfqvxwby85xha-profile/lib") (removed
("/foo" "/bar"))
a.out: warning: RUNPATH contains bogus entries:
("/gnu/store/skfhr2f8b7jnnpiarrrcjn6qx0xzfw00-glibc-2.33/lib"
"/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib"
"/gnu/store/47snyrq6pq6896m9dysp2s5vx53m6x08-gcc-10.3.0-lib/lib/gcc/aarch64-unknown-linux-gnu/10.3.0/../../.."
"/gnu/store/40lx91wz35qci25qzi9xfqvxwby85xha-profile/lib")
a.out: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH ()
WARNING: (test-gremlin): imported module (guix build utils) overrides
core binding `delete'

There are other tests failing as well and the full test-suite.log I
posted here: https://issues.guix.gnu.org/52943

I'm a newcomer to guix so I feel a bit out of my depth trying to debug
these failures. I'd really like to be able to use guix as my daily
driver but so far it's been difficult since my machine is aarch64!



guix fails to build on aarch64

2022-01-02 Thread Akira Kyle
I think this is the related issue: https://issues.guix.gnu.org/52943



Re: guix fails to build on aarch64

2021-12-17 Thread Ricardo Wurmus


Vagrant Cascadian  writes:

> test-name: file-needed/recursive
> location: 
> /tmp/guix-build-guix-1.3.0-14.2a621f1.drv-0/source/tests/gremlin.scm:70
> source:
…
> + (and (zero? (close-pipe pipe))
> +  (lset= string=?
> + (pk 'truth ground-truth)
> + (pk 'needed needed)
> actual-value: #f
> result: FAIL

Did the logs not contain the values for truth and needed?  That would
mean that the test already failed to close the pipe.

-- 
Ricardo



Re: guix fails to build on aarch64

2021-12-16 Thread Vagrant Cascadian
On 2021-12-16, Vagrant Cascadian wrote:
> Ever since commit:
>
>   224d437fb4147fe9eae277cbc8d39e1ef54bf5c9 gnu: guix: Update to 2a621f1.
>
> I've been unable to build "guix" on aarch64, several test suites
> failed... I'll try to dig up the failures

Here are the failed tests...

test-name: maybe-remove-expired-cache-entries, first cleanup
location: /tmp/guix-build-guix-1.3.0-14.2a621f1.drv-0/source/tests/cache.scm:58
source:
+ (test-equal
+   "maybe-remove-expired-cache-entries, first cleanup"
+   '("a" "b" "c")
+   (test-cache-cleanup cache))
expected-value: ("a" "b" "c")
actual-value: ()
result: FAIL

test-name: maybe-remove-expired-cache-entries, cleanup needed
location: /tmp/guix-build-guix-1.3.0-14.2a621f1.drv-0/source/tests/cache.scm:70
source:
+ (test-equal
+   "maybe-remove-expired-cache-entries, cleanup needed"
+   '("a" "b" "c")
+   (test-cache-cleanup
+ cache
+ (call-with-output-file
+   (string-append cache "/last-expiry-cleanup")
+   (lambda (port) (display 0 port)
expected-value: ("a" "b" "c")
actual-value: ()
result: FAIL

test-name: file-needed/recursive
location: 
/tmp/guix-build-guix-1.3.0-14.2a621f1.drv-0/source/tests/gremlin.scm:70
source:
+ (test-assert
+   "file-needed/recursive"
+   (let* ((needed
+(file-needed/recursive %guile-executable))
+  (pipe (dynamic-wind
+  (lambda ()
+(setenv "LD_TRACE_LOADED_OBJECTS" "yup"))
+  (lambda ()
+(open-pipe* OPEN_READ %guile-executable))
+  (lambda () (unsetenv "LD_TRACE_LOADED_OBJECTS")
+ (define ldd-rx
+   (make-regexp
+ "^[[:blank:]]+([[:graph:]]+ => )?([[:graph:]]+) .*$"))
+ (define (read-ldd-output port)
+   (let loop ((result '()))
+ (match (read-line port)
+((? eof-object?) (reverse result))
+((= (cut regexp-exec ldd-rx <>) m)
+ (if m
+   (loop (cons (match:substring m 2) result))
+   (loop result))
+ (define ground-truth
+   (remove
+ (cut string-prefix? "linux-vdso.so" <>)
+ (read-ldd-output pipe)))
+ (and (zero? (close-pipe pipe))
+  (lset= string=?
+ (pk 'truth ground-truth)
+ (pk 'needed needed)
actual-value: #f
result: FAIL



live well,
  vagrant


signature.asc
Description: PGP signature


guix fails to build on aarch64

2021-12-16 Thread Vagrant Cascadian
Ever since commit:

  224d437fb4147fe9eae277cbc8d39e1ef54bf5c9 gnu: guix: Update to 2a621f1.

I've been unable to build "guix" on aarch64, several test suites
failed... I'll try to dig up the failures, but figured it was worth
mentioning in case anyone else saw it too and had the failures more
handy.

Reverting that commit gets guix building fine again, so that's a bit of
an ugly workaround, but ... works okish.

Makes it a bit hard to update Guix System on aarch64!


live well,
  vagrant


signature.asc
Description: PGP signature