From: Amirouche Boubekki <amirouche@hypermove.net>
To: Andy Wingo <wingo@pobox.com>
Cc: guix-devel@gnu.org, guile-user@gnu.org,
guile-user <guile-user-bounces+amirouche=hypermove.net@gnu.org>
Subject: Re: guix is the guildhall that we always wanted!
Date: Thu, 16 Mar 2017 20:26:52 +0100 [thread overview]
Message-ID: <26e9ccc02b354bfb7e3dd80972fcc5b7@hypermove.net> (raw)
In-Reply-To: <87zigl3wph.fsf@pobox.com>
Héllo wingo!
On 2017-03-16 19:25, Andy Wingo wrote:
> Hi all!
>
[...]
> But it turns out that we can use the same strategy to distribute
> reproducible binaries for any package that Guix includes. Notably, if
> you run:
>
> guix pack -S /opt/guile-fibers-1.0.0=/ guile-next guile-fibers
> glibc-utf8-locales
>
> Then what you get is a tarball that has Guile, Fibers, and everything
> they depend on. It's safe to extract in / because it only adds files
> to
> /gnu/store, and then it adds a symlink for /opt/guile-fibers-1.0.0.
>
cf. http://git.savannah.gnu.org/cgit/guix.git/tree/doc/guix.texi#n2392
>
> So:
>
> * local development using packaged libraries: check.
> * distribution of your work to people without $package-manager:
> check.
> * easy addition of your code to a common NPM-like registry: ?
>
> For this last bit, we have two options. One is to add your package to
> Guix. It's relatively easy; here's what I added for Fibers:
>
> (define-public guile-fibers
> (package
> (name "guile-fibers")
> (version "1.0.0")
> (source (origin
> (method url-fetch)
> (uri (string-append
> "https://wingolog.org/pub/fibers/fibers-"
> version ".tar.gz"))
> (sha256
> (base32
>
> "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))))
> (build-system gnu-build-system)
> (native-inputs
> `(("texinfo" ,texinfo)
> ("pkg-config" ,pkg-config)))
> (inputs
> `(("guile" ,guile-next)))
> (synopsis "Lightweight concurrency facility for Guile")
> (description
> "Fibers is a Guile library that implements a a lightweight
> concurrency
> facility, inspired by systems like Concurrent ML, Go, and Erlang.
> A fiber is
> like a \"goroutine\" from the Go language: a lightweight
> thread-like
> abstraction. Systems built with Fibers can scale up to millions
> of concurrent
> fibers, tens of thousands of concurrent socket connections, and
> many parallel
> cores. The Fibers library also provides Concurrent ML-like
> channels for
> communication between fibers.
>
> Note that Fibers makes use of some Guile 2.1/2.2-specific features
> and
> is not available for Guile 2.0.")
> (home-page "https://github.com/wingo/fibers")
> (license license:lgpl3+)))
>
> OK, so this uses gnu-build-system, which requires a tarball; we need to
> extend this to have a "guile-build-system" for modules that are just
> Scheme, in which we just "guild compile" everything. That way you can
> have a repo on gitlab or whatever and you just specify the URL and the
> revision and you are done. I don't know if we can get around
> specifying
> the sha256 when we specify the git revision; probably not a good idea
> in
> light of the SHA1 breakage. Anyway, that's a thing.
>
> But while getting your package into guix is easier than you think, it's
> not automatic. I think there's room for a middle ground that's a bit
> more decentralized than Guix, but more centralized than people using
> GUIX_PACKAGE_PATH to add random directories of Guix package files.
Ok, I like the idea!
>
> So! My proposal for this new "guildhall" would be:
>
> 1. a web service
>
What would be the cli interface associated with that web service?
Some thing like the following will do:
$ guildhall register
Register a package against the guildhall repository.
You must have a package.scm in the current working
directory that follows package specification of guix.
http://link/to/guix/doc/that/I/dont/know
Does it require login/password?
That is all I can think of.
> 2. on which users registers projects
>
> 3. a project is a name + a git repository with a /package.scm file
We can have that using guile-git: current commit + remote origin.
> 4. the package.scm contains Guix package definitions for that
> project
>
> 5. the web service administers a git repository collecting those
> packages
> - without any hydra.gnu.org overhead
What do you mean, by no hydra.gnu.org overhead? Where are
done the 'guix pack' command?
> - without any manual checks
> - in a form that you can just check out once and add to
> GUIX_PACKAGE_PATH
>
Ok, the 'guix pack' can be done by the maintainer and
'guix register' does upload the lz file to guildhall
website.
> 6. adding a new tag to a project's git repo of the form vX makes a
> release X and updates the guildhall package
> - it could be the web service has to poll git repos
> - or maybe you have to invoke some command to update guildhall
It's painful to have to "watch" git repositories, except if the git
repository is a remote of the develloper's git. Basically it requires
a manual intervention from the maintainer. Otherwise, guildhall website
need to pull regularly all git repositories.
> 7. probably we need to steal many ideas from npm.org
I think about their dependency resolution algorithm. I think
civodul should chime in.
> You might ask, why is this better than the current guildhall? It does
> exist after all. I respond in the following way:
>
[...]
>
> But! Who is going to build the guildhall v2.2? :-)
>
idk ;)
I have also a question, for guix community:
What do you think of guix web, how one can improve it.
The idea I have behind that question, is that maybe we
should target to create a web ui for guix to improve
guile experience.
Amirouche ~ amz3 ~ http://hyperdev.fr
next prev parent reply other threads:[~2017-03-16 19:27 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-16 18:25 guix is the guildhall that we always wanted! Andy Wingo
2017-03-16 19:26 ` Amirouche Boubekki [this message]
2017-03-17 8:23 ` Andy Wingo
2017-03-18 0:10 ` Arne Babenhauserheide
2017-03-16 22:01 ` Mark H Weaver
2017-03-16 22:24 ` Ludovic Courtès
2017-03-17 9:01 ` Florian Paul Schmidt
2017-03-17 9:45 ` Andy Wingo
2017-03-17 11:24 ` Ludovic Courtès
2017-03-17 6:51 ` Marko Rauhamaa
2017-03-17 8:30 ` Andy Wingo
2017-03-17 13:54 ` Christopher Allan Webber
2017-03-17 14:26 ` Andy Wingo
2017-03-18 14:00 ` Ludovic Courtès
2017-03-17 11:30 ` Ludovic Courtès
2017-03-17 12:32 ` Andy Wingo
2017-03-17 17:39 ` Pjotr Prins
2017-03-17 18:16 ` Mike Gran
2017-03-17 13:22 ` Eli Zaretskii
2017-03-18 14:04 ` Ludovic Courtès
2017-03-18 14:10 ` Eli Zaretskii
2017-03-19 15:57 ` Ludovic Courtès
2017-03-19 16:22 ` Eli Zaretskii
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=26e9ccc02b354bfb7e3dd80972fcc5b7@hypermove.net \
--to=amirouche@hypermove.net \
--cc=guile-user-bounces+amirouche=hypermove.net@gnu.org \
--cc=guile-user@gnu.org \
--cc=guix-devel@gnu.org \
--cc=wingo@pobox.com \
/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).