GNU bug report logs - #29161
[PATCH core-updates] build-system/gnu: Add 'install-license-files' phase.

Previous Next

Package: guix-patches;

Reported by: ludo <at> gnu.org (Ludovic Courtès)

Date: Sun, 5 Nov 2017 20:40:01 UTC

Severity: normal

Tags: patch

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

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 29161 in the body.
You can then email your comments to 29161 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#29161; Package guix-patches. (Sun, 05 Nov 2017 20:40:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to ludo <at> gnu.org (Ludovic Courtès):
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 05 Nov 2017 20:40:01 GMT) Full text and rfc822 format available.

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

From: ludo <at> gnu.org (Ludovic Courtès)
To: guix-patches <at> gnu.org
Cc: Marius Bakke <mbakke <at> fastmail.com>, Dave Love <fx <at> gnu.org>,
 Leo Famulari <leo <at> famulari.name>
Subject: [PATCH core-updates] build-system/gnu: Add 'install-license-files'
 phase.
Date: Sun, 05 Nov 2017 21:39:18 +0100
[Message part 1 (text/plain, inline)]
Hello Guix,

This patch adds an ‘install-license-files’ phase to ‘gnu-build-system’
and to all the build systems that inherit from it.  It is a followup to
the discussion with Dave Love:

  https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00097.html

It’s an improvement over what we have now, although it’s rudimentary: it
copies to share/doc/PACKAGE-VERSION any file from the top-level source
directory that matches a regexp.

Thoughts?

Ideally we could apply it in this ‘core-updates’ cycle if that’s fine
with you.

Thanks in advance,
Ludo’.

[0001-build-system-gnu-Add-install-license-files-phase.patch (text/x-patch, inline)]
From bcdfb1a89b82c9c10e80f1a5d6aadc0620e81156 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo <at> gnu.org>
Date: Sun, 5 Nov 2017 21:32:02 +0100
Subject: [PATCH] build-system/gnu: Add 'install-license-files' phase.

Suggested by Dave Love <fx <at> gnu.org>.

* guix/build-system/gnu.scm (%license-file-regexp): New variable.
(gnu-build): Add #:license-file-regexp and use it.
(gnu-cross-build): Likewise.
* guix/build/gnu-build-system.scm (%license-file-regexp): New variable.
(install-license-files): New procedure.
(%standard-phases): Add it.
---
 guix/build-system/gnu.scm       |  8 ++++++++
 guix/build/gnu-build-system.scm | 25 +++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 047ace7e6..f54afe167 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -273,6 +273,10 @@ standard packages used as implicit inputs of the GNU build system."
     (build (if target gnu-cross-build gnu-build))
     (arguments (strip-keyword-arguments private-keywords arguments))))
 
+(define %license-file-regexp
+  ;; Regexp matching license files.
+  "^(COPYING.*|LICEN[CS]E.*|[Ll]icen[cs]e.*|Copy[Rr]ight(\\.(txt|md))?)$")
+
 (define* (gnu-build store name input-drvs
                     #:key (guile #f)
                     (outputs '("out"))
@@ -291,6 +295,7 @@ standard packages used as implicit inputs of the GNU build system."
                     (strip-directories ''("lib" "lib64" "libexec"
                                           "bin" "sbin"))
                     (validate-runpath? #t)
+                    (license-file-regexp %license-file-regexp)
                     (phases '%standard-phases)
                     (locale "en_US.utf8")
                     (system (%current-system))
@@ -358,6 +363,7 @@ packages that must not be referenced."
                   #:patch-shebangs? ,patch-shebangs?
                   #:strip-binaries? ,strip-binaries?
                   #:validate-runpath? ,validate-runpath?
+                  #:license-file-regexp ,license-file-regexp
                   #:strip-flags ,strip-flags
                   #:strip-directories ,strip-directories)))
 
@@ -432,6 +438,7 @@ is one of `host' or `target'."
                           (strip-directories ''("lib" "lib64" "libexec"
                                                 "bin" "sbin"))
                           (validate-runpath? #t)
+                          (license-file-regexp %license-file-regexp)
                           (phases '%standard-phases)
                           (locale "en_US.utf8")
                           (system (%current-system))
@@ -509,6 +516,7 @@ platform."
                     #:patch-shebangs? ,patch-shebangs?
                     #:strip-binaries? ,strip-binaries?
                     #:validate-runpath? ,validate-runpath?
+                    #:license-file-regexp ,license-file-regexp
                     #:strip-flags ,strip-flags
                     #:strip-directories ,strip-directories))))
 
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index e37b75140..eb247ae0c 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -29,6 +29,7 @@
   #:use-module (srfi srfi-26)
   #:use-module (rnrs io ports)
   #:export (%standard-phases
+            %license-file-regexp
             gnu-build))
 
 ;; Commentary:
@@ -641,6 +642,29 @@ which cannot be found~%"
             outputs)
   #t)
 
+(define %license-file-regexp
+  ;; Regexp matching license files.
+  "^(COPYING.*|LICEN[CS]E.*|[Ll]icen[cs]e.*|Copy[Rr]ight(\\.(txt|md))?)$")
+
+(define* (install-license-files #:key outputs
+                                (license-file-regexp %license-file-regexp)
+                                #:allow-other-keys)
+  "Install license files matching LICENSE-FILE-REGEXP to 'share/doc'."
+  (let* ((regexp    (make-regexp license-file-regexp))
+         (out       (or (assoc-ref outputs "out")
+                        (car (first outputs))))
+         (package   (strip-store-file-name out))
+         (directory (string-append out "/share/doc/" package))
+         (files     (scandir "." (lambda (file)
+                                   (regexp-exec regexp file)))))
+    (format #t "installing ~a license files~%" (length files))
+    (for-each (lambda (file)
+                (if (file-is-directory? file)
+                    (copy-recursively file directory)
+                    (install-file file directory)))
+              files)
+    #t))
+
 (define %standard-phases
   ;; Standard build phases, as a list of symbol/procedure pairs.
   (let-syntax ((phases (syntax-rules ()
@@ -654,6 +678,7 @@ which cannot be found~%"
             validate-documentation-location
             delete-info-dir-file
             patch-dot-desktop-files
+            install-license-files
             reset-gzip-timestamps
             compress-documentation)))
 
-- 
2.14.2


Reply sent to ludo <at> gnu.org (Ludovic Courtès):
You have taken responsibility. (Wed, 08 Nov 2017 21:47:02 GMT) Full text and rfc822 format available.

Notification sent to ludo <at> gnu.org (Ludovic Courtès):
bug acknowledged by developer. (Wed, 08 Nov 2017 21:47:02 GMT) Full text and rfc822 format available.

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

From: ludo <at> gnu.org (Ludovic Courtès)
To: 29161-done <at> debbugs.gnu.org
Cc: Marius Bakke <mbakke <at> fastmail.com>, Dave Love <fx <at> gnu.org>,
 Leo Famulari <leo <at> famulari.name>
Subject: Re: [bug#29161] [PATCH core-updates] build-system/gnu: Add
 'install-license-files' phase.
Date: Wed, 08 Nov 2017 22:46:43 +0100
Hey,

ludo <at> gnu.org (Ludovic Courtès) skribis:

>>From bcdfb1a89b82c9c10e80f1a5d6aadc0620e81156 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo <at> gnu.org>
> Date: Sun, 5 Nov 2017 21:32:02 +0100
> Subject: [PATCH] build-system/gnu: Add 'install-license-files' phase.
>
> Suggested by Dave Love <fx <at> gnu.org>.
>
> * guix/build-system/gnu.scm (%license-file-regexp): New variable.
> (gnu-build): Add #:license-file-regexp and use it.
> (gnu-cross-build): Likewise.
> * guix/build/gnu-build-system.scm (%license-file-regexp): New variable.
> (install-license-files): New procedure.
> (%standard-phases): Add it.

I went ahead and pushed this with a tiny fix that Ricardo suggested on
IRC.

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 07 Dec 2017 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 136 days ago.

Previous Next


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