[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: File not found during package build
From: |
Sarah Morgensen |
Subject: |
Re: File not found during package build |
Date: |
Sat, 24 Jul 2021 14:52:18 -0700 |
Hello,
phodina <phodina@protonmail.com> writes:
> Hi All,
>
> during package build in the phase `check` I get a strange error regarding
> file not found.
>
> The file in question is an executable script within the directory.
>
> It must be present there as the chmod operation succeeds.
> However, invocation of make then fails as it can't find the script.
>
> phase `build' succeeded after 0.1 seconds
> starting phase `check'
> make: Entering directory
> '/tmp/guix-build-novaboot-20210126a.drv-0/source/tests'
> ./wvtool runall ./novaboot.wv ./parser.wv ./expect.wv ./server.wv ./uboot.wv
> make: ./wvtool: No such file or directory
> make: *** [Makefile:6: all] Error 127
The issue here is that wvtool begins with the shebang
#!/usr/bin/env python3
so you'll need python in native-inputs.
>
> ---
> (define-public novaboot
> (package
> (name "novaboot")
> (version "20210126a")
> (source (origin
> (method git-fetch)
> (uri
> (git-reference
> (url "https://github.com/wentasah/novaboot")
> (commit version)))
> (sha256
> (base32
> "1xwgxpngjp345fg4xmacyxm21wqvx4h6n6b51wnvivvzjj9vga4z"))))
> (build-system gnu-build-system)
> (inputs `(("perl" ,perl) ("perl-expect" ,perl-expect)))
> (arguments
> '(#:phases (modify-phases %standard-phases
> (delete 'configure)
> (add-before 'build 'set-prefix-in-makefile
> (lambda* (#:key outputs #:allow-other-keys)
> (let ((out (assoc-ref outputs "out")))
> (substitute* "Makefile"
> (("PREFIX=.*")
> (string-append "PREFIX="
> "\n")))
> (substitute* "Makefile"
> (("DESTDIR=.*")
> (string-append "DESTDIR=" out "\n"))))
> ))
> (replace 'check
> (lambda* (#:key outputs #:allow-other-keys)
> (chdir "tests")
> (chmod "wvtool" #o555)
> (invoke "make"))))))
Also, the main Makefile has a 'test' target so you can just use
#:test-target "test"
in arguments rather than replacing the check phase.
> (synopsis "A tool that automates booting of operating systems on target
> hardware or in qemu")
> (description "Novaboot is a tool that automates booting of operating
> systems on target hardware (typically embedded boards) or in Qemu. Initially,
> it was developed to boot NOVA Microhypervisor (hence the name), but nowadays
> is well suited for booting Linux (and perhaps other OSes) too.")
> (home-page "https://github.com/wentasah/novaboot")
> (license license:gpl2)))
Hope that helps,
Sarah