[PATCH] build: copy-build-system: Add #:output filter.

  • Done
  • quality assurance status badge
Details
One participant
  • Hilton Chain
Owner
unassigned
Submitted by
Hilton Chain
Severity
normal
H
H
Hilton Chain wrote on 1 Oct 2022 17:46
(address . guix-patches@gnu.org)
y76edvrsg0r.wl-hako@ultrarare.space
* guix/build/copy-build-system.scm (install): Add #:output filter.
---
guix/build/copy-build-system.scm | 49 +++++++++++++++++++-------------
1 file changed, 30 insertions(+), 19 deletions(-)

Toggle diff (85 lines)
diff --git a/guix/build/copy-build-system.scm b/guix/build/copy-build-system.scm
index fb2d1db056..111032eed8 100644
--- a/guix/build/copy-build-system.scm
+++ b/guix/build/copy-build-system.scm
@@ -54,7 +54,7 @@ (define* (install #:key install-plan outputs #:allow-other-keys)
- Without FILTERS, install the full SOURCE _content_ to TARGET.
The paths relative to SOURCE are preserved within TARGET.
- With FILTERS among `#:include`, `#:include-regexp`, `#:exclude`,
- `#:exclude-regexp`:
+ `#:exclude-regexp`, `#:output`:
- With `#:include`, install only the paths which suffix exactly matches
one of the elements in the list.
- With `#:include-regexp`, install subpaths matching the regexps in the list.
@@ -62,6 +62,8 @@ (define* (install #:key install-plan outputs #:allow-other-keys)
install every subpath but the files matching the `#:exclude*` filters.
If both `#:include*` and `#:exclude*` are specified, the exclusion is done
on the inclusion list.
+ - With `#:output`, install into TARGET of every specified output(s), the
+ default value is \"out\".
Examples:
@@ -72,7 +74,13 @@ (define* (install #:key install-plan outputs #:allow-other-keys)
- `(\"foo/\" \"share/my-app\" #:include (\"sub/file\"))`: Install only \"foo/sub/file\" to
\"share/my-app/sub/file\".
- `(\"foo/sub\" \"share/my-app\" #:include (\"file\"))`: Install \"foo/sub/file\" to
-\"share/my-app/file\"."
+\"share/my-app/file\".
+- As the previout example, when not specifying `#:output`: Install \"foo/sub/file\" to
+\"share/my-app/file\" of \"out\" output.
+- `(\"foo/sub\" \"share/my-app\" #:include (\"file\")) #:output (\"lib\")`: Install
+\"foo/sub/file\" to \"share/my-app/file\" of \"lib\" output.
+- `(\"foo/sub\" \"share/my-app\" #:include (\"file\")) #:output (\"out\"\"lib\")`:
+Install \"foo/sub/file\" to \"share/my-app/file\" of both \"out\" and \"lib\" outputs."
(define (install-simple source target)
"Install SOURCE to TARGET.
TARGET must point to a store location.
@@ -133,23 +141,26 @@ (define* (install-file-list source target #:key include exclude include-regexp e
(string-append target "/")))
file-list))))
- (define* (install source target #:key include exclude include-regexp exclude-regexp)
- (let ((final-target (string-append (assoc-ref outputs "out") "/" target))
- (filters? (or include exclude include-regexp exclude-regexp)))
- (when (and (not (file-is-directory? source))
- filters?)
- (error "Cannot use filters when SOURCE is a file."))
- (let ((multi-files-in-source?
- (or (string-suffix? "/" source)
- (and (file-is-directory? source)
- filters?))))
- (if multi-files-in-source?
- (install-file-list source final-target
- #:include include
- #:exclude exclude
- #:include-regexp include-regexp
- #:exclude-regexp exclude-regexp)
- (install-simple source final-target)))))
+ (define* (install source target #:key include exclude include-regexp exclude-regexp (output '("out")))
+ (for-each
+ (lambda (out)
+ (let ((final-target (string-append (assoc-ref outputs out) "/" target))
+ (filters? (or include exclude include-regexp exclude-regexp)))
+ (when (and (not (file-is-directory? source))
+ filters?)
+ (error "Cannot use filters when SOURCE is a file."))
+ (let ((multi-files-in-source?
+ (or (string-suffix? "/" source)
+ (and (file-is-directory? source)
+ filters?))))
+ (if multi-files-in-source?
+ (install-file-list source final-target
+ #:include include
+ #:exclude exclude
+ #:include-regexp include-regexp
+ #:exclude-regexp exclude-regexp)
+ (install-simple source final-target)))))
+ output))
(for-each (lambda (plan) (apply install plan)) install-plan)
#t)

base-commit: 225e00bd1925487fb045d9184fd249d93accad08
--
2.37.3
H
H
Hilton Chain wrote on 6 Jan 07:07 +0100
control message for bug #58230
(address . control@debbugs.gnu.org)
87v887t2p8.wl-hako@ultrarare.space
close 58230
quit
?
Your comment

This issue is archived.

To comment on this conversation send an email to 58230@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 58230
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch