Consider this minimal operating-system definition: (use-modules (gnu)) (use-package-modules gcc)
(operating-system
(host-name "test")
(timezone "UTC")
(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
(target "/boot/efi")))
(file-systems (cons*
(file-system
(device (file-system-label "root"))
(mount-point "/")
(type "ext4"))
%base-file-systems))
(packages '())
(services (cons*
(service special-files-service-type
`(("/lib64" ,(directory-union "rustup-libs"
(list
(file-append glibc "/lib")
(file-append #~#$gcc:lib "/lib"))))))
%base-services)))
I would expect this way of specifying a specific output of a package to
work, but it results in the following error:
ice-9/boot-9.scm:1515:18: object is not an exception of the right type
#<&gexp-input-error input: #<gexp #<gexp-input #<package [email protected]
gnu/packages/gcc.scm:520 7f06c996c960>:lib> 7f06c6b06990>> #<record-type
&package-input-error>
This also happens when I omit the directory-union:
(service special-files-service-type
`(("/lib64" ,(file-append #~#$gcc:lib "/lib"))))
What *does* work, is this variant with string-append:
(service special-files-service-type
`(("/lib64" ,#~(string-append #$gcc:lib "/lib"))))
However, using it in the directory-union breaks again:
(service special-files-service-type
`(("/lib64" ,(directory-union "rustup-libs"
(list
(file-append glibc "/lib")
#~(string-append #$gcc:lib "/lib"))))))
ERROR: In procedure opendir:
Wrong type (expecting string): (string-append
"/gnu/store/mdxmdhrlkgdik6ay9pzmmy8mjcbibpwb-gcc-7.5.0-lib" "/lib")
builder for `/gnu/store/p5hf7hqxn35fgsb75s5i7326vyzb8jkr-rustup-libs.drv'
failed with exit code 1
I have figured out that the following does work:
(service special-files-service-type
`(("/lib64" ,#~(directory-union "rustup-libs"
(list
(string-append #$glibc "/lib")
(string-append #$gcc:lib "/lib"))))))
However, I would expect the other variants to work as well. The
documentation and error messages are lacking in this regard.
Regards,
Jakub Kądziołka
signature.asc
Description: PGP signature
