all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Eric Le Bihan <eric.le.bihan.dev@free.fr>
Cc: guix-devel@gnu.org
Subject: Re: Rust
Date: Sat, 30 Jul 2016 15:44:53 +0200	[thread overview]
Message-ID: <87ziozb5pm.fsf@gnu.org> (raw)
In-Reply-To: <20160730130103.3859e4ed@itchy> (Eric Le Bihan's message of "Sat, 30 Jul 2016 13:01:03 +0200")

Eric Le Bihan <eric.le.bihan.dev@free.fr> skribis:

> Le Fri, 29 Jul 2016 17:16:29 +0200,
> ludo@gnu.org (Ludovic Courtès) a écrit :

[...]

>> > Some questions, though:
>> >
>> > 1. I can compile a sample program in a guix environment created
>> > using `guix environment gcc glibc binutils rust`, but the program
>> > generated fails to run because libgcc_s.so.1 can not be found. How
>> > can it be added to the environment?  
>> 
>> As Andreas notes, ‘gcc-toolchain’, which includes ‘ld-wrapper’, should
>> fix this.
>
> Yes. It solved my problem.
>  
>> Does Rust use GCC, or just ld?
>
> It only uses the linker, i.e. ld on GNU/Linux.

Then it should be enough to add ‘ld-wrapper’ to the inputs (no need for
‘gcc-toolchain’ or ‘gcc’.)  Just make sure Rust captures the absolute
file name of ‘ld’.

> IIUC, to provide a Guix package for Cargo, the following should be done:
>
> 1. write a crate importer.
> 2. list all the crates needed by Cargo to build itself.
> 3. package each crate with the importer.
> 4. add a Cargo package which depends on the newly-imported crates and
> uses a binary version of Cargo to bootstrap itself (though this is not
> the best option in terms of auditing/reproducibility).
>
> Unlike Rust, Cargo still uses an "anonymous" binary version of itself
> for bootstrapping. I hope this may change soon.

Something along these lines, yes.  We may also need a
‘rust-build-system’, like we did for other languages:

  https://www.gnu.org/software/guix/manual/html_node/Build-Systems.html

If that build system works without invoking Cargo, then we probably
don’t need a Cargo binary to build Cargo.

Anyway, we’re not there yet.  :-)

>> > +        (add-before 'build 'pre-build
>> > +                    (lambda _
>> > +                      (let* ((bindir (string-append (getcwd)
>> > "/bin"))
>> > +                             (cc (string-append bindir "/cc")))
>> > +                        (mkdir bindir)
>> > +                        (call-with-output-file cc
>> > +                          (lambda (port)
>> > +                            (format port
>> > +                                    "#!~a\n\nexec gcc
>> > \"$@\"\n" (which "sh"))))
>> > +                        (chmod cc #o755))))  
>> 
>> Can we avoid this trick using a configure flag
>> (--with-compiler=/path/to/gcc) or a configure or environment variable
>> (CC=gcc)?  If not, that’s fine.
>
> To build the Rust standard library, only the linker is needed. The
> default value is "cc". I thought this could be overridden using the
> "--default-linker=" of the ./configure script, but it looks like it is
> not properly handled. Hence the need for the wrapper. 

OK, makes sense.  Please leave this explanation as a comment in the
code.

>> > +      #:tests? #f))  
>> 
>> We normally run test suites, unless we have a good reason not to do
>> so. :-)  Any ideas why “make check” fails?
>
> Out of laziness, I skipped the tests. I'll give it a look.

Let us know how it goes, even if the outcome is “too painful, giving
up”.  :-)

Thanks,
Ludo’.

  reply	other threads:[~2016-07-30 13:45 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-25 17:45 LLVM: "FileCheck" is missing Danny Milosavljevic
2016-03-25 21:58 ` Nils Gillmann
2016-03-25 22:06 ` rust work in progress conflicts (was: Re: LLVM: "FileCheck" is missing) Nils Gillmann
2016-05-04 10:34   ` Jelle Licht
2016-05-05 13:35     ` rust work in progress conflicts Ludovic Courtès
2016-05-05 14:46       ` Alex Griffin
2016-05-06  9:05         ` Andy Wingo
2016-05-06  9:15           ` Andy Wingo
2016-05-06  9:59         ` Ludovic Courtès
2016-05-05 15:06     ` ng0
2016-07-28  8:28       ` ng0
2016-07-28 18:31         ` Eric Le Bihan
2016-07-29  9:03           ` Andreas Enge
2016-07-29 11:40             ` Vincent Legoll
2016-07-29 14:37               ` ng0
2016-07-30 10:04             ` Eric Le Bihan
2016-07-29 15:16           ` Rust Ludovic Courtès
2016-07-29 15:34             ` Rust Alex Griffin
2016-07-29 16:08               ` Rust Jelle Licht
2016-07-30 13:34               ` Rust Ludovic Courtès
2016-07-30 17:57                 ` Rust Pjotr Prins
2016-07-30 11:01             ` Rust Eric Le Bihan
2016-07-30 13:44               ` Ludovic Courtès [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-07-29 19:10 Rust David Craven
2016-07-30 13:39 ` Rust Ludovic Courtès
2016-09-04 14:50 Rust David Craven
2016-09-07  6:04 ` Rust Eric Le Bihan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ziozb5pm.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=eric.le.bihan.dev@free.fr \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.