unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Leo Prikler <leo.prikler@student.tugraz.at>
To: Pjotr Prins <pjotr.public12@thebird.nl>,
	Konrad Hinsen <konrad.hinsen@fastmail.net>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Idea: a meta language for (language) build systems - npm, Racket, Rust cargo
Date: Tue, 01 Jun 2021 08:24:51 +0200	[thread overview]
Message-ID: <e1b268e4d62a7dcd0d4cc136344b731fe49a31ff.camel@student.tugraz.at> (raw)
In-Reply-To: <20210531174748.mhaelcqwmo7degfc@thebird.nl>

Am Montag, den 31.05.2021, 19:47 +0200 schrieb Pjotr Prins:
> On Sun, May 30, 2021 at 09:17:20PM +0200, Konrad Hinsen wrote:
> > How about pushing all the other package manager towards producing
> > sexp-packs, and helping them to get there?
> 
> I have a feeling they won't be that interested ;).
I do think some of them are interested, but you're right in that the
industry as a whole is not.

> My thoughts are that every software package simply consists of files
> that need to be compiled (if not interpreted) and be copied in place.
That is the case, but surely you aren't suggesting to implement all
build systems in terms of copy-build-system, right? :P

> As Guix takes care of the first and the last - the issue centers
> around building. The idea is to dress down these language specific
> builders, such as cargo, so you don't have all the included
> complexity. 
The thing with complex systems is that you will still have complexity
no matter how you look at them and cargo is such a system.  The only
way to not see that complexity is to ignore it because your build
succeeds, and I'm sure Rust, npm, etc. users (read: victims) are
physically trained to clear their mind from such heathen thought.

> A sexp-pack would represent the most simple build instructions to
> build a package on its own. Now, of course the current guix-builders
> solve that too. But, what I am proposing is to split out the actual
> build step into a package definition, so as to present something
> simpler to Guix.
I don't think this would be simpler to Guix, you'd just create even
more packages, that actually aren't usable.

> I found a cargo -> ninja converter. It is that kind of idea. Guix
> would use ninja with rustc instead of cargo. A stripped down cargo
> could potentially work too - but cargo is a complex beast.
The problem with rust+cargo is not just that cargo isn't make or ninja
(although that is certainly a part of it), it is also that any
make/ninja port would have to somehow take care of all the other things
that cargo does.  It doesn't shake the ginormous dependency trees for
example.

This is not to say, that rustc+ninja is not worth pursuing.  If the
output of rustc+ninja had some nice property, e.g. it was a shared
library, that could be reused, we might still want to rewrite rust-
build-system in terms of it.  In a similar manner, Guix people are
currently looking towards Rome to perhaps simplify node-build-system or
erect a new build system next to it.

Small rant w.r.t. #:skip-build?, this flag is a hack and everyone
involved knows it and we ought to find a way to actually build rust
crates in a manner that doesn't require complete source closure for the
next rust-thingy to use it.

> A simplified build step would make it easier to troubleshoot these
> packages.
I think I'd personally rather deal with the output of make or ninja
over that provided by rust/cargo 9 times out of 10 if that is what
you're going for, but different strokes for different folks.  We don't
want to alienate all the people actually using Rust on Guix by taking
away their favourite error message :P

Regards,
Leo



  parent reply	other threads:[~2021-06-01  6:25 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-30  8:38 Idea: a meta language for (language) build systems - npm, Racket, Rust cargo Pjotr Prins
2021-05-30 19:17 ` Konrad Hinsen
2021-05-31 17:47   ` Pjotr Prins
2021-06-01  5:50     ` Adriano Peluso
2021-06-01  6:24     ` Leo Prikler [this message]
2021-06-01  7:23       ` Pjotr Prins
2021-06-01  8:12         ` Leo Prikler
2021-06-01  8:59       ` Adriano Peluso
2021-06-01  9:11         ` Leo Prikler
2021-06-01 10:52           ` Adriano Peluso
2021-06-01 11:03             ` Leo Prikler
2021-06-01 11:28               ` Adriano Peluso
2021-06-01 15:22                 ` Leo Prikler
2021-06-01  7:56     ` Konrad Hinsen
2021-06-01 23:35       ` Joshua Branson
2021-06-08 13:11     ` Ludovic Courtès
2021-06-14 14:29       ` Pjotr Prins
2021-06-14 22:04         ` Leo Prikler
2021-06-15  8:48           ` Pjotr Prins
2021-06-15 10:08           ` Ricardo Wurmus
2021-06-20 15:46         ` Ludovic Courtès

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

  List information: https://guix.gnu.org/

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

  git send-email \
    --in-reply-to=e1b268e4d62a7dcd0d4cc136344b731fe49a31ff.camel@student.tugraz.at \
    --to=leo.prikler@student.tugraz.at \
    --cc=guix-devel@gnu.org \
    --cc=konrad.hinsen@fastmail.net \
    --cc=pjotr.public12@thebird.nl \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).