[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Error using gcc with trivial-build-system
From: |
Sergiu Ivanov |
Subject: |
Re: Error using gcc with trivial-build-system |
Date: |
Tue, 08 Nov 2022 11:45:37 +0100 |
User-agent: |
mu4e 1.8.11; emacs 28.2 |
Hi,
I have little experience with Guix packages, but I ran into a similar
issue using guix shell --pure recently, and I believe that you need to
add glibc to your dependencies.
I suppose that guix shell works for you because you already have glibc
available in the active profile. I'd expect guix shell --pure to fail
with the same error.
-
HTH,
Sergiu
Emmanuel Medernach <Emmanuel.Medernach@iphc.cnrs.fr> [2022-11-08T11:23:16+0100]:
> Hello Guix,
>
> I have a local package with a compile script that
> I need to add to our local GUIX packages.
>
> I tried to use trivial-build-system with
> gcc-toolchain input, all works well when I compile
> it manually in a 'guix shell' but when I try to
> define a package I ran into this error:
>
> ld: cannot find crt1.o: No such file or directory
> ld: cannot find crti.o: No such file or directory
> collect2: error: ld returned 1 exit status
>
> I cannot produce correct binaries with
> gcc-toolchain, here is a minimal package
> definition with the above problem. Could you
> please tell me how to solve this problem ?
>
> (define-public SimpleTest
> (package
> (name "SimpleTest")
> (version "0.0.0")
> (source
> (origin
> (method url-fetch)
> (uri ".../simpletest.tgz")
> (sha256
> (base32 "0nx8dgs5n4s1alp8lnp7a96czdll8bb7ljbg152yk7m0mr07728d"))))
> (inputs `(("gcc-toolchain" ,gcc-toolchain-9)
> ("gzip" ,gzip)
> ("tar" ,tar)))
> (build-system trivial-build-system)
> (arguments
> `(#:modules
> ((guix build utils))
> #:builder
> (begin
> (use-modules (guix build utils))
>
> (let* ((source (assoc-ref %build-inputs "source"))
> (out (assoc-ref %outputs "out"))
> (gzip (assoc-ref %build-inputs "gzip"))
> (gunzip-bin (string-append gzip "/bin/gunzip"))
> (tar (assoc-ref %build-inputs "tar"))
> (tar-bin (string-append tar "/bin/tar"))
> (gcc-dir (assoc-ref %build-inputs "gcc-toolchain"))
> (gcc-bin (string-append gcc-dir "/bin/gcc")))
>
> (let* ((packages (alist-delete "source" %build-inputs))
> (packages-path (map cdr packages)))
> (setenv
> "PATH"
> (apply
> string-append
> (getenv "PATH") ":"
> (map (lambda (p) (string-append p "/bin:"))
> packages-path))))
>
> ;; (setenv "GCC_EXEC_PREFIX" gcc-dir)
> ;; gcc: fatal error: cannot execute 'cc1': execvp: No such
> file or directory
>
> (display (list "gcc-bin" gcc-bin)) (newline)
>
> (mkdir-p out) (chdir out)
> (copy-file source "simpletest.tar.gz")
> (invoke gunzip-bin "simpletest.tar.gz")
> (invoke tar-bin "xvf" "simpletest.tar")
> (delete-file "simpletest.tar")
> (chdir "simpletest")
> (invoke gcc-bin "simpletest.c" "-o" "simpletest")
>
> #t))))
>
> (synopsis "Simple Test")
> (description "Simple Test")
> (home-page "None")
> (license license:gpl3+)))
>
> Best regards,
>
> Emmanuel Medernach