GNU bug report logs -
#70611
outputs are baked in gexps, cannot be removed in derived packages
Previous Next
To reply to this bug, email your comments to 70611 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-guix <at> gnu.org
:
bug#70611
; Package
guix
.
(Sat, 27 Apr 2024 16:56:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-guix <at> gnu.org
.
(Sat, 27 Apr 2024 16:56:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi Guix,
I've stumbled upon the following existing use case that no longer works
when the base package is expressed using gexps:
Base package:
--8<---------------cut here---------------start------------->8---
(define-public llvm-15
(package
(name "llvm")
(version "15.0.7")
[...]
#~(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
(chdir "llvm")))
(add-after 'install 'install-opt-viewer
(lambda* (#:key outputs #:allow-other-keys)
(let* ((opt-viewer-share (string-append #$output:opt-viewer
"/share")))
(mkdir-p opt-viewer-share)
(rename-file (string-append #$output "/share/opt-viewer")
opt-viewer-share)))))))
[...]
(define-public llvm-cling
(let ((base llvm-18))
(package/inherit base
(name "llvm-cling")
(version "18-20240227-01")
(source
(origin
(inherit (package-source base))
(method git-fetch)
(uri (git-reference
(url "https://github.com/root-project/llvm-project")
(commit (string-append "cling-llvm" version))))
(file-name (git-file-name "llvm-cling" version))
(sha256
(base32
"0m5hhqk9y80srvkws2gs9rhpi6bjdy8mfk94z8fx6nmfxwrqsya8"))))
(outputs '("out"))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(delete 'install-opt-viewer))))))))
--8<---------------cut here---------------end--------------->8---
Attempting to build llvm-cling fails because the phases gexps inherited
from llvm-15 references the 'opt-viewer' output, which llvm-cling tries
to remove without success:
--8<---------------cut here---------------start------------->8---
builder for `/gnu/store/f2pdg9m5q3bxrlahjvlrdgw41x6kp3zd-llvm-cling-18-20240227-01.drv' failed to produce output path `/gnu/store/m1z5257hj5vwc2rl47wkpf0wmr6x0bq2-llvm-cling-18-20240227-01-opt-viewer'
--8<---------------cut here---------------end--------------->8---
--
Thanks,
Maxim
Information forwarded
to
bug-guix <at> gnu.org
:
bug#70611
; Package
guix
.
(Mon, 06 May 2024 12:35:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 70611 <at> debbugs.gnu.org (full text, mbox):
Hi,
On sam., 27 avril 2024 at 12:55, Maxim Cournoyer <maxim.cournoyer <at> gmail.com> wrote:
> --8<---------------cut here---------------start------------->8---
> builder for `/gnu/store/f2pdg9m5q3bxrlahjvlrdgw41x6kp3zd-llvm-cling-18-20240227-01.drv' failed to produce output path `/gnu/store/m1z5257hj5vwc2rl47wkpf0wmr6x0bq2-llvm-cling-18-20240227-01-opt-viewer'
> --8<---------------cut here---------------end--------------->8---
Yeah something is unexpected.
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build llvm-cling -d --no-grafts \
| xargs guix drv-show | recsel -p outputs
outputs:
+ /gnu/store/m1z5257hj5vwc2rl47wkpf0wmr6x0bq2-llvm-cling-18-20240227-01-opt-viewer [opt-viewer]
+ /gnu/store/bg3xs25xyllpzw322sqcc8ipw9q8lph6-llvm-cling-18-20240227-01 [out]
--8<---------------cut here---------------end--------------->8---
But from ’guix repl’
--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> ,pp (package-outputs llvm-cling-2)
$6 = ("out")
--8<---------------cut here---------------end--------------->8---
And the package arguments reads:
--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> ,pp (package-arguments llvm-cling-2)
$5 = (#:configure-flags
#<gexp gnu/packages/llvm.scm:586:6 7f6a06421150>
#:build-type
"Release"
#:phases
#<gexp (modify-phases #<gexp-input
#<gexp (modify-phases %standard-phases
(add-after (quote unpack) (quote change-directory)
(lambda _
(chdir "llvm")))
(add-after (quote install) (quote install-opt-viewer)
(lambda* (#:key outputs #:allow-other-keys)
(let* ((opt-viewer-share (string-append #<gexp-output opt-viewer> "/share")))
(mkdir-p opt-viewer-share)
(rename-file (string-append #<gexp-output out> "/share/opt-viewer") opt-viewer-share)))))
gnu/packages/llvm.scm:612:6 7f6a06421090>:out>
(delete (quote install-opt-viewer)))
gnu/packages/llvm.scm:2443:10 7f6a06421060>)
--8<---------------cut here---------------end--------------->8---
Concretely,
/gnu/store/rhb3lmkbp5d92c0x0sxkmfwbpbs4b4hp-llvm-cling-18-20240227-01-builder
reads,
--8<---------------cut here---------------start------------->8---
(define %outputs
(list
(cons "out"
((@
(guile)
getenv)
"out"))))
(define %output
(assoc-ref %outputs "out"))
(cmake-build
[...]
#:phases
(modify-phases
(modify-phases %standard-phases
(add-after
(quote unpack)
(quote change-directory)
(lambda _
(chdir "llvm")))
(add-after
(quote install)
(quote install-opt-viewer)
(lambda*
(#:key outputs #:allow-other-keys)
(let*
((opt-viewer-share
(string-append
((@
(guile)
getenv)
"opt-viewer")
"/share")))
(mkdir-p opt-viewer-share)
(rename-file
(string-append
((@
(guile)
getenv)
"out")
"/share/opt-viewer")
opt-viewer-share)))))
(delete
(quote install-opt-viewer)))
--8<---------------cut here---------------end--------------->8---
Therefore, the bug comes from an incorrect derivation (drv) file. It
contains an output that it should not.
Well, I have not investigated further… Probably an issue with code
staging (what is evaluated when).
Cheers,
simon
This bug report was last modified 311 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.