Subject: bug#36813: closed (Re: bug#36813: 'lower-gexp' does not respect 'system' or 'target' keywords)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 26 Jul 2019 23:10:02 +0000

Your bug report

#36813: 'program-file' does not respect 'system' and 'target'

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
36813: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=36813
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#36813: 'lower-gexp' does not respect 'system' or 'target' keywords
From: Ludovic Courtès <[email-masked]>
To: "Jakob L. Kreuze" <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sat, 27 Jul 2019 01:09:20 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

"Jakob L. Kreuze" <[email-masked]> skribis:

> Apologies, I should clarify -- the Guile for the S-Expression appears to be fine, but the Guile referenced in the shebang of the ungexp'd program-file does not reflect the system.

Got it now.  This is fixed by 2e8cabb8d630a8423e2e5a3bf150c1c0310b945d.

Thanks!

Ludo’.

Subject: 'lower-gexp' does not respect 'system' or 'target' keywords
From: [email-masked] (Jakob L. Kreuze)
To: [email-masked]
Cc: [email-masked]
Date: Thu, 25 Jul 2019 19:25:45 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

I believe there is an issue with 'lower-gexp'. Running the following
snippet to lower a G-Expression for "i686-linux" yields output that
references store paths built for x86_64. In this case, the Guile
interpreter used is an x86_64 binary.

#+BEGIN_SRC scheme
(define (display-exp exp)
  (mlet* %store-monad ((lowered (lower-gexp exp
                                            #:system "i686-linux"
                                            #:target "i686-linux"))
                       (to-build -> (cons (lowered-gexp-guile lowered)
                                          (lowered-gexp-inputs lowered)))
                       (_ (built-derivations to-build)))
    (return (format #t "~a~%" (lowered-gexp-sexp lowered)))))

(with-store store
  (run-with-store store
    (display-exp #~(primitive-load #$(switch-system-program %system)))))
#+END_SRC

jakob@Epsilon ~ $ guile ~/test.scm 
(primitive-load /gnu/store/v7v1b7375j9j82dvfycv56v36nv5jq3y-switch-to-system.scm)
jakob@Epsilon ~ $ cat /gnu/store/v7v1b7375j9j82dvfycv56v36nv5jq3y-switch-to-system.scm
#!/gnu/store/9alic3caqhay3h8mx4iihpmyj6ymqpcx-guile-2.2.4/bin/guile --no-auto-compile
!#
...
jakob@Epsilon ~ $ file /gnu/store/9alic3caqhay3h8mx4iihpmyj6ymqpcx-guile-2.2.4/bin/guile
/gnu/store/9alic3caqhay3h8mx4iihpmyj6ymqpcx-guile-2.2.4/bin/guile: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, not stripped

This doesn't seem to be an issue if '%current-system' is parameterized,
as in the following.

#+BEGIN_SRC scheme
(parameterize ((%current-system "i686-linux"))
  (with-store store
    (run-with-store store
      (display-exp #~(primitive-load #$(switch-system-program %system))))))
#+END_SRC

Regards,
Jakob