From: Sergei Trofimovich <slyfox@inbox.ru>
To: Andy Wingo <wingo@igalia.com>
Cc: Guix-devel <Guix-devel@gnu.org>, rennes <rennes@openmailbox.org>
Subject: Re: cross-compiling in core-updates
Date: Tue, 2 May 2017 20:03:15 +0100 [thread overview]
Message-ID: <20170502200309.2ee511e8@sf> (raw)
In-Reply-To: <cucinljd92q.fsf@igalia.com>
[-- Attachment #1: Type: text/plain, Size: 5793 bytes --]
On Tue, 02 May 2017 09:14:21 +0200
Andy Wingo <wingo@igalia.com> wrote:
> On Fri 28 Apr 2017 21:04, Manolis Ragkousis <manolis837@gmail.com> writes:
>
> > The reason for the cascading errors is bash-minimal.
> >
> > Trying to build `./pre-inst-env guix build bash-minimal'
> > on core-updates ends up with :
> >
> > The following derivation will be built:
> > /gnu/store/1r0fpfcik796g2b5v9ns163sgan1rkmz-bash-minimal-4.4.12.drv
> > @ build-started
> > /gnu/store/1r0fpfcik796g2b5v9ns163sgan1rkmz-bash-minimal-4.4.12.drv -
> > x86_64-linux
> > /usr/local/var/log/guix/drvs/1r//0fpfcik796g2b5v9ns163sgan1rkmz-bash-minimal-4.4.12.drv.bz2
> > ice-9/psyntax.scm:1534:32: In procedure expand-macro:
> > ice-9/psyntax.scm:1534:32: Syntax error:
> > /gnu/store/k84sww1zzh33a5hw8bcmsa5yp7w628a8-bash-minimal-4.4.12-guile-builder:1:2285:
> > source expression failed to match any pattern in form (%modify-phases
> > phases* (delete (quote move-development-files)))
> > builder for
> > `/gnu/store/1r0fpfcik796g2b5v9ns163sgan1rkmz-bash-minimal-4.4.12.drv'
> > failed with exit code 1
> > @ build-failed
> > /gnu/store/1r0fpfcik796g2b5v9ns163sgan1rkmz-bash-minimal-4.4.12.drv - 1
> > builder for
> > `/gnu/store/1r0fpfcik796g2b5v9ns163sgan1rkmz-bash-minimal-4.4.12.drv'
> > failed with exit code 1
> > guix build: error: build failed: build of
> > `/gnu/store/1r0fpfcik796g2b5v9ns163sgan1rkmz-bash-minimal-4.4.12.drv' failed
> >
> > It's the same issue Sergei reported and commit 78dea6f1d4a did not fix it.
>
> Hi!
>
> I suspect I know what this is. First, the package in question:
>
> (define-public bash-minimal
> ;; A stripped-down Bash for non-interactive use.
> (package (inherit bash)
> (name "bash-minimal")
> (inputs '()) ; no readline, no curses
>
> ;; No "include" output because there's no support for loadable modules.
> (outputs (delete "include" (package-outputs bash)))
>
> (arguments
> (let ((args `(#:modules ((guix build gnu-build-system)
> (guix build utils)
> (srfi srfi-1)
> (srfi srfi-26))
> ,@(package-arguments bash))))
> (substitute-keyword-arguments args
> ((#:configure-flags flags)
> `(list "--without-bash-malloc"
> "--disable-readline"
> "--disable-history"
> "--disable-help-builtin"
> "--disable-progcomp"
> "--disable-net-redirections"
> "--disable-nls"
>
> ;; Pretend 'dlopen' is missing so we don't build loadable
> ;; modules and related code.
> "ac_cv_func_dlopen=no"
>
> ,@(if (%current-target-system)
> '("bash_cv_job_control_missing=no"
> "bash_cv_getcwd_malloc=yes")
> '())))
> ((#:phases phases)
> `(modify-phases ,phases
> ;; No loadable modules.
> (delete 'move-development-files))))))))
>
> So you are aware of the change in Guile regarding "keyword" matching in
> macros. In this case the "delete" in the modify-phases macro is a
> keyword. Whereas before in Guile, they were only matched by name, now
> they are matched by binding. If the keyword was bound where the macro
> was defined, then it will only be matched to identifiers bound to the
> same variable when the macro is used. Otherwise if the keyword was
> unbound when the macro was defined, then it will match by name, but only
> if the name is also unbound at the macro use.
>
> In (guix build utils), `delete' is bound to "delete" from (srfi srfi-1).
> In the bash package definition, I am not sure what the scope is because
> it's staged. However let's assume that the #:modules bit intends to
> make it so that srfi-1 is present also in the bash-minimal module. That
> should work, right? Except I think because the bash package *also*
> defines a #:modules argument, that will result in:
>
> #:modules the-bash-minimal-modules ... #:modules the-bash-modules
>
> and the last keyword wins. So, perhaps try putting the
> ,@(package-arguments bash) first in this list?
>
> (#:modules ((guix build gnu-build-system)
> (guix build utils)
> (srfi srfi-1)
> (srfi srfi-26))
> ,@(package-arguments bash))
Yay! The following patch makes bash-minimal compile fine!
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index ef22728a9..38aa1786e 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -213,7 +213,7 @@ without modification.")
(arguments
- (let ((args `(#:modules ((guix build gnu-build-system)
+ (let ((args `(,@(package-arguments bash)
+ #:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-1)
- (srfi srfi-26))
- ,@(package-arguments bash))))
+ (srfi srfi-26)))))
(substitute-keyword-arguments args
I'm afraid I understood almost nothing about your comments of
visibility. The only thing I've got is that keyword argument order
matters :)
Would the similar ordering change have the no-op effect in master
branch or does it mean core-updates should do this reordering while
master should not?
Thank you!
--
Sergei
[-- Attachment #2: Цифровая подпись OpenPGP --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
next prev parent reply other threads:[~2017-05-02 19:03 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-25 11:44 cross-compiling in core-updates rennes
2017-04-25 14:10 ` Manolis Ragkousis
2017-04-25 21:26 ` Sergei Trofimovich
2017-04-28 19:04 ` Manolis Ragkousis
2017-05-02 7:14 ` Andy Wingo
2017-05-02 19:03 ` Sergei Trofimovich [this message]
2017-05-02 19:20 ` Andy Wingo
2017-05-03 19:32 ` rennes
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=20170502200309.2ee511e8@sf \
--to=slyfox@inbox.ru \
--cc=Guix-devel@gnu.org \
--cc=rennes@openmailbox.org \
--cc=wingo@igalia.com \
/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).