GNU bug report logs - #44736
[Shepherd PATCH] build: Add guix.scm helper file.

Previous Next

Package: guix-patches;

Reported by: Efraim Flashner <efraim <at> flashner.co.il>

Date: Thu, 19 Nov 2020 12:54:01 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 44736 in the body.
You can then email your comments to 44736 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#44736; Package guix-patches. (Thu, 19 Nov 2020 12:54:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Efraim Flashner <efraim <at> flashner.co.il>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Thu, 19 Nov 2020 12:54:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Efraim Flashner <efraim <at> flashner.co.il>
To: guix-patches <at> gnu.org
Cc: Efraim Flashner <efraim <at> flashner.co.il>
Subject: [Shepherd PATCH] build: Add guix.scm helper file.
Date: Thu, 19 Nov 2020 14:52:44 +0200
* build-aux/guix.scm: New file.
---
 build-aux/guix.scm | 52 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 build-aux/guix.scm

diff --git a/build-aux/guix.scm b/build-aux/guix.scm
new file mode 100644
index 0000000..ea9c63f
--- /dev/null
+++ b/build-aux/guix.scm
@@ -0,0 +1,52 @@
+;;; guix.scm -- Guix package definition
+
+(use-modules
+  (guix packages)
+  ((guix git-download) #:select (git-version))
+  ((guix build utils) #:select (find-files))
+  ((guix gexp) #:select (local-file))
+  ((gnu packages) #:select (specification->package))
+  ((ice-9 popen) #:select (open-pipe))
+  ((ice-9 rdelim) #:select (read-string))
+  ((srfi srfi-1) #:select (any)))
+
+(define %source-dir (dirname (dirname (current-filename))))
+
+(define %git-commit
+  (read-string (open-pipe "git show HEAD | head -1 | cut -d ' ' -f 2" OPEN_READ)))
+
+(define (keep-file? file stat)
+  (not (any (lambda (my-string)
+              (string-contains file my-string))
+            (list ".git" ".dir-locals.el" "build-aux"))))
+
+(define (build-from-git base)
+  (package
+    (inherit base)
+    (version (git-version (package-version base) "HEAD" %git-commit))
+    (source (local-file %source-dir
+                        #:recursive? #t
+                        #:select? keep-file?))
+    (native-inputs
+     `(("autoconf" ,(specification->package "autoconf"))
+       ("automake" ,(specification->package "automake"))
+       ("gettext" ,(specification->package "gettext"))
+       ("help2man" ,(specification->package "help2man"))
+       ("texinfo" ,(specification->package "texinfo"))
+       ,@(package-native-inputs base)))
+    (arguments
+     `(#:configure-flags '("--localstatedir=/var")
+       #:make-flags (list "GUILE_AUTO_COMPILE=0")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-po-directory-writable
+           (lambda _
+             (for-each make-file-writable
+               (find-files "po" "."))
+               #t)))))))
+
+(list (build-from-git (specification->package "shepherd"))
+      (build-from-git (specification->package "guile2.2-shepherd"))
+      ;; This version FTBFS due to an import of '(ice-9 threads)' in modules/shepherd.scm
+      ;(build-from-git (specification->package "guile2.0-shepherd"))
+      )
-- 
2.29.2





Information forwarded to guix-patches <at> gnu.org:
bug#44736; Package guix-patches. (Mon, 11 Jan 2021 12:37:02 GMT) Full text and rfc822 format available.

Message #8 received at 44736 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Efraim Flashner <efraim <at> flashner.co.il>
Cc: 44736 <at> debbugs.gnu.org
Subject: Re: [bug#44736] [Shepherd PATCH] build: Add guix.scm helper file.
Date: Mon, 11 Jan 2021 13:36:38 +0100
Hello!

Efraim Flashner <efraim <at> flashner.co.il> skribis:

> * build-aux/guix.scm: New file.

Could you (1) add a copyright header, and (2) add this file to
‘EXTRA_DIST’ in ‘Makefile.am’?

> +(define (keep-file? file stat)
> +  (not (any (lambda (my-string)
> +              (string-contains file my-string))
> +            (list ".git" ".dir-locals.el" "build-aux"))))

FWIW, I’m never quite sure what to do here.  In Guile-zstd, I wrote
something that works even from a tarball (not a Git checkout), but it’s
a bit verbose:

  https://notabug.org/guile-zstd/guile-zstd/src/master/guix.scm

> +(define (build-from-git base)
> +  (package
> +    (inherit base)
> +    (version (git-version (package-version base) "HEAD" %git-commit))
> +    (source (local-file %source-dir
> +                        #:recursive? #t
> +                        #:select? keep-file?))

[…]

> +(list (build-from-git (specification->package "shepherd"))
> +      (build-from-git (specification->package "guile2.2-shepherd"))
> +      ;; This version FTBFS due to an import of '(ice-9 threads)' in modules/shepherd.scm
> +      ;(build-from-git (specification->package "guile2.0-shepherd"))
> +      )

Should it be a manifest instead, so that ‘guix build -f’ works?

The downside of returning several packages is that ‘guix environment -l
guix.scm’ won’t work.

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#44736; Package guix-patches. (Thu, 21 Jan 2021 10:15:02 GMT) Full text and rfc822 format available.

Message #11 received at 44736 <at> debbugs.gnu.org (full text, mbox):

From: Efraim Flashner <efraim <at> flashner.co.il>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 44736 <at> debbugs.gnu.org
Subject: Re: [bug#44736] [Shepherd PATCH] build: Add guix.scm helper file.
Date: Thu, 21 Jan 2021 12:13:13 +0200
[Message part 1 (text/plain, inline)]
On Mon, Jan 11, 2021 at 01:36:38PM +0100, Ludovic Courtès wrote:
> Hello!
> 
> Efraim Flashner <efraim <at> flashner.co.il> skribis:
> 
> > * build-aux/guix.scm: New file.
> 
> Could you (1) add a copyright header, and (2) add this file to
> ‘EXTRA_DIST’ in ‘Makefile.am’?

Sure

> > +(define (keep-file? file stat)
> > +  (not (any (lambda (my-string)
> > +              (string-contains file my-string))
> > +            (list ".git" ".dir-locals.el" "build-aux"))))
> 
> FWIW, I’m never quite sure what to do here.  In Guile-zstd, I wrote
> something that works even from a tarball (not a Git checkout), but it’s
> a bit verbose:
> 
>   https://notabug.org/guile-zstd/guile-zstd/src/master/guix.scm

Looking at that list I feel like I'm missing bits. If we go down the
rabiit hole of figuring out all the different files which could possibly
be included in the list I feel like we should keep it as a fancy macro
somewhere. It'd almost be easier to copy the entire directory somewhere,
run 'git clean -dfx' and then use that. Or to parse .gitignore or make
clean.

> > +(define (build-from-git base)
> > +  (package
> > +    (inherit base)
> > +    (version (git-version (package-version base) "HEAD" %git-commit))
> > +    (source (local-file %source-dir
> > +                        #:recursive? #t
> > +                        #:select? keep-file?))
> 
> […]
> 
> > +(list (build-from-git (specification->package "shepherd"))
> > +      (build-from-git (specification->package "guile2.2-shepherd"))
> > +      ;; This version FTBFS due to an import of '(ice-9 threads)' in modules/shepherd.scm
> > +      ;(build-from-git (specification->package "guile2.0-shepherd"))
> > +      )
> 
> Should it be a manifest instead, so that ‘guix build -f’ works?

Returning a list also seems to work

(ins)efraim <at> 3900XT ~/workspace/shepherd$ guix build -f build-aux/guix.scm -n
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://bayfront.guix.gnu.org'... 100.0%
The following derivations would be built:
   /gnu/store/g2ql360i3s02mg42l4ys27lsghpx5xqq-shepherd-0.8.1-HEAD.b482009.drv
   /gnu/store/ajlqc21qqmi3fp5j30jq7vc0i1qn701y-guile2.2-shepherd-0.8.1-HEAD.b482009.drv
   /gnu/store/nbq7yw0zzmrwvykcld3fsbgmh39fapym-guile2.0-shepherd-0.8.1.drv


> The downside of returning several packages is that ‘guix environment -l
> guix.scm’ won’t work.

Technically it works, but it's not as useful as just getting the inputs
you actually want.

(ins)efraim <at> 3900XT ~/workspace/shepherd$ guix environment -l build-aux/guix.scm
(ins)efraim <at> 3900XT ~/workspace/shepherd [env]$ which -a guile
/gnu/store/xlsi9fmi4blrpwn4xy8cvfq86zhag878-profile/bin/guile
/home/efraim/.guix-profile/bin/guile
/run/current-system/profile/bin/guile
(ins)efraim <at> 3900XT ~/workspace/shepherd [env]$ /gnu/store/xlsi9fmi4blrpwn4xy8cvfq86zhag878-profile/bin/guile --version
guile (GNU Guile) 3.0.2
Copyright (C) 2020 Free Software Foundation, Inc.

License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
(ins)efraim <at> 3900XT ~/workspace/shepherd$ ls /gnu/store/xlsi9fmi4blrpwn4xy8cvfq86zhag878-profile/lib/guile/
2.0  2.2  3.0/

> Thanks,
> Ludo’.

I also got guile2.0-shepherd to build.

-- 
Efraim Flashner   <efraim <at> flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[0001-build-Add-guix.scm-helper-file.patch (text/plain, attachment)]
[signature.asc (application/pgp-signature, inline)]

Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Fri, 02 Jun 2023 13:55:02 GMT) Full text and rfc822 format available.

Notification sent to Efraim Flashner <efraim <at> flashner.co.il>:
bug acknowledged by developer. (Fri, 02 Jun 2023 13:55:02 GMT) Full text and rfc822 format available.

Message #16 received at 44736-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Efraim Flashner <efraim <at> flashner.co.il>
Cc: 44736-done <at> debbugs.gnu.org
Subject: Re: bug#44736: [Shepherd PATCH] build: Add guix.scm helper file.
Date: Fri, 02 Jun 2023 15:54:02 +0200
Hi,

Efraim Flashner <efraim <at> flashner.co.il> skribis:

> * build-aux/guix.scm: New file.

I did something similar quite recently in the Shepherd.  Closing!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 01 Jul 2023 11:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 289 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.