* GSoC ideas @ 2016-02-06 11:38 Pjotr Prins 2016-02-06 12:36 ` Ludovic Courtès 2016-02-06 23:53 ` Ben Woodcroft 0 siblings, 2 replies; 77+ messages in thread From: Pjotr Prins @ 2016-02-06 11:38 UTC (permalink / raw) To: guix-devel I have posted a GNU Guix project idea to SciRuby Foundation: https://groups.google.com/forum/?fromgroups#!topic/sciruby-dev/CZt75MuUxhg Basically a student can work on - Add JRuby support to Guix - Add rbx support to Guix - Add all testing frameworks to Guix (e.g. cucumber) - Add all web development frameworks to Guix (e.g. RoR) - Add Sciruby and related modules to Guix - Provide support to Travis-CI (probably through Docker) - Provide general Docker support - Integrate with IRuby notebook and nyaplot Guix has support for containers built-in, so we can even live without Docker. If you are interested, sign up with the SciRuby mailing list (sorry they use Google groups). Also I encourage other packagers to post project ideas to relevant organisations (R, SciPy anyone?). Pj. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 11:38 GSoC ideas Pjotr Prins @ 2016-02-06 12:36 ` Ludovic Courtès 2016-02-06 18:54 ` Christopher Allan Webber 2016-02-11 11:46 ` Manolis Ragkousis 2016-02-06 23:53 ` Ben Woodcroft 1 sibling, 2 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-02-06 12:36 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Pjotr Prins <pjotr.public12@thebird.nl> skribis: > I have posted a GNU Guix project idea to SciRuby Foundation: > > https://groups.google.com/forum/?fromgroups#!topic/sciruby-dev/CZt75MuUxhg Nice! (Well, except for Google Groups. ;-)) For the record, GNU is applying as an organization. Guix will be participating under the aegis of GNU as in previous years, so interested parties are welcome to start brainstorming! Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 12:36 ` Ludovic Courtès @ 2016-02-06 18:54 ` Christopher Allan Webber 2016-02-07 10:16 ` Efraim Flashner ` (2 more replies) 2016-02-11 11:46 ` Manolis Ragkousis 1 sibling, 3 replies; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-06 18:54 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Maybe we should have a place to collect ideas? Anyway, here would be my top items for GSoC: - An installer wizard (written in Guile of course!) - g-expressions which generate packages of the Guix package manager for .deb and .rpm based distros, and work to get those upstream in Debian and Fedora - Perhaps some kind of non-emacs, non-cli package (and system management?) interface. Maybe GTK based? ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 18:54 ` Christopher Allan Webber @ 2016-02-07 10:16 ` Efraim Flashner 2016-02-09 20:52 ` Ludovic Courtès 2016-03-25 20:32 ` myglc2 2016-02-08 10:45 ` Tomáš Čech 2016-02-09 20:49 ` Ludovic Courtès 2 siblings, 2 replies; 77+ messages in thread From: Efraim Flashner @ 2016-02-07 10:16 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1518 bytes --] On Sat, 06 Feb 2016 10:54:34 -0800 Christopher Allan Webber <cwebber@dustycloud.org> wrote: > Maybe we should have a place to collect ideas? > > Anyway, here would be my top items for GSoC: > > - An installer wizard (written in Guile of course!) > - g-expressions which generate packages of the Guix package manager for > .deb and .rpm based distros, and work to get those upstream in Debian > and Fedora > - Perhaps some kind of non-emacs, non-cli package (and system > management?) interface. Maybe GTK based? > In the interest of full disclosure, I should note that in all likelyhood I will still qualify as a student for this years GSoC. The three ideas that I had so far that are floating around in a text file are: - arm64 port -- This could probably be extended into getting a working system into place to have a u-boot -> grub loader, and/or using kexec to get a booted system to reboot into an arm libre-kernel. (for armv7 and arm64?) - ncurses installer -- my idea was Debian's installer can be considered ugly, but it does have everything needed to install a system. - GaPMaCt - Guix's amazing package manager and configure tool -- Same non-emacs package & system manager as above. Maybe a backend with a GTK or ncurses frontend. -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-07 10:16 ` Efraim Flashner @ 2016-02-09 20:52 ` Ludovic Courtès 2016-03-25 20:32 ` myglc2 1 sibling, 0 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-02-09 20:52 UTC (permalink / raw) To: Efraim Flashner; +Cc: guix-devel Efraim Flashner <efraim@flashner.co.il> skribis: > The three ideas that I had so far that are floating around in a text file are: > > - arm64 port -- This could probably be extended into getting a working system > into place to have a u-boot -> grub loader, and/or using kexec to get a > booted system to reboot into an arm libre-kernel. (for armv7 and arm64?) For aarch64 the first task would be to port Guix (not GuixSD) to that architecture (info "(guix) Bootstrapping"). If everything goes well, it can be relatively simple, but sometimes things don’t go well. ;-) Otherwise it’s surely an eligible project IMO. > - ncurses installer -- my idea was Debian's installer can be considered ugly, > but it does have everything needed to install a system. Right, that would be nice. > - GaPMaCt - Guix's amazing package manager and configure tool -- Same > non-emacs package & system manager as above. Maybe a backend with a GTK or > ncurses frontend. +1! Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-07 10:16 ` Efraim Flashner 2016-02-09 20:52 ` Ludovic Courtès @ 2016-03-25 20:32 ` myglc2 1 sibling, 0 replies; 77+ messages in thread From: myglc2 @ 2016-03-25 20:32 UTC (permalink / raw) To: Efraim Flashner; +Cc: guix-devel Efraim Flashner <efraim@flashner.co.il> writes: [...] > > - ncurses installer -- my idea was Debian's installer can be considered ugly, > but it does have everything needed to install a system. Couldn't agree more. Don't know if you are still considering this idea, but reading your comment and a couple more recent GSoC GuixSD installer proposals prompted me to write some general thoughts about Guix installation which you might find interesting: http://article.gmane.org/gmane.comp.gnu.guix.devel/18206 Best - George ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 18:54 ` Christopher Allan Webber 2016-02-07 10:16 ` Efraim Flashner @ 2016-02-08 10:45 ` Tomáš Čech 2016-02-08 11:37 ` Efraim Flashner 2016-02-08 17:24 ` Christopher Allan Webber 2016-02-09 20:49 ` Ludovic Courtès 2 siblings, 2 replies; 77+ messages in thread From: Tomáš Čech @ 2016-02-08 10:45 UTC (permalink / raw) To: guix-devel [-- Attachment #1: Type: text/plain, Size: 865 bytes --] On Sat, Feb 06, 2016 at 10:54:34AM -0800, Christopher Allan Webber wrote: >Maybe we should have a place to collect ideas? > >Anyway, here would be my top items for GSoC: > > - An installer wizard (written in Guile of course!) > - g-expressions which generate packages of the Guix package manager for > .deb and .rpm based distros, and work to get those upstream in Debian > and Fedora What would be purpose of that? Do you plan to use some other store path so it won't collide with Guix maintained installation on the same machine? OTOH it may be interesting to generate only (in my case) RPM metadata so native system's package manager can track Guix generated files and use pre/post install scripts for interactions with Guix (to install/remove/protect them). That would glue Guix to system even better. Just wild idea when thinking about your idea... S_W [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 181 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-08 10:45 ` Tomáš Čech @ 2016-02-08 11:37 ` Efraim Flashner 2016-02-08 17:24 ` Christopher Allan Webber 1 sibling, 0 replies; 77+ messages in thread From: Efraim Flashner @ 2016-02-08 11:37 UTC (permalink / raw) To: Tomáš Čech; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1379 bytes --] On Mon, 8 Feb 2016 11:45:30 +0100 Tomáš Čech <sleep_walker@gnu.org> wrote: > On Sat, Feb 06, 2016 at 10:54:34AM -0800, Christopher Allan Webber wrote: > >Maybe we should have a place to collect ideas? > > > >Anyway, here would be my top items for GSoC: > > > > - An installer wizard (written in Guile of course!) > > - g-expressions which generate packages of the Guix package manager for > > .deb and .rpm based distros, and work to get those upstream in Debian > > and Fedora > > What would be purpose of that? Do you plan to use some other store path so it > won't collide with Guix maintained installation on the same machine? > > OTOH it may be interesting to generate only (in my case) RPM metadata > so native system's package manager can track Guix generated files and > use pre/post install scripts for interactions with Guix (to > install/remove/protect them). That would glue Guix to system even > better. Just wild idea when thinking about your idea... > > S_W like checkinstall? It would be nice if a foreign distro to have graphical programs just work, integrated into the system like their own native programs. -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-08 10:45 ` Tomáš Čech 2016-02-08 11:37 ` Efraim Flashner @ 2016-02-08 17:24 ` Christopher Allan Webber 2016-02-08 18:45 ` Thompson, David 2016-03-25 20:52 ` myglc2 1 sibling, 2 replies; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-08 17:24 UTC (permalink / raw) To: Tomáš Čech; +Cc: guix-devel Tomáš Čech writes: > On Sat, Feb 06, 2016 at 10:54:34AM -0800, Christopher Allan Webber wrote: >>Maybe we should have a place to collect ideas? >> >>Anyway, here would be my top items for GSoC: >> >> - An installer wizard (written in Guile of course!) >> - g-expressions which generate packages of the Guix package manager for >> .deb and .rpm based distros, and work to get those upstream in Debian >> and Fedora > > What would be purpose of that? Do you plan to use some other store path so it > won't collide with Guix maintained installation on the same machine? > > OTOH it may be interesting to generate only (in my case) RPM metadata > so native system's package manager can track Guix generated files and > use pre/post install scripts for interactions with Guix (to > install/remove/protect them). That would glue Guix to system even > better. Just wild idea when thinking about your idea... > > S_W Sorry, I was unclear. What I'm talking about is Guix *as a package manager* to be able to be available on foreigh distros so I can encourage friends to do: apt-get install guix ... and then do user-space hacking with Guix, and use "guix environment" for hacking on my projects... I think we'd increase our userbase dramatically by getting Guix as a user-space pacakge manager into various distros. The gexp part was because of the gexp that (iirc) generates the "tarball install" method of things as inspiration... could we build something similar that builds a .deb or .rpm of Guix as an install method? - Chris ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-08 17:24 ` Christopher Allan Webber @ 2016-02-08 18:45 ` Thompson, David 2016-02-08 19:47 ` Christopher Allan Webber 2016-03-25 20:52 ` myglc2 1 sibling, 1 reply; 77+ messages in thread From: Thompson, David @ 2016-02-08 18:45 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel On Mon, Feb 8, 2016 at 12:24 PM, Christopher Allan Webber <cwebber@dustycloud.org> wrote: > What I'm talking about is Guix *as a package > manager* to be able to be available on foreigh distros so I can > encourage friends to do: > > apt-get install guix > > ... and then do user-space hacking with Guix, and use "guix environment" > for hacking on my projects... I think we'd increase our userbase > dramatically by getting Guix as a user-space pacakge manager into > various distros. Such packages would be convenient for users of these distros, but getting them into Debian and Fedora proper is unlikely because Guix does not conform to the FHS. - Dave ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-08 18:45 ` Thompson, David @ 2016-02-08 19:47 ` Christopher Allan Webber 2016-02-08 20:43 ` Pjotr Prins 0 siblings, 1 reply; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-08 19:47 UTC (permalink / raw) To: Thompson, David; +Cc: guix-devel Thompson, David writes: > On Mon, Feb 8, 2016 at 12:24 PM, Christopher Allan Webber > <cwebber@dustycloud.org> wrote: >> What I'm talking about is Guix *as a package >> manager* to be able to be available on foreigh distros so I can >> encourage friends to do: >> >> apt-get install guix >> >> ... and then do user-space hacking with Guix, and use "guix environment" >> for hacking on my projects... I think we'd increase our userbase >> dramatically by getting Guix as a user-space pacakge manager into >> various distros. > > Such packages would be convenient for users of these distros, but > getting them into Debian and Fedora proper is unlikely because Guix > does not conform to the FHS. > > - Dave So, I talked about this with Stefano Zacchiroli while at FOSDEM. He suggested that we could do /opt/g/ or something like that and we *could* get Guix in as a package manager to Debian. Sure, it wouldn't be able to use the Hydra packages, but it's probably okayish. (We *might* be able to get Guix in even using the Hydra packages if the Guix daemon could have a wrapper which bind-mounts it to /gnu/ or something, when it starts up? That might be a bit over the top, but maybe would allow us to have both. I'm not so sure about this strategy though, I've just been bouncing it around in my head.) We could also build apt / rpm packages which we just provide ourselves, on the Guix website, or by providing some PPA'ish thing. I would have preferred this myself when I started running Debian on Guix... and in this route we could keep everything as it already is. (But people will have to take an extra step to "get to" those nice packages.) - Chris ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-08 19:47 ` Christopher Allan Webber @ 2016-02-08 20:43 ` Pjotr Prins 2016-02-09 10:36 ` Installing Guix on foreign distros Ludovic Courtès 2016-02-23 23:00 ` GSoC ideas Diane Trout 0 siblings, 2 replies; 77+ messages in thread From: Pjotr Prins @ 2016-02-08 20:43 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel On Mon, Feb 08, 2016 at 11:47:31AM -0800, Christopher Allan Webber wrote: > So, I talked about this with Stefano Zacchiroli while at FOSDEM. He > suggested that we could do /opt/g/ or something like that and we *could* > get Guix in as a package manager to Debian. Sure, it wouldn't be able > to use the Hydra packages, but it's probably okayish. Unless users get binaries they won't be happy. > We could also build apt / rpm packages which we just provide ourselves, > on the Guix website, or by providing some PPA'ish thing. I would have > preferred this myself when I started running Debian on Guix... and in > this route we could keep everything as it already is. (But people will > have to take an extra step to "get to" those nice packages.) That looks like the way forward to me. Such a package can setup and start the daemon - which is enough. No need to get the blessing from the distributions themselves (will take time, but it will come - there really is no difference with allowing foreign packages to work anyway). Pj. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Installing Guix on foreign distros 2016-02-08 20:43 ` Pjotr Prins @ 2016-02-09 10:36 ` Ludovic Courtès 2016-02-10 8:53 ` Tomáš Čech 2016-02-23 23:00 ` GSoC ideas Diane Trout 1 sibling, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-02-09 10:36 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Pjotr Prins <pjotr.public12@thebird.nl> skribis: > On Mon, Feb 08, 2016 at 11:47:31AM -0800, Christopher Allan Webber wrote: >> So, I talked about this with Stefano Zacchiroli while at FOSDEM. He >> suggested that we could do /opt/g/ or something like that and we *could* >> get Guix in as a package manager to Debian. Sure, it wouldn't be able >> to use the Hydra packages, but it's probably okayish. > > Unless users get binaries they won't be happy. +1 >> We could also build apt / rpm packages which we just provide ourselves, >> on the Guix website, or by providing some PPA'ish thing. I would have >> preferred this myself when I started running Debian on Guix... and in >> this route we could keep everything as it already is. (But people will >> have to take an extra step to "get to" those nice packages.) > > That looks like the way forward to me. Such a package can setup and > start the daemon - which is enough. No need to get the blessing from > the distributions themselves (will take time, but it will come - there > really is no difference with allowing foreign packages to work anyway). Yeah, I think you’re right. There are already people who wrote Arch/Parabola and RPM (openSuSE) packages, AFAIK. I’m not sure what the status is? If someone familiar with dpkg could chime in, we could host the infrastructure to build the .deb somewhere. Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Installing Guix on foreign distros 2016-02-09 10:36 ` Installing Guix on foreign distros Ludovic Courtès @ 2016-02-10 8:53 ` Tomáš Čech 2016-02-10 9:42 ` Ricardo Wurmus 2016-02-10 12:44 ` Jookia 0 siblings, 2 replies; 77+ messages in thread From: Tomáš Čech @ 2016-02-10 8:53 UTC (permalink / raw) To: guix-devel [-- Attachment #1: Type: text/plain, Size: 986 bytes --] On Tue, Feb 09, 2016 at 11:36:24AM +0100, Ludovic Courtès wrote: >There are already people who wrote Arch/Parabola and RPM (openSuSE) >packages, AFAIK. I’m not sure what the status is? For openSUSE ecosystem I maintain package in system:packagemanagers project of our Open Build Service. It means it doesn't live in the main package repository but it is easy to install. https://software.opensuse.org/download/package?project=system:packagemanager&package=guix I'm trying to push that to the main distribution but for that the package may need some more work because I need to get rid of foreign binaries (the ones in $PREFIX/share/guile/site/2.0/gnu/packages/bootstrap/). So `zypper in guix' for all openSUSE users is still my goal. Any help on that from Guix side would be appreciated. Besides this, thanks to our the OBS I should be able to setup build for other RPM distributions (Fedora, CentOS) but it wasn't my focus now. Best regards, Tomas [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 181 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Installing Guix on foreign distros 2016-02-10 8:53 ` Tomáš Čech @ 2016-02-10 9:42 ` Ricardo Wurmus 2016-02-10 12:44 ` Jookia 1 sibling, 0 replies; 77+ messages in thread From: Ricardo Wurmus @ 2016-02-10 9:42 UTC (permalink / raw) To: Tomáš Čech; +Cc: guix-devel Tomáš Čech <sleep_walker@gnu.org> writes: > On Tue, Feb 09, 2016 at 11:36:24AM +0100, Ludovic Courtès wrote: >>There are already people who wrote Arch/Parabola and RPM (openSuSE) >>packages, AFAIK. I’m not sure what the status is? > > For openSUSE ecosystem I maintain package in system:packagemanagers > project of our Open Build Service. It means it doesn't live in the > main package repository but it is easy to install. > > https://software.opensuse.org/download/package?project=system:packagemanager&package=guix > > I'm trying to push that to the main distribution but for that the > package may need some more work because I need to get rid of foreign > binaries (the ones in > $PREFIX/share/guile/site/2.0/gnu/packages/bootstrap/). So `zypper in > guix' for all openSUSE users is still my goal. The bootstrap binaries form the roots of the dependency graph. Modifying them results in different hashes for all packages. I learned this when a colleague accidentally modified these files in our deployment, which made Guix refuse all of the substitutes from Hydra and instead rebuilt the world locally. I don’t think you can realistically get rid of them. ~~ Ricardo ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Installing Guix on foreign distros 2016-02-10 8:53 ` Tomáš Čech 2016-02-10 9:42 ` Ricardo Wurmus @ 2016-02-10 12:44 ` Jookia 2016-02-11 5:44 ` Ricardo Wurmus 1 sibling, 1 reply; 77+ messages in thread From: Jookia @ 2016-02-10 12:44 UTC (permalink / raw) To: guix-devel On Wed, Feb 10, 2016 at 09:53:01AM +0100, Tomáš Čech wrote: > I'm trying to push that to the main distribution but for that the > package may need some more work because I need to get rid of foreign > binaries (the ones in > $PREFIX/share/guile/site/2.0/gnu/packages/bootstrap/). So `zypper in > guix' for all openSUSE users is still my goal. > > Any help on that from Guix side would be appreciated. > > Besides this, thanks to our the OBS I should be able to setup build > for other RPM distributions (Fedora, CentOS) but it wasn't my focus > now. > > Best regards, > > Tomas I brought this up a bit earlier in IRC but you could rebuild the bootstrap binaries- but then they'd just be identical to the ones shipped. So are they really foreign then? Jookia. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Installing Guix on foreign distros 2016-02-10 12:44 ` Jookia @ 2016-02-11 5:44 ` Ricardo Wurmus 2016-02-11 10:54 ` Bootstrapping Ludovic Courtès 0 siblings, 1 reply; 77+ messages in thread From: Ricardo Wurmus @ 2016-02-11 5:44 UTC (permalink / raw) To: Jookia; +Cc: guix-devel Jookia <166291@gmail.com> writes: > On Wed, Feb 10, 2016 at 09:53:01AM +0100, Tomáš Čech wrote: >> I'm trying to push that to the main distribution but for that the >> package may need some more work because I need to get rid of foreign >> binaries (the ones in >> $PREFIX/share/guile/site/2.0/gnu/packages/bootstrap/). So `zypper in >> guix' for all openSUSE users is still my goal. >> >> Any help on that from Guix side would be appreciated. >> >> Besides this, thanks to our the OBS I should be able to setup build >> for other RPM distributions (Fedora, CentOS) but it wasn't my focus >> now. >> >> Best regards, >> >> Tomas > > I brought this up a bit earlier in IRC but you could rebuild the bootstrap > binaries- but then they'd just be identical to the ones shipped. So are they > really foreign then? I wonder: can you *really* rebuild them? Would that not require reproducible builds, something that we try to achieve with Guix? These tarballs come from their upstream release servers, if I’m not mistaken. Since the bootstrapping step starts with statically linked binaries of tar (and some other tools) and the tarballs that are then unpacked with that binary of tar, I don’t see how these binaries could possibly be reproduced *exactly* on a foreign distro and seamlessly replace the bundled binaries. It would be amazing and quite a surprise if you *were* able to rebuild them and thus reproduce them bit for bit. ~~ I wished we could reduce the number of bootstrap binaries down to little more than just Guile and an old C compiler, i.e. implement a subset of tar in Guile and use that to unpack the tarballs, then use the simple C compiler to compile an old version of GCC (without C++), then use that version of GCC to compile a GCC capable of building C++, then use that GCC to build a modern GCC... Since Guile is mostly written in Guile (and it is probably somewhat easier to come to a point to trust it) there may be value in trying to bootstrap from even less. ~~ Practically speaking, though, you probably cannot get around the bootstrap binaries — not unless there was a way to arbitrarily manipulate hashes or sneakily “seed” hashes at a certain level into the graph (e.g. tell Guix that the binaries of GCC that are in the system always have a particular hash even if they do not). I don’t think a system like this would be desirable in general as it undermines reproducibility and trust. (I do see that something like this might be useful for a shoddy port to MacOS, but ... ugh! What’s the point in that!) ~~ Rambling Ricardo ^ permalink raw reply [flat|nested] 77+ messages in thread
* Bootstrapping 2016-02-11 5:44 ` Ricardo Wurmus @ 2016-02-11 10:54 ` Ludovic Courtès 0 siblings, 0 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-02-11 10:54 UTC (permalink / raw) To: Ricardo Wurmus; +Cc: guix-devel Ricardo Wurmus <rekado@elephly.net> skribis: > Jookia <166291@gmail.com> writes: [...] >> I brought this up a bit earlier in IRC but you could rebuild the bootstrap >> binaries- but then they'd just be identical to the ones shipped. So are they >> really foreign then? > > I wonder: can you *really* rebuild them? First, you’d need to build them as explained at <http://www.gnu.org/software/guix/manual/html_node/Bootstrapping.html#Building-the-Bootstrap-Binaries>, but starting from the exact same commit that was used to build them. > Would that not require reproducible builds, something that we try to > achieve with Guix? Indeed, some of the packages in the bootstrap binaries are reproducible, some are not. See <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00159.html> for a previous experiment in that area. > I wished we could reduce the number of bootstrap binaries down to little > more than just Guile and an old C compiler, i.e. implement a subset of > tar in Guile and use that to unpack the tarballs, then use the simple C > compiler to compile an old version of GCC (without C++), then use that > version of GCC to compile a GCC capable of building C++, then use that > GCC to build a modern GCC... > > Since Guile is mostly written in Guile (and it is probably somewhat > easier to come to a point to trust it) there may be value in trying to > bootstrap from even less. Definitely! Just like we have cpio, FTP and HTTP clients, etc. in Scheme, we could incrementally have tiny replacements for some of the things currently found in the bootstrap binaries. They don’t need to be full-featured. This is one of the topics discussed as the reproducible summit: https://lists.gnu.org/archive/html/guix-devel/2015-12/msg00107.html https://reproducible-builds.org/events/athens2015/bootstrapping/ Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-08 20:43 ` Pjotr Prins 2016-02-09 10:36 ` Installing Guix on foreign distros Ludovic Courtès @ 2016-02-23 23:00 ` Diane Trout 2016-02-23 23:52 ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber ` (2 more replies) 1 sibling, 3 replies; 77+ messages in thread From: Diane Trout @ 2016-02-23 23:00 UTC (permalink / raw) To: Pjotr Prins, Christopher Allan Webber; +Cc: guix-devel > That looks like the way forward to me. Such a package can setup and > start the daemon - which is enough. No need to get the blessing from > the distributions themselves (will take time, but it will come - > there > really is no difference with allowing foreign packages to work > anyway). I wrote a basic Debian recipe to build guix, create the build users, and install the systemd config file. https://github.com/detrout/debian-guix Currently I've only split the guix package into the emacs components and everything else. I'd thought about splitting the daemon out into its own package, but I wasn't sure what the daemon depended on. The daemon is still using the default /gnu/store path, and the user needs to manually run guix authorize if they want to use hydra binaries. The package is currently based on the stable 0.9.0 release, and I'm not sure how security updates make it into a guix store if you without updating the scheme packaging source tree. It might be nice to prompt the user if they wanted to authorize hydra on install but that's not implemented. Currently its unlikely to go into Debian because Debian policy requires everything to be built from source, and currently the Guix build process downloads some bootstrap binaries. However with the current packaging "guix environment --pure bash -- bash" does give me a clean guix environment, and the guix info docs get installed when Debian emacs can see them. Diane ^ permalink raw reply [flat|nested] 77+ messages in thread
* Guix on Debian (was: GSoC ideas) 2016-02-23 23:00 ` GSoC ideas Diane Trout @ 2016-02-23 23:52 ` Christopher Allan Webber 2016-02-24 0:02 ` Leo Famulari 2016-02-24 0:32 ` Guix on Debian (was: GSoC ideas) Diane Trout 2016-02-24 19:14 ` GSoC ideas Jan Nieuwenhuizen 2016-02-25 18:10 ` Ludovic Courtès 2 siblings, 2 replies; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-23 23:52 UTC (permalink / raw) To: Diane Trout; +Cc: guix-devel Diane Trout writes: >> That looks like the way forward to me. Such a package can setup and >> start the daemon - which is enough. No need to get the blessing from >> the distributions themselves (will take time, but it will come - >> there >> really is no difference with allowing foreign packages to work >> anyway). > > > I wrote a basic Debian recipe to build guix, create the build users, > and install the systemd config file. > > https://github.com/detrout/debian-guix > > Currently I've only split the guix package into the emacs components > and everything else. I'd thought about splitting the daemon out into > its own package, but I wasn't sure what the daemon depended on. > > The daemon is still using the default /gnu/store path, and the user > needs to manually run guix authorize if they want to use hydra > binaries. The package is currently based on the stable 0.9.0 release, > and I'm not sure how security updates make it into a guix store if you > without updating the scheme packaging source tree. > > It might be nice to prompt the user if they wanted to authorize hydra > on install but that's not implemented. > > Currently its unlikely to go into Debian because Debian policy requires > everything to be built from source, and currently the Guix build > process downloads some bootstrap binaries. > > However with the current packaging "guix environment --pure bash -- > bash" does give me a clean guix environment, and the guix info docs get > installed when Debian emacs can see them. > > Diane Great work Diane! Are those bootstrapping binaries really necessary for getting Guix going? I guess for some reason I thought if you did the whole configure/make/etc dance it wouldn't be but maybe I'm wrong. Maybe this is a good step towards getting a Guix .deb we self-host on the Guix website? - Chris ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-23 23:52 ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber @ 2016-02-24 0:02 ` Leo Famulari 2016-02-24 9:03 ` Ricardo Wurmus 2016-02-24 0:32 ` Guix on Debian (was: GSoC ideas) Diane Trout 1 sibling, 1 reply; 77+ messages in thread From: Leo Famulari @ 2016-02-24 0:02 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel On Tue, Feb 23, 2016 at 03:52:30PM -0800, Christopher Allan Webber wrote: > Diane Trout writes: > > >> That looks like the way forward to me. Such a package can setup and > >> start the daemon - which is enough. No need to get the blessing from > >> the distributions themselves (will take time, but it will come - > >> there > >> really is no difference with allowing foreign packages to work > >> anyway). > > > > > > I wrote a basic Debian recipe to build guix, create the build users, > > and install the systemd config file. > > > > https://github.com/detrout/debian-guix > > > > Currently I've only split the guix package into the emacs components > > and everything else. I'd thought about splitting the daemon out into > > its own package, but I wasn't sure what the daemon depended on. > > > > The daemon is still using the default /gnu/store path, and the user > > needs to manually run guix authorize if they want to use hydra > > binaries. The package is currently based on the stable 0.9.0 release, > > and I'm not sure how security updates make it into a guix store if you > > without updating the scheme packaging source tree. > > > > It might be nice to prompt the user if they wanted to authorize hydra > > on install but that's not implemented. > > > > Currently its unlikely to go into Debian because Debian policy requires > > everything to be built from source, and currently the Guix build > > process downloads some bootstrap binaries. > > > > However with the current packaging "guix environment --pure bash -- > > bash" does give me a clean guix environment, and the guix info docs get > > installed when Debian emacs can see them. > > > > Diane > > Great work Diane! > > Are those bootstrapping binaries really necessary for getting Guix > going? I guess for some reason I thought if you did the whole > configure/make/etc dance it wouldn't be but maybe I'm wrong. My understanding is that if you alter the bootstrap binaries, the entire dependency graph will change, forcing a rebuild of everything. And of course, the altered binaries may present different interfaces, breaking things as well. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-24 0:02 ` Leo Famulari @ 2016-02-24 9:03 ` Ricardo Wurmus 2016-02-24 9:16 ` Efraim Flashner 0 siblings, 1 reply; 77+ messages in thread From: Ricardo Wurmus @ 2016-02-24 9:03 UTC (permalink / raw) To: Leo Famulari; +Cc: guix-devel Leo Famulari <leo@famulari.name> writes: >> Are those bootstrapping binaries really necessary for getting Guix >> going? I guess for some reason I thought if you did the whole >> configure/make/etc dance it wouldn't be but maybe I'm wrong. > > My understanding is that if you alter the bootstrap binaries, the entire > dependency graph will change, forcing a rebuild of everything. And of > course, the altered binaries may present different interfaces, breaking > things as well. This is correct. Back then we ran into trouble with our Guix installation at work when someone modified permission bits on the bootstrap binaries, causing a rebuild of everything. It took us a while to find out the cause and revert the change. Some of the bootstrap binaries can be reproduced from source (if you make sure to follow the Guix recipes), but others (like Guile IIRC) don’t have reproducible build systems, so reproducing the exact same binaries without using Guix is going to be very challenging. I don’t know if it is possible and if it would make sense to cheat, i.e. just lie to Guix about the hashes of the bootstrap binaries. ~~ Ricardo ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-24 9:03 ` Ricardo Wurmus @ 2016-02-24 9:16 ` Efraim Flashner 2016-02-24 9:36 ` Jookia 0 siblings, 1 reply; 77+ messages in thread From: Efraim Flashner @ 2016-02-24 9:16 UTC (permalink / raw) To: Ricardo Wurmus; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1303 bytes --] On Wed, 24 Feb 2016 10:03:34 +0100 Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> wrote: > Leo Famulari <leo@famulari.name> writes: > > [...] > [...] > > This is correct. Back then we ran into trouble with our Guix > installation at work when someone modified permission bits on the > bootstrap binaries, causing a rebuild of everything. It took us a while > to find out the cause and revert the change. > > Some of the bootstrap binaries can be reproduced from source (if you > make sure to follow the Guix recipes), but others (like Guile IIRC) > don’t have reproducible build systems, so reproducing the exact same > binaries without using Guix is going to be very challenging. > > I don’t know if it is possible and if it would make sense to cheat, > i.e. just lie to Guix about the hashes of the bootstrap binaries. > > ~~ Ricardo > What about taking it a step further and having a multi-level bootstrap process like when we have the core-updates? If we bootstrap away enough times would we end up with the bootstrap binaries we have now? -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-24 9:16 ` Efraim Flashner @ 2016-02-24 9:36 ` Jookia 2016-02-25 18:15 ` Bootstrap binaries Ludovic Courtès 0 siblings, 1 reply; 77+ messages in thread From: Jookia @ 2016-02-24 9:36 UTC (permalink / raw) To: Efraim Flashner; +Cc: guix-devel On Wed, Feb 24, 2016 at 11:16:51AM +0200, Efraim Flashner wrote: > What about taking it a step further and having a multi-level bootstrap > process like when we have the core-updates? If we bootstrap away enough times > would we end up with the bootstrap binaries we have now? From what I understand the bootstrap binaries aren't reproducible yet. If they were, it would solve this issue as we could build them again. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Bootstrap binaries 2016-02-24 9:36 ` Jookia @ 2016-02-25 18:15 ` Ludovic Courtès 2016-02-25 20:26 ` Christopher Allan Webber 0 siblings, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-02-25 18:15 UTC (permalink / raw) To: Jookia; +Cc: guix-devel Jookia <166291@gmail.com> skribis: > On Wed, Feb 24, 2016 at 11:16:51AM +0200, Efraim Flashner wrote: >> What about taking it a step further and having a multi-level bootstrap >> process like when we have the core-updates? If we bootstrap away enough times >> would we end up with the bootstrap binaries we have now? > > From what I understand the bootstrap binaries aren't reproducible yet. Depends on what kind of reproducibility we’re talking about. It’s simple to build bootstrap binaries: https://www.gnu.org/software/guix/manual/html_node/Bootstrapping.html#Building-the-Bootstrap-Binaries I think they are all bit-for-bit reproducible (that is, you can use --rounds=3 and everything is fine), except for Guile due to <http://bugs.gnu.org/20272>.) However, if you build them today, you’ll obviously get something different from the bootstrap binaries we currently use, which were from Guile 2.0.9, libc 2.19, GCC 4.7.2, some old Coreutils, etc. HTH, Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Bootstrap binaries 2016-02-25 18:15 ` Bootstrap binaries Ludovic Courtès @ 2016-02-25 20:26 ` Christopher Allan Webber 2016-02-26 23:19 ` Ludovic Courtès 0 siblings, 1 reply; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-25 20:26 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès writes: > Jookia <166291@gmail.com> skribis: > >> On Wed, Feb 24, 2016 at 11:16:51AM +0200, Efraim Flashner wrote: >>> What about taking it a step further and having a multi-level bootstrap >>> process like when we have the core-updates? If we bootstrap away enough times >>> would we end up with the bootstrap binaries we have now? >> >> From what I understand the bootstrap binaries aren't reproducible yet. > > Depends on what kind of reproducibility we’re talking about. It’s > simple to build bootstrap binaries: > > https://www.gnu.org/software/guix/manual/html_node/Bootstrapping.html#Building-the-Bootstrap-Binaries > > I think they are all bit-for-bit reproducible (that is, you can use > --rounds=3 and everything is fine), except for Guile due to > <http://bugs.gnu.org/20272>.) > > However, if you build them today, you’ll obviously get something > different from the bootstrap binaries we currently use, which were from > Guile 2.0.9, libc 2.19, GCC 4.7.2, some old Coreutils, etc. > > HTH, > Ludo’. It seems like a good idea, once that bug in Guile is fixed, to move over to a new set of bootstrap binaries... even if this involves some difficulty for Guix users today. It would certainly be a good thing to do before we hit 1.0, whenever that is. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Bootstrap binaries 2016-02-25 20:26 ` Christopher Allan Webber @ 2016-02-26 23:19 ` Ludovic Courtès 2016-02-28 10:51 ` Jookia 0 siblings, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-02-26 23:19 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel Christopher Allan Webber <cwebber@dustycloud.org> skribis: > Ludovic Courtès writes: > >> Jookia <166291@gmail.com> skribis: >> >>> On Wed, Feb 24, 2016 at 11:16:51AM +0200, Efraim Flashner wrote: >>>> What about taking it a step further and having a multi-level bootstrap >>>> process like when we have the core-updates? If we bootstrap away enough times >>>> would we end up with the bootstrap binaries we have now? >>> >>> From what I understand the bootstrap binaries aren't reproducible yet. >> >> Depends on what kind of reproducibility we’re talking about. It’s >> simple to build bootstrap binaries: >> >> https://www.gnu.org/software/guix/manual/html_node/Bootstrapping.html#Building-the-Bootstrap-Binaries >> >> I think they are all bit-for-bit reproducible (that is, you can use >> --rounds=3 and everything is fine), except for Guile due to >> <http://bugs.gnu.org/20272>.) >> >> However, if you build them today, you’ll obviously get something >> different from the bootstrap binaries we currently use, which were from >> Guile 2.0.9, libc 2.19, GCC 4.7.2, some old Coreutils, etc. >> >> HTH, >> Ludo’. > > It seems like a good idea, once that bug in Guile is fixed, to move over > to a new set of bootstrap binaries... even if this involves some > difficulty for Guix users today. It would certainly be a good thing to > do before we hit 1.0, whenever that is. I prefer to change those binaries as rarely as possible. Intuitively (and unscientifically), it gives more confidence to keep using the same old binaries wrt. Ken Thompson attacks. Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Bootstrap binaries 2016-02-26 23:19 ` Ludovic Courtès @ 2016-02-28 10:51 ` Jookia 2016-02-28 15:08 ` Ludovic Courtès 0 siblings, 1 reply; 77+ messages in thread From: Jookia @ 2016-02-28 10:51 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On Sat, Feb 27, 2016 at 12:19:04AM +0100, Ludovic Courtès wrote: > I prefer to change those binaries as rarely as possible. Intuitively > (and unscientifically), it gives more confidence to keep using the same > old binaries wrt. Ken Thompson attacks. I'm not sure about that, if we could establish the binaries could be reproducibly built using the current bootstrap binaries it sounds like it could be fine. Having reproducible bootstrap binaries seems like something incredibly useful especially for packagers that for whatever reason want to verify that the binaries can be built with Guix before signing them. > Ludo’. Jookia. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Bootstrap binaries 2016-02-28 10:51 ` Jookia @ 2016-02-28 15:08 ` Ludovic Courtès 2016-02-28 15:10 ` Jookia 0 siblings, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-02-28 15:08 UTC (permalink / raw) To: Jookia; +Cc: guix-devel Jookia <166291@gmail.com> skribis: > On Sat, Feb 27, 2016 at 12:19:04AM +0100, Ludovic Courtès wrote: >> I prefer to change those binaries as rarely as possible. Intuitively >> (and unscientifically), it gives more confidence to keep using the same >> old binaries wrt. Ken Thompson attacks. > > I'm not sure about that, if we could establish the binaries could be > reproducibly built using the current bootstrap binaries it sounds like it could > be fine. Having reproducible bootstrap binaries seems like something incredibly > useful especially for packagers that for whatever reason want to verify that the > binaries can be built with Guix before signing them. We would have to update them every time we change GCC, Guile, Coreutils, etc. or one of their dependencies, which sounds impractical or even infeasible to me. Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Bootstrap binaries 2016-02-28 15:08 ` Ludovic Courtès @ 2016-02-28 15:10 ` Jookia 2016-02-29 5:22 ` Christopher Allan Webber 2016-02-29 10:01 ` Ludovic Courtès 0 siblings, 2 replies; 77+ messages in thread From: Jookia @ 2016-02-28 15:10 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On Sun, Feb 28, 2016 at 04:08:00PM +0100, Ludovic Courtès wrote: > We would have to update them every time we change GCC, Guile, Coreutils, > etc. or one of their dependencies, which sounds impractical or even > infeasible to me. Perhaps there's some miscommunication here- the problem right now is that the binaries aren't reproducible at all. Having them switched to reproducible builds once and then tagging the Guix commit used would probably be enough to fix the problem. I don't think we need to rebuild them every time. > Ludo’. Jookia. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Bootstrap binaries 2016-02-28 15:10 ` Jookia @ 2016-02-29 5:22 ` Christopher Allan Webber 2016-02-29 10:01 ` Ludovic Courtès 1 sibling, 0 replies; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-29 5:22 UTC (permalink / raw) To: Jookia; +Cc: guix-devel Jookia writes: > On Sun, Feb 28, 2016 at 04:08:00PM +0100, Ludovic Courtès wrote: >> We would have to update them every time we change GCC, Guile, Coreutils, >> etc. or one of their dependencies, which sounds impractical or even >> infeasible to me. > > Perhaps there's some miscommunication here- the problem right now is that the > binaries aren't reproducible at all. Having them switched to reproducible builds > once and then tagging the Guix commit used would probably be enough to fix the > problem. I don't think we need to rebuild them every time. Yes, this is what I was originally suggesting! ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Bootstrap binaries 2016-02-28 15:10 ` Jookia 2016-02-29 5:22 ` Christopher Allan Webber @ 2016-02-29 10:01 ` Ludovic Courtès 1 sibling, 0 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-02-29 10:01 UTC (permalink / raw) To: Jookia; +Cc: guix-devel Jookia <166291@gmail.com> skribis: > On Sun, Feb 28, 2016 at 04:08:00PM +0100, Ludovic Courtès wrote: >> We would have to update them every time we change GCC, Guile, Coreutils, >> etc. or one of their dependencies, which sounds impractical or even >> infeasible to me. > > Perhaps there's some miscommunication here- the problem right now is that the > binaries aren't reproducible at all. Having them switched to reproducible builds > once and then tagging the Guix commit used would probably be enough to fix the > problem. I don't think we need to rebuild them every time. Ah sure, I agree! Though to be on the safe side, we’d need to do diverse double compilation (DDC) of these binaries, à la Wheeler. Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-23 23:52 ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber 2016-02-24 0:02 ` Leo Famulari @ 2016-02-24 0:32 ` Diane Trout 2016-02-24 7:04 ` Pjotr Prins 1 sibling, 1 reply; 77+ messages in thread From: Diane Trout @ 2016-02-24 0:32 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel > Great work Diane! > > Are those bootstrapping binaries really necessary for getting Guix > going? I guess for some reason I thought if you did the whole > configure/make/etc dance it wouldn't be but maybe I'm wrong. > > Maybe this is a good step towards getting a Guix .deb we self-host on > the Guix website? The bootstrap binaries are used to compute the hashes for Guix's initial packages which then influence all of the downstream hashes. I know that shipping sourceless binaries is against Debian policy. I do wonder if there's a way to produce the same bootstrap binaries from Debian components. Also one of your other messages suggested the /gnu directory is also against Debian policy. If there's a way resolve those things, there's probably a much better chance to get it into Debian. But other than that I think my postrm script is incomplete and certainly needs some more testing but this can certainly turn into .debs hosted by guix. Diane ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-24 0:32 ` Guix on Debian (was: GSoC ideas) Diane Trout @ 2016-02-24 7:04 ` Pjotr Prins 2016-02-24 17:20 ` Thompson, David 0 siblings, 1 reply; 77+ messages in thread From: Pjotr Prins @ 2016-02-24 7:04 UTC (permalink / raw) To: Diane Trout; +Cc: guix-devel On Tue, Feb 23, 2016 at 04:32:30PM -0800, Diane Trout wrote: > Also one of your other messages suggested the /gnu directory is also > against Debian policy. > > If there's a way resolve those things, there's probably a much better > chance to get it into Debian. Yes, this in old discussion (also in Nix). For sure, if guix built in /usr/local and $HOME it would be much easier to get by the policy folks (also in HPC environments). There is, however, a good reason to make it a blatant /gnu outside the FHS. The store contains everything that normally goes into the full FHS. It lives outside the FHS. If we make it part of the FHS (even in one subdirectory) it would confuse things badly. I think the clarity matters to system administrators AND users. Also, for true reproducibility, we need one path. Arguably it could be a different one, but to make sure a package is exactly the same in its binary form it needs to be running from a root point. It took me quite some time to come round to this idea. But now I am really convinced it is the only way forward. Administrators can use chroot and containers/VM to mount /gnu - so, there is no real technical concern. Guix is not tied to one server. If they think it important, the Debian people can, at some point, decide to take Guix, create their own caching server, and distribute /usr/local/guix. They have done far more intrusive things ;) For us acceptance in Debian is not a prime concern either. An installable .deb package is good enough to help regular users. Therefore I don't think you need to fix the binary bootstrapping as long as we can make it part of the automated build farm. > But other than that I think my postrm script is incomplete and > certainly needs some more testing but this can certainly turn into > .debs hosted by guix. > > Diane Thanks for the great work! A .deb package would be very useful for people to start using Guix. Pj. -- ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-24 7:04 ` Pjotr Prins @ 2016-02-24 17:20 ` Thompson, David 2016-02-24 19:36 ` Diane Trout 0 siblings, 1 reply; 77+ messages in thread From: Thompson, David @ 2016-02-24 17:20 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel On Wed, Feb 24, 2016 at 2:04 AM, Pjotr Prins <pjotr.public12@thebird.nl> wrote: > For us acceptance in Debian is not a prime concern either. An > installable .deb package is good enough to help regular users. > Therefore I don't think you need to fix the binary bootstrapping as > long as we can make it part of the automated build farm. +1 Getting a Guix package into Debian is really not important, especially given the amount of nasty hacks it would require to attempt to appease the Debian developers. Hosting a .deb file on our own server that users could download and install with dpkg would be perfect for us. Thanks for the hard work, Diane! - Dave ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-24 17:20 ` Thompson, David @ 2016-02-24 19:36 ` Diane Trout 2016-02-25 10:30 ` Efraim Flashner 0 siblings, 1 reply; 77+ messages in thread From: Diane Trout @ 2016-02-24 19:36 UTC (permalink / raw) To: Thompson, David; +Cc: guix-devel > Hosting a .deb file on our own server that users could download and > install with dpkg would be perfect for us. Actually the best thing to do would be to put the debs into a signed repository, for example https://mirrorer.alioth.debian.org/ is a utility that lets you create your own apt-gettable repositories. The guix on debian instructions would then be: apt-key add (signing key) add "deb http://<server>/debian guix main" to /etc/apt/sources.list.d/guix.list apt-get update apt-get install guix this allows apt-get update to get new versions. The nix hydra paper implies that it can build packages and installers for non- nix systems. I assume the guix version can as well? > Thanks for the hard work, Diane! You're welcome, I'm glad this may be useful to others. :) Diane ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-24 19:36 ` Diane Trout @ 2016-02-25 10:30 ` Efraim Flashner 2016-02-26 1:27 ` Diane Trout 0 siblings, 1 reply; 77+ messages in thread From: Efraim Flashner @ 2016-02-25 10:30 UTC (permalink / raw) To: Diane Trout; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1619 bytes --] On Wed, Feb 24, 2016 at 11:36:52AM -0800, Diane Trout wrote: > > Hosting a .deb file on our own server that users could download and > > install with dpkg would be perfect for us. > > Actually the best thing to do would be to put the debs into a signed > repository, for example https://mirrorer.alioth.debian.org/ is a utility that > lets you create your own apt-gettable repositories. > > The guix on debian instructions would then be: > > apt-key add (signing key) > add "deb http://<server>/debian guix main" to > /etc/apt/sources.list.d/guix.list > apt-get update > apt-get install guix > > this allows apt-get update to get new versions. Another option would be to include in the pre/post install script to add the repo if it's not already there. I know some third party repos delete and recreate their files, my `tor+http` setting keeps on getting overwritten. > The nix hydra paper implies that it can build packages and installers for non- > nix systems. I assume the guix version can as well? > > > Thanks for the hard work, Diane! > > You're welcome, I'm glad this may be useful to others. :) > > Diane > I haven't looked too closely at the code yet, so appologies if you've already taken care of it. In the guix manual it says not to install the binary installer over an existing install, does the deb you've created make sure to not do that? -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: Guix on Debian (was: GSoC ideas) 2016-02-25 10:30 ` Efraim Flashner @ 2016-02-26 1:27 ` Diane Trout 0 siblings, 0 replies; 77+ messages in thread From: Diane Trout @ 2016-02-26 1:27 UTC (permalink / raw) To: Efraim Flashner; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1539 bytes --] On Thursday, February 25, 2016 12:30:47 PM Efraim Flashner wrote: > Another option would be to include in the pre/post install script to add > the repo if it's not already there. I know some third party repos delete > and recreate their files, my `tor+http` setting keeps on getting > overwritten. I know some packages automatically install repository keys, I don't really like it. > > I haven't looked too closely at the code yet, so appologies if you've > already taken care of it. In the guix manual it says not to install the > binary installer over an existing install, does the deb you've created > make sure to not do that? No. Other than the basic checks from dpkg where it will complain if it tries to overwrite a file. This package is somewhat inferior to the binary installation instructions as it currently stands the guix scheme libraries go into /usr/share/guile/site/2.0/guix. I discovered this causes trouble by trying to use a guix git tree I'd compiled. That didn't work right until after I'd rebuilt it with: $ guix environment guix $ ./bootstrap ; ./configure --prefix=/usr --localstatedir=/var I'm wondering if the debian build script should build guix, then and then do $ guix package --no-substitutes -i guix And install what ended up in /gnu/store However I haven't checked to see if there's a way to start the guix-daemon in temporary location. The Debian build utilities assume it can cause things to be built in a subdirectory of the source tree by manipulating environment variables. Diane [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-23 23:00 ` GSoC ideas Diane Trout 2016-02-23 23:52 ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber @ 2016-02-24 19:14 ` Jan Nieuwenhuizen 2016-02-24 21:24 ` Jan Nieuwenhuizen 2016-02-25 18:10 ` Ludovic Courtès 2 siblings, 1 reply; 77+ messages in thread From: Jan Nieuwenhuizen @ 2016-02-24 19:14 UTC (permalink / raw) To: Diane Trout; +Cc: guix-devel Diane Trout writes: > I wrote a basic Debian recipe to build guix, create the build users, > and install the systemd config file. > > https://github.com/detrout/debian-guix Thank you, this is /really/ useful. I want to introduce Guix at work and was thinking about a debian package. Greetings, Jan -- Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.nl ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-24 19:14 ` GSoC ideas Jan Nieuwenhuizen @ 2016-02-24 21:24 ` Jan Nieuwenhuizen 2016-02-24 21:56 ` Diane Trout 0 siblings, 1 reply; 77+ messages in thread From: Jan Nieuwenhuizen @ 2016-02-24 21:24 UTC (permalink / raw) To: Diane Trout; +Cc: guix-devel Jan Nieuwenhuizen writes: > Diane Trout writes: > >> I wrote a basic Debian recipe to build guix, create the build users, >> and install the systemd config file. >> >> https://github.com/detrout/debian-guix > > Thank you, this is /really/ useful. I want to introduce Guix at work > and was thinking about a debian package. For Ubuntu, I used the patch below. Greetings, Jan diff --git a/README.rst b/README.rst index 7092389..0e6b228 100644 --- a/README.rst +++ b/README.rst @@ -22,7 +22,7 @@ To build you need to do something like the following: cd guix git clone https://github.com/detrout/debian-guix.git debian uscan --download-current-version - tar xavf ../guix-$(dpkg-parsechangelog -S Version | cut -f 1 -d -).orig.tar.gz --strip-components=1 + tar xavf ../guix_$(dpkg-parsechangelog -S Version | cut -f 1 -d -).orig.tar.gz --strip-components=1 sudo apt-get install build-essential dh-autoreconf dh-systemd autotools-dev graphviz guile-2.0-dev guile-json help2man libgcrypt20-dev libsqlite3-dev libbz2-dev texinfo dpkg-buildpackage sudo dpkg -i ../guix_0.9.0-1_amd64.deb ../emacs-guix_0.9.0-1_all.deb diff --git a/watch b/watch index 5e7fecb..972498e 100644 --- a/watch +++ b/watch @@ -1,3 +1,2 @@ -version=4 -opts="pgpsigurlmangle=s/$/.sig/" \ +version=3 http://alpha.gnu.org/gnu/guix/ guix-([\d\.]+)\.tar\.gz debian uupdate -- Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.nl ^ permalink raw reply related [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-24 21:24 ` Jan Nieuwenhuizen @ 2016-02-24 21:56 ` Diane Trout 0 siblings, 0 replies; 77+ messages in thread From: Diane Trout @ 2016-02-24 21:56 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: guix-devel > For Ubuntu, I used the patch below. > Thank you. I fixed the typo and switched to using a uscan version=3 config file with the Ludovic Courtès signing key in upstream/signing-key.asc so the uscan key validation works correctly. Does the updated uscan file work correctly on *buntu? I also committed a change to the postrm script as I learned of a few more directories that should be removed on --purge. Diane ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-23 23:00 ` GSoC ideas Diane Trout 2016-02-23 23:52 ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber 2016-02-24 19:14 ` GSoC ideas Jan Nieuwenhuizen @ 2016-02-25 18:10 ` Ludovic Courtès 2016-02-26 1:28 ` Diane Trout 2 siblings, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-02-25 18:10 UTC (permalink / raw) To: Diane Trout; +Cc: guix-devel Diane Trout <diane@ghic.org> skribis: > I wrote a basic Debian recipe to build guix, create the build users, > and install the systemd config file. > > https://github.com/detrout/debian-guix Nice! > Currently I've only split the guix package into the emacs components > and everything else. I'd thought about splitting the daemon out into > its own package, but I wasn't sure what the daemon depended on. What you describe sounds good enough. > Currently its unlikely to go into Debian because Debian policy requires > everything to be built from source, and currently the Guix build > process downloads some bootstrap binaries. Without a fully automated process to build .deb for several distros, I don’t think we can offer to distribute .deb ourselves. :-/ If you’re versed in Guix, you might be interested in writing a derivation that runs Debian in QEMU and invokes the commands that build .deb files, as Chris suggested. That would be awesome. Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-25 18:10 ` Ludovic Courtès @ 2016-02-26 1:28 ` Diane Trout 0 siblings, 0 replies; 77+ messages in thread From: Diane Trout @ 2016-02-26 1:28 UTC (permalink / raw) To: Ludovic Courtès, guix-devel > > If you’re versed in Guix, you might be interested in writing a > derivation that runs Debian in QEMU and invokes the commands that build > .deb files, as Chris suggested. That would be awesome. I don't currently know enough about guix to do that, but I think it'd be great if I did. Diane ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-08 17:24 ` Christopher Allan Webber 2016-02-08 18:45 ` Thompson, David @ 2016-03-25 20:52 ` myglc2 1 sibling, 0 replies; 77+ messages in thread From: myglc2 @ 2016-03-25 20:52 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel Christopher Allan Webber <cwebber@dustycloud.org> writes: > > Sorry, I was unclear. What I'm talking about is Guix *as a package > manager* to be able to be available on foreigh distros so I can > encourage friends to do: > > apt-get install guix > > ... and then do user-space hacking with Guix, and use "guix environment" > for hacking on my projects... I think we'd increase our userbase > dramatically by getting Guix as a user-space pacakge manager into > various distros. I strongly agree with this. To my mind this is the key selling point of Guix and we need to make it easy to experience this. But you know, given how well the Guix Binary install + a lame makefile has worked to install/uninstall on my Debian servers, and the way Guix kind of includes it's own world, I'm not so sure a .deb package necessary. > The gexp part was because of the gexp that (iirc) generates the "tarball > install" method of things as inspiration... could we build something > similar that builds a .deb or .rpm of Guix as an install method? > > - Chris Maybe a downloadable install package that does a binary install and is routinely verified to run on 3 or 4 popular distros is just as good and has more band for the buck. Anyway, reading your comments and a couple other recent GSoC GuixSD installer proposals prompted me to write some general thoughts about Guix installation which you might find interesting: http://lists.gnu.org/archive/html/guix-devel/2016-03/msg01024.html Best - George ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 18:54 ` Christopher Allan Webber 2016-02-07 10:16 ` Efraim Flashner 2016-02-08 10:45 ` Tomáš Čech @ 2016-02-09 20:49 ` Ludovic Courtès 2016-02-09 22:17 ` Christopher Allan Webber 2016-03-23 19:07 ` myglc2 2 siblings, 2 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-02-09 20:49 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel Christopher Allan Webber <cwebber@dustycloud.org> skribis: > Maybe we should have a place to collect ideas? What about creating a page at <https://libreplanet.org/wiki/Group:Guix>? > Anyway, here would be my top items for GSoC: > > - An installer wizard (written in Guile of course!) For GuixSD I guess? Sounds like good idea, of course. > - g-expressions which generate packages of the Guix package manager for > .deb and .rpm based distros, and work to get those upstream in Debian > and Fedora That would be useful, and CheckInstall may be good enough for that. I don’t think it’s “enough” for GSoC, though. WDYT? > - Perhaps some kind of non-emacs, non-cli package (and system > management?) interface. Maybe GTK based? Definitely. Both a guile-curses-based and a GTK+-based thing would be nice. For the latter we need to check whether PackageKit can be of any use (this has been discussed in the past and my impression was that it is biased towards “traditional” distros with just a single root-managed profile.) Thanks, Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-09 20:49 ` Ludovic Courtès @ 2016-02-09 22:17 ` Christopher Allan Webber 2016-02-10 6:12 ` Pjotr Prins 2016-03-23 19:07 ` myglc2 1 sibling, 1 reply; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-09 22:17 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès writes: > Christopher Allan Webber <cwebber@dustycloud.org> skribis: > >> Maybe we should have a place to collect ideas? > > What about creating a page at <https://libreplanet.org/wiki/Group:Guix>? https://libreplanet.org/wiki/Group:Guix/GSoC-2016 Here you go! Just commenting on one comment: >> - g-expressions which generate packages of the Guix package manager for >> .deb and .rpm based distros, and work to get those upstream in Debian >> and Fedora > > That would be useful, and CheckInstall may be good enough for that. I > don’t think it’s “enough” for GSoC, though. WDYT? If the student was really to package Guix for many distributions, it might be enough. Especially if that student was to explore packaging with upstream. Anyway, the payout could be *huge*. If they finish early, I'm sure we could find other things for them to do? :) - Chris ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-09 22:17 ` Christopher Allan Webber @ 2016-02-10 6:12 ` Pjotr Prins 2016-02-11 2:11 ` Christopher Allan Webber 0 siblings, 1 reply; 77+ messages in thread From: Pjotr Prins @ 2016-02-10 6:12 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel On Tue, Feb 09, 2016 at 02:17:08PM -0800, Christopher Allan Webber wrote: > >> - g-expressions which generate packages of the Guix package manager for > >> .deb and .rpm based distros, and work to get those upstream in Debian > >> and Fedora > > > > That would be useful, and CheckInstall may be good enough for that. I > > don’t think it’s “enough” for GSoC, though. WDYT? > > If the student was really to package Guix for many distributions, it > might be enough. Especially if that student was to explore packaging > with upstream. Anyway, the payout could be *huge*. One thing to keep in mind is that GSoC is about programming. So, we have to be clear about that in the proposal. > If they finish early, I'm sure we could find other things for them to > do? :) Better to put a secondary job in - such as improving the web-ui or creating a tool for importing deb packages, or something. Students will come if they think the job challenging/interesting enough. Pj. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-10 6:12 ` Pjotr Prins @ 2016-02-11 2:11 ` Christopher Allan Webber 2016-02-11 10:01 ` Ludovic Courtès 0 siblings, 1 reply; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-11 2:11 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Pjotr Prins writes: > On Tue, Feb 09, 2016 at 02:17:08PM -0800, Christopher Allan Webber wrote: >> >> - g-expressions which generate packages of the Guix package manager for >> >> .deb and .rpm based distros, and work to get those upstream in Debian >> >> and Fedora >> > >> > That would be useful, and CheckInstall may be good enough for that. I >> > don’t think it’s “enough” for GSoC, though. WDYT? >> >> If the student was really to package Guix for many distributions, it >> might be enough. Especially if that student was to explore packaging >> with upstream. Anyway, the payout could be *huge*. > > One thing to keep in mind is that GSoC is about programming. So, we > have to be clear about that in the proposal. > >> If they finish early, I'm sure we could find other things for them to >> do? :) > > Better to put a secondary job in - such as improving the web-ui or > creating a tool for importing deb packages, or something. Students > will come if they think the job challenging/interesting enough. > > Pj. So, while we're on the topic of hopes and dreams that I might *personally* love to see solved through GSoC, but maybe people will be like "That's not enough of a GSoC programming project".... npm packaging and importer. Even better: enough npm packaging and importing to where we package pump.io :) It might not be the most fun GSoC project though? ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 2:11 ` Christopher Allan Webber @ 2016-02-11 10:01 ` Ludovic Courtès 2016-02-11 17:59 ` Christopher Allan Webber 0 siblings, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-02-11 10:01 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel Christopher Allan Webber <cwebber@dustycloud.org> skribis: > Pjotr Prins writes: > >> On Tue, Feb 09, 2016 at 02:17:08PM -0800, Christopher Allan Webber wrote: >>> >> - g-expressions which generate packages of the Guix package manager for >>> >> .deb and .rpm based distros, and work to get those upstream in Debian >>> >> and Fedora >>> > >>> > That would be useful, and CheckInstall may be good enough for that. I >>> > don’t think it’s “enough” for GSoC, though. WDYT? >>> >>> If the student was really to package Guix for many distributions, it >>> might be enough. Especially if that student was to explore packaging >>> with upstream. Anyway, the payout could be *huge*. >> >> One thing to keep in mind is that GSoC is about programming. So, we >> have to be clear about that in the proposal. >> >>> If they finish early, I'm sure we could find other things for them to >>> do? :) >> >> Better to put a secondary job in - such as improving the web-ui or >> creating a tool for importing deb packages, or something. Students >> will come if they think the job challenging/interesting enough. >> >> Pj. > > So, while we're on the topic of hopes and dreams that I might > *personally* love to see solved through GSoC, but maybe people will be > like "That's not enough of a GSoC programming project".... We could frame it in terms of programming: providing a Guix API for the creation of Debian etc. packages. There is (used to be?) something in Nixpkgs that produces a derivation to build stuff in a Debian VM, build the .deb with CheckInstall, and return that .deb as the derivation’s output. Something like this is definitely programming, and possibly fun as well. :-) Could you maybe add more details for this one on the wiki page? > npm packaging and importer. Even better: enough npm packaging and > importing to where we package pump.io :) Woow, why not! Point the candidate to your blog post on that topic. ;-) Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 10:01 ` Ludovic Courtès @ 2016-02-11 17:59 ` Christopher Allan Webber 2016-02-21 21:07 ` Ludovic Courtès 0 siblings, 1 reply; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-11 17:59 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès writes: >> So, while we're on the topic of hopes and dreams that I might >> *personally* love to see solved through GSoC, but maybe people will be >> like "That's not enough of a GSoC programming project".... > > We could frame it in terms of programming: providing a Guix API for the > creation of Debian etc. packages. > > There is (used to be?) something in Nixpkgs that produces a derivation > to build stuff in a Debian VM, build the .deb with CheckInstall, and > return that .deb as the derivation’s output. Something like this is > definitely programming, and possibly fun as well. :-) > > Could you maybe add more details for this one on the wiki page? > >> npm packaging and importer. Even better: enough npm packaging and >> importing to where we package pump.io :) > > Woow, why not! Point the candidate to your blog post on that topic. > ;-) > > Ludo’. Okay, I updated the page: https://libreplanet.org/wiki/Group:Guix/GSoC-2016 ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 17:59 ` Christopher Allan Webber @ 2016-02-21 21:07 ` Ludovic Courtès 0 siblings, 0 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-02-21 21:07 UTC (permalink / raw) To: Christopher Allan Webber; +Cc: guix-devel Christopher Allan Webber <cwebber@dustycloud.org> skribis: > Ludovic Courtès writes: [...] >>> npm packaging and importer. Even better: enough npm packaging and >>> importing to where we package pump.io :) >> >> Woow, why not! Point the candidate to your blog post on that topic. >> ;-) >> >> Ludo’. > > Okay, I updated the page: > > https://libreplanet.org/wiki/Group:Guix/GSoC-2016 Cool, thanks! Now is really the time to add new ideas or expound items already on this page! There are a couple of things regarding the Shepherd that could be done, notably <http://www.gnu.org/software/soc-projects/ideas-2015.html#dmd_units>. It could be useful to continue on the GNUnet idea at <http://www.gnu.org/software/soc-projects/ideas-2015.html#guix>, or to look at alternative approaches or P2P stacks. Someone wants add new items to the wiki page starting from that? :-) Thanks, Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-09 20:49 ` Ludovic Courtès 2016-02-09 22:17 ` Christopher Allan Webber @ 2016-03-23 19:07 ` myglc2 1 sibling, 0 replies; 77+ messages in thread From: myglc2 @ 2016-03-23 19:07 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel ludo@gnu.org (Ludovic Courtès) writes: > Christopher Allan Webber <cwebber@dustycloud.org> skribis: > >> Maybe we should have a place to collect ideas? > > What about creating a page at <https://libreplanet.org/wiki/Group:Guix>? > >> Anyway, here would be my top items for GSoC: >> >> - An installer wizard (written in Guile of course!) > > For GuixSD I guess? Sounds like good idea, of course. Possibly out of scope, but, I have found that there are many ways to install Guix. It would help to simplify this. what if this installer could do something like this: Examine the environment & determine the possible ways that Guix and/or GuixSD can be installed and then walk the user through choices: - netboot? - fdisk & GuixSD? - GNU/Linux system? - ?root user? - install Guix? - put GuixSD netboot on USB? - install GuixSD to disk? - install GuixSD dual boot? - running in user space? - guix installed? - set up git clone? - guix not present? - can you sudo? - yes - got to '?root user' above - no - install Guix in user space? - put GuixSD netboot on USB? At the end of the process, the user-lever user should have a functioning Guix setup in which all guix features described in the manual are working, (except those requiring root, e.g. guix system reconfigure). ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 12:36 ` Ludovic Courtès 2016-02-06 18:54 ` Christopher Allan Webber @ 2016-02-11 11:46 ` Manolis Ragkousis 2016-02-11 17:32 ` Andreas Enge ` (3 more replies) 1 sibling, 4 replies; 77+ messages in thread From: Manolis Ragkousis @ 2016-02-11 11:46 UTC (permalink / raw) To: guix-devel, bug-hurd; +Cc: Ludovic Courtès, Samuel Thibault Hello everyone, As I am still a student I would like to suggest continuing the project of porting Guix to GNU/Hurd in this GSoC as well, with the objective of having a working GuixSD/Hurd by the end of the summer. After discussions with Justus and Samuel in FOSDEM about the Guix-Hurd port I am starting to have a good idea on what is left to be done and the solution needed for the problems we have. So here's a preliminary timeline as well as a list of things to be done: Before May: 1) Merge wip-hurd branch. 2) Make the daemon handle chroot builds on the Hurd. Note here that on the Hurd, one does not need to be root to achieve isolation, so I should change the daemon to use this capability. 3) Instead of using the Linux syscall guile wrappers, I should modify Guix to use a more Hurdish way (i.e settrans) so later on we can handle translators and bootstrap a GNU/Hurd system. 4) Better understand how GuixSD startup works. May-August: 1) Implement the mechanisms for creating and mounting the initial filesystem and starting the system. 2) Implement the mechanisms to handle the Hurd servers in /hurd. I remember I was told that there may be an issue when the servers are not actually there (i.e all the binaries are in the /gnu/store). Would love if somebody could tell us more on that. 3) Isolate Linuxisms around Guix. 4) David Michael has made an excelent work on getting Shepherd working with Hurd so I don't think we will have any serious issues with the init daemon. 5) Others that will come up.. In the following weeks I will work closely with the Hurd guys to make sure we get a better understanding of everything and a detailed timeline. End of GSoC: Have a working GuixSD with Hurd as the kernel. Currently Justus (and others soon :-)) are testing Guix on their machines. We have some issues but we are working on them. Please feel free to add/correct anything from the above. Your comment/opinion may help to get things up and running faster :-) Finally I want to say that I will continue my work on this, regardless of GSoC or not, but I would like it if it was. :-) Thank you, Manolis ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 11:46 ` Manolis Ragkousis @ 2016-02-11 17:32 ` Andreas Enge 2016-02-12 11:48 ` Alex Sassmannshausen 2016-02-11 17:36 ` Christopher Allan Webber ` (2 subsequent siblings) 3 siblings, 1 reply; 77+ messages in thread From: Andreas Enge @ 2016-02-11 17:32 UTC (permalink / raw) To: Manolis Ragkousis; +Cc: guix-devel, bug-hurd, Samuel Thibault On Thu, Feb 11, 2016 at 01:46:30PM +0200, Manolis Ragkousis wrote: > As I am still a student I would like to suggest continuing the project > of porting Guix to GNU/Hurd in this GSoC as well, with the objective of > having a working GuixSD/Hurd by the end of the summer. Sounds great, I hope it will go through! Andreas ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 17:32 ` Andreas Enge @ 2016-02-12 11:48 ` Alex Sassmannshausen 0 siblings, 0 replies; 77+ messages in thread From: Alex Sassmannshausen @ 2016-02-12 11:48 UTC (permalink / raw) To: Andreas Enge; +Cc: guix-devel, bug-hurd, Samuel Thibault Andreas Enge writes: > On Thu, Feb 11, 2016 at 01:46:30PM +0200, Manolis Ragkousis wrote: >> As I am still a student I would like to suggest continuing the project >> of porting Guix to GNU/Hurd in this GSoC as well, with the objective of >> having a working GuixSD/Hurd by the end of the summer. > > Sounds great, I hope it will go through! > > Andreas +1 :-) ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 11:46 ` Manolis Ragkousis 2016-02-11 17:32 ` Andreas Enge @ 2016-02-11 17:36 ` Christopher Allan Webber 2016-02-28 22:12 ` Samuel Thibault 2016-03-02 10:09 ` Ludovic Courtès 3 siblings, 0 replies; 77+ messages in thread From: Christopher Allan Webber @ 2016-02-11 17:36 UTC (permalink / raw) To: Manolis Ragkousis; +Cc: guix-devel, bug-hurd, Samuel Thibault Manolis Ragkousis writes: > Hello everyone, > > As I am still a student I would like to suggest continuing the project > of porting Guix to GNU/Hurd in this GSoC as well, with the objective of > having a working GuixSD/Hurd by the end of the summer. > > After discussions with Justus and Samuel in FOSDEM about the Guix-Hurd > port I am starting to have a good idea on what is left to be done and > the solution needed for the problems we have. > > So here's a preliminary timeline as well as a list of things to be done: > > Before May: > > 1) Merge wip-hurd branch. > 2) Make the daemon handle chroot builds on the Hurd. > Note here that on the Hurd, one does not need to be root to achieve > isolation, so I should change the daemon to use this capability. > 3) Instead of using the Linux syscall guile wrappers, I should modify > Guix to use a more Hurdish way (i.e settrans) so later on we can handle > translators and bootstrap a GNU/Hurd system. > 4) Better understand how GuixSD startup works. > > May-August: > 1) Implement the mechanisms for creating and mounting the initial > filesystem and starting the system. > 2) Implement the mechanisms to handle the Hurd servers in /hurd. I > remember I was told that there may be an issue when the servers are not > actually there (i.e all the binaries are in the /gnu/store). Would love > if somebody could tell us more on that. > 3) Isolate Linuxisms around Guix. > 4) David Michael has made an excelent work on getting Shepherd working > with Hurd so I don't think we will have any serious issues with the init > daemon. > 5) Others that will come up.. In the following weeks I will work closely > with the Hurd guys to make sure we get a better understanding of > everything and a detailed timeline. > > End of GSoC: > Have a working GuixSD with Hurd as the kernel. > > Currently Justus (and others soon :-)) are testing Guix on their > machines. We have some issues but we are working on them. > > Please feel free to add/correct anything from the above. Your > comment/opinion may help to get things up and running faster :-) > > Finally I want to say that I will continue my work on this, regardless > of GSoC or not, but I would like it if it was. :-) > > Thank you, > Manolis I can't speak for everyone else but it feels like this would be a great project for you to contininue. The guile-emacs project ran for a few years, so I don't see any blocker on continuing, right? ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 11:46 ` Manolis Ragkousis 2016-02-11 17:32 ` Andreas Enge 2016-02-11 17:36 ` Christopher Allan Webber @ 2016-02-28 22:12 ` Samuel Thibault 2016-02-28 23:33 ` Richard Braun 2016-03-02 10:09 ` Ludovic Courtès 3 siblings, 1 reply; 77+ messages in thread From: Samuel Thibault @ 2016-02-28 22:12 UTC (permalink / raw) To: Manolis Ragkousis; +Cc: guix-devel, Ludovic Courtès, bug-hurd Hello, Just sending my big +1 on this project :) Samuel ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-28 22:12 ` Samuel Thibault @ 2016-02-28 23:33 ` Richard Braun 0 siblings, 0 replies; 77+ messages in thread From: Richard Braun @ 2016-02-28 23:33 UTC (permalink / raw) To: Samuel Thibault Cc: guix-devel, Ludovic Courtès, bug-hurd, Manolis Ragkousis On Sun, Feb 28, 2016 at 11:12:25PM +0100, Samuel Thibault wrote: > Just sending my big +1 on this project :) Same here. I'd like to note that I'm personally pushing so that we have less students but with better projects. This one definitely fits. -- Richard Braun ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-11 11:46 ` Manolis Ragkousis ` (2 preceding siblings ...) 2016-02-28 22:12 ` Samuel Thibault @ 2016-03-02 10:09 ` Ludovic Courtès 2016-03-02 10:12 ` Samuel Thibault 3 siblings, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-03-02 10:09 UTC (permalink / raw) To: Manolis Ragkousis; +Cc: guix-devel, bug-hurd, Samuel Thibault Hi! I realize I hadn’t responded to Manolis. Another +1 from me! Some random comments: Manolis Ragkousis <manolis837@gmail.com> skribis: > Before May: > > 1) Merge wip-hurd branch. > 2) Make the daemon handle chroot builds on the Hurd. > Note here that on the Hurd, one does not need to be root to achieve > isolation, so I should change the daemon to use this capability. I think an ideal situation would be if libc provides ‘mount’ and ‘umount’, with MS_BIND implemented in terms of firmlinks. I remember Roland was not thrilled with the idea of adding ‘mount’ and ‘umount’, but it would clearly help porting. I don’t know if this task should be part of the GSoC project though, and you may need guidance from the Hurd folks. What do people think? > 3) Instead of using the Linux syscall guile wrappers, I should modify > Guix to use a more Hurdish way (i.e settrans) so later on we can handle > translators and bootstrap a GNU/Hurd system. Possibly, depending on whether libc provides ‘mount’ and ‘umount’, which would make things simpler. > End of GSoC: > Have a working GuixSD with Hurd as the kernel. \o/ Cheers, Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-03-02 10:09 ` Ludovic Courtès @ 2016-03-02 10:12 ` Samuel Thibault 2016-03-02 21:31 ` Ludovic Courtès 0 siblings, 1 reply; 77+ messages in thread From: Samuel Thibault @ 2016-03-02 10:12 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel, bug-hurd, Manolis Ragkousis Ludovic Courtès, on Wed 02 Mar 2016 11:09:28 +0100, wrote: > Manolis Ragkousis <manolis837@gmail.com> skribis: > > 1) Merge wip-hurd branch. > > 2) Make the daemon handle chroot builds on the Hurd. > > Note here that on the Hurd, one does not need to be root to achieve > > isolation, so I should change the daemon to use this capability. > > I think an ideal situation would be if libc provides ‘mount’ and > ‘umount’, with MS_BIND implemented in terms of firmlinks. > > I remember Roland was not thrilled with the idea of adding ‘mount’ and > ‘umount’, but it would clearly help porting. It can both help and hurt. Roland's concern is that we will probably not want to provide a mount() that behaves like Linux, because in some cases it may just not even make sense. So the "ported" software that would try to use it would just fail. Samuel ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-03-02 10:12 ` Samuel Thibault @ 2016-03-02 21:31 ` Ludovic Courtès 2016-03-02 22:06 ` Samuel Thibault 2016-03-04 15:09 ` GSoC ideas Manolis Ragkousis 0 siblings, 2 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-03-02 21:31 UTC (permalink / raw) To: Manolis Ragkousis; +Cc: guix-devel, bug-hurd Samuel Thibault <samuel.thibault@gnu.org> skribis: > Ludovic Courtès, on Wed 02 Mar 2016 11:09:28 +0100, wrote: >> Manolis Ragkousis <manolis837@gmail.com> skribis: >> > 1) Merge wip-hurd branch. >> > 2) Make the daemon handle chroot builds on the Hurd. >> > Note here that on the Hurd, one does not need to be root to achieve >> > isolation, so I should change the daemon to use this capability. >> >> I think an ideal situation would be if libc provides ‘mount’ and >> ‘umount’, with MS_BIND implemented in terms of firmlinks. >> >> I remember Roland was not thrilled with the idea of adding ‘mount’ and >> ‘umount’, but it would clearly help porting. > > It can both help and hurt. Roland's concern is that we will probably not > want to provide a mount() that behaves like Linux, because in some cases > it may just not even make sense. So the "ported" software that would try > to use it would just fail. Do you have examples of GNU/Linux uses that would make no sense? Other options include calling out to the ‘settrans’ command (inelegant IMO), writing Guile bindings for some of the Hurd libraries, and/or some sort of a MiG in Scheme (neat but takes some time!). Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-03-02 21:31 ` Ludovic Courtès @ 2016-03-02 22:06 ` Samuel Thibault 2016-03-21 12:09 ` [GSoC] Porting GuixSD to GNU Hurd draft Manolis Ragkousis 2016-03-04 15:09 ` GSoC ideas Manolis Ragkousis 1 sibling, 1 reply; 77+ messages in thread From: Samuel Thibault @ 2016-03-02 22:06 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel, bug-hurd, Manolis Ragkousis Ludovic Courtès, on Wed 02 Mar 2016 22:31:41 +0100, wrote: > Samuel Thibault <samuel.thibault@gnu.org> skribis: > > It can both help and hurt. Roland's concern is that we will probably not > > want to provide a mount() that behaves like Linux, because in some cases > > it may just not even make sense. So the "ported" software that would try > > to use it would just fail. > > Do you have examples of GNU/Linux uses that would make no sense? I haven't investigated, I just report what kind of fear Roland was having. Samuel ^ permalink raw reply [flat|nested] 77+ messages in thread
* [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-02 22:06 ` Samuel Thibault @ 2016-03-21 12:09 ` Manolis Ragkousis 2016-03-22 0:49 ` Samuel Thibault 2016-03-23 13:40 ` Ludovic Courtès 0 siblings, 2 replies; 77+ messages in thread From: Manolis Ragkousis @ 2016-03-21 12:09 UTC (permalink / raw) To: Ludovic Courtès, Samuel Thibault, Justus Winter, guix-devel, bug-hurd [-- Attachment #1: Type: text/plain, Size: 429 bytes --] Hello everyone, Although I have uploaded and shared my draft to the GSoC website, I am also resending it to the lists as per Ludovic's instruction. I am sharing it as a txt + pdf. Here is also the link that I shared to the GSoC website as per Google's instructions. https://docs.google.com/document/d/1NEEz_PHM2YZTm8okd2BgPRSc4c89I1fGnwbyeeEUrhw/edit?usp=sharing This is the time to share your ideas/corrections :-) Manolis [-- Attachment #2: PortingGuixSDtoHurd.txt --] [-- Type: text/plain, Size: 6403 bytes --] Porting GuixSD to GNU/Hurd Manolis Ragkousis manolis837@gmail.com March 17, 2016 1. Summary In this project, we would like to port the Guix Software Distribution to GNU Hurd. By the end of the project, Guix will be able to handle and use the available Hurd mechanisms, have the required tools to produce a working, bootable, system vm/image with GNU Shepherd as the init daemon and offer the same functionality as you would expect from booting into a GNU/Linux GuixSD system. 2. The Project The project consists of four main stages 1. Modify Guix so it will be able to create and mount the file-system needed to boot into a system with Hurd at its core. 2. Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions. 3. Successfully boot into one such system using GNU Shepherd with pid 1. 4. Modify the new Guix system to take advantage of Hurd specific mechanisms. Currently the tools Guix uses to interact with the filesystem exist inside the (guix build syscalls) module. This module provides bindings to libc's syscall wrappers, which are only available on a GNU/Linux system. In order to offer the same functionality on a GNU/Hurd system we must first write Guile bindings for the relevant Hurd functions, like 'file_set_translator' in hurd/fs.defs for example. This module will be called (guix build hurd). This allows us to re-implement the functionality of the 'settrans' command, as described here[1], in Scheme and use that in place of 'mount()', where applicable. Additionally, we need to make sure that all modules in (guix build *) and (gnu build *) can offer the same functionalities on a GNU/Hurd system. For example (gnu build vm) relies on QEMU's '-kernel' command-line option, which is Linux-specific. On the other hand, in the case of modules like (gnu build linux-boot) or (gnu build linux-initrd), which by design are Linux-specific, we will need to provide a separate module with equivalent functionality. (gnu system *) modules will require changes as well, in order to be able to use modifications that will happen in the (guix build *) and (gnu build *) modules. At this point we will be able to generate a working vm image and boot into it. Guix will be able to use the Hurd servers (i.e. /hurd/init) to start the init manager and the system itself. We will also have to account for the fact that servers in /hurd will be symlinks to /gnu/store/*, and modify Guix and/or the Hurd libraries accordingly to achieve functionality. Regarding the init daemon, please note that a precedent already exists for starting GuixSD/Hurd with GNU Shepherd as pid 1 (David Michael [2015][2]). Finally, once GuixSD is successfully ported, we can cater to the last stage of taking advantage of Hurd specific mechanisms. This includes but is not limited to: 1)Replacing (gnu build linux-container) with (gnu build subhurd) when on a GNU/Hurd system. Subhurds can offer isolation similar to Linux containers as described here[3]. 2)Modify the guix-daemon to run without root privileges by utilizing the Hurd architecture. The daemon needs root privileges in order to setup chrooted environments for the builds. In the Hurd this can be done by setting up a translator as described here[4]. 3)Guix uses symlink trees for user profiles. Instead we can use stowfs[5]. Stowfs creates a traditional Unix directory structure from all the files in the individual package directories. 3. Estimated Project Timeline Before March 31 Finish merging the wip-hurd branch to upstream. Write a (guix build hurd) module which will contain Guile bindings to the RPC stubs like hurd/fs.defs or hurd/exec.defs . April 1 - April 15 Package missing dependencies (Hurd libs). Re-implement 'settrans' in scheme. April 16 - May 1 At this point we will have the tools needed to build a Hurd based file-system. (Milestone 1) Start working on getting (guix build *) and (gnu build *) modules to work on Hurd. Make sure '%base-packages' in (gnu system) module work as expected on Hurd. May 2 - May 22 Create (gnu build hurd-boot) and (gnu build hurd-initrd). Start working on describing the GNU/Hurd system in (gnu system). May 23 - 12 June Modify (gnu system *) modules as needed. All the modules (guix build *) and (gnu build *) will be working as expected by now. Try building a GuixSD image. (Milestone 2) 13 June - 23 June Solve any problems with booting into the system and running GNU Shepherd. 24 June - 9 July Have a fully working GNU/Hurd system. (Milestone 3) Make sure all the services/packages run correctly on the new GuixSD/Hurd system and solve any issues. 10 July - 8 August Start working on getting Hurd specific mechanisms integrated to Guix. 9 August - 23 August By now all the objectives will have been achieved. Merge patches, code refactoring, documentation. Deliver a working GuixSD system image with Hurd as the kernel. 4. About me My name is Manolis Ragkousis and you can contact me via email or irc ('phant0mas'). I am 22 years old and I am studying Informatics Engineering (Computer Science curriculum) in the Department of Informatics Engineering at the Technological Educational Institute of Crete. I am currently in the process of writing my Bachelor's Thesis on running L4Linux and L4re/Fiasco-based realtime applications concurrently on a ZedBoard. I am a Guix contributor since 2014. My main contribution to the project includes adding GNU/Hurd support to GNU Guix which was also part of GSoC 2015. I am a supporter of Free Software and I want to help the GNU Guix and GNU Hurd projects in any way I possibly can. My belief is that my work could attract more people to get involved into both projects and help in increasing the number of developers. I will work on this project regardless of being accepted or not as I have kept doing for the last 2 years. For a more detailed self-portrait, please refer to my online CV[6]. This project will be my only activity during the summer and I will work full time on it. [1]https://www.gnu.org/software/hurd/hurd/settrans.html [2]https://lists.gnu.org/archive/html/bug-hurd/2015-01/msg00027.html [3]https://www.gnu.org/software/hurd/hurd/subhurd.html [4]https://www.gnu.org/software/hurd/hurd/running/chroot.html [5]https://www.gnu.org/software/hurd/hurd/translator/unionfs.html#stowfs [6]http://www.manolisragkousis.com/about-me/ [-- Attachment #3: PortingGuixSDtoHurd.pdf --] [-- Type: application/pdf, Size: 60734 bytes --] ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-21 12:09 ` [GSoC] Porting GuixSD to GNU Hurd draft Manolis Ragkousis @ 2016-03-22 0:49 ` Samuel Thibault 2016-03-23 13:40 ` Ludovic Courtès 1 sibling, 0 replies; 77+ messages in thread From: Samuel Thibault @ 2016-03-22 0:49 UTC (permalink / raw) To: Manolis Ragkousis Cc: guix-devel, bug-hurd, Ludovic Courtès, Justus Winter Hello, Manolis Ragkousis, on Mon 21 Mar 2016 14:09:36 +0200, wrote: > Although I have uploaded and shared my draft to the GSoC website, I am > also resending it to the lists as per Ludovic's instruction. Looks very promising :) Samuel ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-21 12:09 ` [GSoC] Porting GuixSD to GNU Hurd draft Manolis Ragkousis 2016-03-22 0:49 ` Samuel Thibault @ 2016-03-23 13:40 ` Ludovic Courtès 2016-03-23 16:55 ` Justus Winter 1 sibling, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-03-23 13:40 UTC (permalink / raw) To: Manolis Ragkousis; +Cc: guix-devel, bug-hurd, Justus Winter, Samuel Thibault Hello! Manolis Ragkousis <manolis837@gmail.com> skribis: > Although I have uploaded and shared my draft to the GSoC website, I am > also resending it to the lists as per Ludovic's instruction. Yeah, the GSoC website makes it possible to provide a link to a text file, so let’s do that instead of using their SaaSS. > 2. The Project > > The project consists of four main stages > > 1. Modify Guix so it will be able to create and mount the file-system needed to boot into a system with Hurd at its core. > 2. Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions. > 3. Successfully boot into one such system using GNU Shepherd with pid 1. > 4. Modify the new Guix system to take advantage of Hurd specific mechanisms. > > > Currently the tools Guix uses to interact with the filesystem exist inside the (guix build syscalls) module. > This module provides bindings to libc's syscall wrappers, which are only available on a GNU/Linux system. > In order to offer the same functionality on a GNU/Hurd system we must first write Guile bindings for the > relevant Hurd functions, like 'file_set_translator' in hurd/fs.defs > for example. Note that technically the ‘file_set_translator’ function is in libc: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> (dynamic-func "file_set_translator" (dynamic-link)) $1 = #<pointer 0x1675660> --8<---------------cut here---------------end--------------->8--- > This module will be called (guix build hurd). This allows us to > re-implement the functionality of the 'settrans' command, as described > here[1], in Scheme and use that in place of 'mount()', where > applicable. Good! (We might as well call it (hurd …) in fact: (hurd fs) would correspond to fs.defs, (hurd io) for io.defs, and so on.) > Additionally, we need to make sure that all modules in (guix build *) and (gnu build *) can offer the same > functionalities on a GNU/Hurd system. For example (gnu build vm) relies on QEMU's '-kernel' command-line > option, which is Linux-specific. On the other hand, in the case of modules like (gnu build linux-boot) or > (gnu build linux-initrd), which by design are Linux-specific, we will need to provide a separate module with > equivalent functionality. (gnu system *) modules will require changes as well, in order to be able to use > modifications that will happen in the (guix build *) and (gnu build *) modules. I think it’s important to think about: 1. How functionality equivalent to linux-{initrd,boot} will be implemented on the Hurd. In my experience the equivalent thing is simpler on the Hurd, esp. if relying on passive translators (see daemons/runsystem.sh in the Hurd), though here we’ll probably explicitly activate translators at boot time. 2. How to structure GuixSD code in a way that abstracts the underlying OS kernel. For instance, we could have a (guix build os) module providing an API that works for both kernels, probably close to the Linux one, and that would dispatch to the right implementation, the Linux or Hurd one. Both of these are quite a bit of design and implementation work that we should not underestimate. > Finally, once GuixSD is successfully ported, we can cater to the last stage of taking advantage of Hurd specific > mechanisms. > This includes but is not limited to: > 1)Replacing (gnu build linux-container) with (gnu build subhurd) when on a GNU/Hurd system. Subhurds can offer > isolation similar to Linux containers as described here[3]. This is really super optional IMO. This module is only used by ‘guix environment --container’, which is an optional feature. > 2)Modify the guix-daemon to run without root privileges by utilizing the Hurd architecture. The daemon needs root > privileges in order to setup chrooted environments for the builds. In the Hurd this can be done by setting up a > translator as described here[4]. This is more important, and already non-trivial work. If libc provided ‘mount’ with support for MS_BIND (which I think it should), it would help a bit, but there’s still the problem of the other Linux name spaces that are used (the CLONE_NEW* clone(2) flags.) Thus it may make more sense to write this functionality in guix-daemon using directly the Hurd interfaces. Separate PID name spaces, UID name spaces, mount name spaces, etc. are fairly natural on the Hurd: it’s “just” a matter of giving the child process ports to separate proc, auth, etc. translators. In itself this is also a bit of work. I wonder what the Hurd folks think about priorities here? > 3)Guix uses symlink trees for user profiles. Instead we can use stowfs[5]. Stowfs creates a traditional Unix directory > structure from all the files in the individual package directories. Fun but optional. ;-) > 3. Estimated Project Timeline > > Before March 31 > Finish merging the wip-hurd branch to upstream. Note that this task depends on, ahem, other people as well. ;-) > Write a (guix build hurd) module which will contain Guile bindings to the RPC stubs like hurd/fs.defs or hurd/exec.defs . > > April 1 - April 15 > Package missing dependencies (Hurd libs). > Re-implement 'settrans' in scheme. Don’t just straight into low-level “details.” I’d recommend familiarizing yourself with GuixSD on GNU/Linux, fiddling with bits of code and so on (you can try safely in a VM with ‘guix system vm’), and then, familiarizing yourself with the GNU/Hurd startup process (looking at daemons/runsystem.sh already gives a good idea.) > April 16 - May 1 > At this point we will have the tools needed to build a Hurd based file-system. (Milestone 1) “Hurd-based file system”? > May 2 - May 22 > Create (gnu build hurd-boot) and (gnu build hurd-initrd). > Start working on describing the GNU/Hurd system in (gnu system). I know Debian at some point added initrd support to GNU Mach for some reason, but fundamentally, the whole point of multiboot is to provide a solution more flexible than initrds. So, hopefully, no initrds here. Since there’s no initrd, there’s also no ‘switch_root’ dance (on Linux-based system the initrd is the initial root file system, so you need to switch to the real root file system as soon as you’re able to mount it), which simplifies things. Justus, Samuel, WDYT? > May 23 - 12 June > Modify (gnu system *) modules as needed. > All the modules (guix build *) and (gnu build *) will be working as expected by now. > Try building a GuixSD image. (Milestone 2) This is the crux of the matter. :-) Before starting, it would be nice to have a rough idea of how GuixSD startup will work on the Hurd, and what changes this entails. For debugging purposes, it would be very helpful to say the least to have a working ‘guix system vm’: it would allow you to test your changes very quickly, without rebooting and so on. This in itself requires some thought: currently (guix system vm) relies on QEMU’s ‘-kernel’ option to boot the kernel Linux. For GNU/Hurd, we instead need to boot a complete image with GRUB, like ‘guix system vm-image’ does. You’ll have to investigate how to port this. > 13 June - 23 June > Solve any problems with booting into the system and running GNU Shepherd. > > 24 June - 9 July > Have a fully working GNU/Hurd system. (Milestone 3) > Make sure all the services/packages run correctly on the new GuixSD/Hurd system and solve any issues. > > 10 July - 8 August > Start working on getting Hurd specific mechanisms integrated to Guix. What do you mean? > 9 August - 23 August > By now all the objectives will have been achieved. > Merge patches, code refactoring, documentation. > Deliver a working GuixSD system image with Hurd as the kernel. Victory! :-) I think this is super cool, and also super ambitious! I’d expect that we’d be able to reach milestone #2 if everything goes well (and assuming we don’t try to address isolation in guix-daemon), but milestone #3 is most likely for later. What do people think? The main question is whether you should implement build isolation in guix-daemon, in which case that would leave little time for the GuixSD parts. I think I would rather let you focus on the GuixSD stuff as you wrote, but I’d like to hear what the Hurd folks think. Justus, Samuel: could you add yourselves as official co-mentors on Google’s web site, if not already done? :-) Thanks, Manolis! Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-23 13:40 ` Ludovic Courtès @ 2016-03-23 16:55 ` Justus Winter 2016-03-24 11:18 ` Manolis Ragkousis 2016-03-24 13:22 ` Ludovic Courtès 0 siblings, 2 replies; 77+ messages in thread From: Justus Winter @ 2016-03-23 16:55 UTC (permalink / raw) To: Ludovic Courtès, Manolis Ragkousis Cc: guix-devel, bug-hurd, Samuel Thibault Hi, Quoting Ludovic Courtès (2016-03-23 14:40:38) > > 2. The Project > > > > The project consists of four main stages > > > > 1. Modify Guix so it will be able to create and mount the file-system needed to boot into a system with Hurd at its core. > > 2. Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions. > > 3. Successfully boot into one such system using GNU Shepherd with pid 1. > > 4. Modify the new Guix system to take advantage of Hurd specific mechanisms. For me, 4. is the most important bit, so we can build packages in isolation. > > Currently the tools Guix uses to interact with the filesystem exist inside the (guix build syscalls) module. > > This module provides bindings to libc's syscall wrappers, which are only available on a GNU/Linux system. > > In order to offer the same functionality on a GNU/Hurd system we must first write Guile bindings for the > > relevant Hurd functions, like 'file_set_translator' in hurd/fs.defs > > for example. > > Note that technically the ‘file_set_translator’ function is in libc: > > --8<---------------cut here---------------start------------->8--- > scheme@(guile-user)> (dynamic-func "file_set_translator" (dynamic-link)) > $1 = #<pointer 0x1675660> > --8<---------------cut here---------------end--------------->8--- > > > This module will be called (guix build hurd). This allows us to > > re-implement the functionality of the 'settrans' command, as described > > here[1], in Scheme and use that in place of 'mount()', where > > applicable. Right. In fact, what settrans (or mount) does isn't that hard to reproduce, though I wouldn't mind moving the c implementation to libhurdutil or the like and binding to that. > I think it’s important to think about: > > 1. How functionality equivalent to linux-{initrd,boot} will be > implemented on the Hurd. > > In my experience the equivalent thing is simpler on the Hurd, > esp. if relying on passive translators (see daemons/runsystem.sh in > the Hurd), though here we’ll probably explicitly activate > translators at boot time. Currently, there is not really a reason to have an initrd-like solution on the Hurd. Yes, one has to start the default pager explicitly, but that's about it. > > Finally, once GuixSD is successfully ported, we can cater to the last stage of taking advantage of Hurd specific > > mechanisms. > > This includes but is not limited to: > > 1)Replacing (gnu build linux-container) with (gnu build subhurd) when on a GNU/Hurd system. Subhurds can offer > > isolation similar to Linux containers as described here[3]. > > This is really super optional IMO. This module is only used by ‘guix > environment --container’, which is an optional feature. Yes, subhurds are more on the experimental side imho. > > 2)Modify the guix-daemon to run without root privileges by utilizing the Hurd architecture. The daemon needs root > > privileges in order to setup chrooted environments for the builds. In the Hurd this can be done by setting up a > > translator as described here[4]. > > This is more important, and already non-trivial work. If libc provided > ‘mount’ with support for MS_BIND (which I think it should), it would > help a bit, but there’s still the problem of the other Linux name spaces > that are used (the CLONE_NEW* clone(2) flags.) > > Thus it may make more sense to write this functionality in guix-daemon > using directly the Hurd interfaces. Separate PID name spaces, UID name > spaces, mount name spaces, etc. are fairly natural on the Hurd: it’s > “just” a matter of giving the child process ports to separate proc, > auth, etc. translators. > > In itself this is also a bit of work. I wonder what the Hurd folks > think about priorities here? I'd go for specializing guix-daemon over trying too hard to implement Linux-compatible interfaces in the libc. I consider the filesystem-isolation part easy, UID isolation relatively easy, PID isolation is a bit tricky. Currently one cannot simply start another proc server and expect it to work as it needs privileged kernel interfaces. I created an RPC to allow nested proc servers for unprivileged subhurds. That should do the trick, it is merely a matter of making it actually work I guess. > > 3)Guix uses symlink trees for user profiles. Instead we can use stowfs[5]. Stowfs creates a traditional Unix directory > > structure from all the files in the individual package directories. > > Fun but optional. ;-) Agreed. > > May 2 - May 22 > > Create (gnu build hurd-boot) and (gnu build hurd-initrd). > > Start working on describing the GNU/Hurd system in (gnu system). > > I know Debian at some point added initrd support to GNU Mach for some > reason, but fundamentally, the whole point of multiboot is to provide a > solution more flexible than initrds. So, hopefully, no initrds here. > Since there’s no initrd, there’s also no ‘switch_root’ dance (on > Linux-based system the initrd is the initial root file system, so you > need to switch to the real root file system as soon as you’re able to > mount it), which simplifies things. > > Justus, Samuel, WDYT? Debian has the initrd for the live cds, but that is a bit hacky. I don't believe we need an initrd at this point. > > May 23 - 12 June > > Modify (gnu system *) modules as needed. > > All the modules (guix build *) and (gnu build *) will be working as expected by now. > > Try building a GuixSD image. (Milestone 2) > > This is the crux of the matter. :-) > > Before starting, it would be nice to have a rough idea of how GuixSD > startup will work on the Hurd, and what changes this entails. > > For debugging purposes, it would be very helpful to say the least to > have a working ‘guix system vm’: it would allow you to test your changes > very quickly, without rebooting and so on. > > This in itself requires some thought: currently (guix system vm) relies > on QEMU’s ‘-kernel’ option to boot the kernel Linux. For GNU/Hurd, we > instead need to boot a complete image with GRUB, like ‘guix system > vm-image’ does. You’ll have to investigate how to port this. qemu can boot multiboot operating systems. > > Deliver a working GuixSD system image with Hurd as the kernel. Hurd is not a kernel. > Victory! :-) > > I think this is super cool, and also super ambitious! I’d expect that > we’d be able to reach milestone #2 if everything goes well (and assuming > we don’t try to address isolation in guix-daemon), but milestone #3 is > most likely for later. > > What do people think? > > The main question is whether you should implement build isolation in > guix-daemon, in which case that would leave little time for the GuixSD > parts. I think I would rather let you focus on the GuixSD stuff as you > wrote, but I’d like to hear what the Hurd folks think. I consider isolation more important. > Justus, Samuel: could you add yourselves as official co-mentors on > Google’s web site, if not already done? :-) I clicked on 'want to mentor', do I need to do more? Justus ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-23 16:55 ` Justus Winter @ 2016-03-24 11:18 ` Manolis Ragkousis 2016-03-24 11:38 ` Justus Winter 2016-03-24 13:22 ` Ludovic Courtès 1 sibling, 1 reply; 77+ messages in thread From: Manolis Ragkousis @ 2016-03-24 11:18 UTC (permalink / raw) To: Justus Winter, Ludovic Courtès; +Cc: guix-devel, bug-hurd, Samuel Thibault Hello Justus, Hello Ludo On 03/23/16 18:55, Justus Winter wrote: > Quoting Ludovic Courtès (2016-03-23 14:40:38) >>> 2. The Project >>> >>> The project consists of four main stages >>> >>> 1. Modify Guix so it will be able to create and mount the file-system needed to boot into a system with Hurd at its core. >>> 2. Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions. >>> 3. Successfully boot into one such system using GNU Shepherd with pid 1. >>> 4. Modify the new Guix system to take advantage of Hurd specific mechanisms. > > For me, 4. is the most important bit, so we can build packages in > isolation. I think our priority should be to first get GuixSD working and then concentrate to achieving isolation. From what I understand none of the two is trivial but in the long run the ability to spawn GNU/Hurd system vms on the fly will make it easier to work on it. >>> Currently the tools Guix uses to interact with the filesystem exist inside the (guix build syscalls) module. >>> This module provides bindings to libc's syscall wrappers, which are only available on a GNU/Linux system. >>> In order to offer the same functionality on a GNU/Hurd system we must first write Guile bindings for the >>> relevant Hurd functions, like 'file_set_translator' in hurd/fs.defs >>> for example. >> >> Note that technically the ‘file_set_translator’ function is in libc: >> >> --8<---------------cut here---------------start------------->8--- >> scheme@(guile-user)> (dynamic-func "file_set_translator" (dynamic-link)) >> $1 = #<pointer 0x1675660> >> --8<---------------cut here---------------end--------------->8--- >> >>> This module will be called (guix build hurd). This allows us to >>> re-implement the functionality of the 'settrans' command, as described >>> here[1], in Scheme and use that in place of 'mount()', where >>> applicable. > > Right. In fact, what settrans (or mount) does isn't that hard to > reproduce, though I wouldn't mind moving the c implementation to > libhurdutil or the like and binding to that. Then I think it will be wiser to move the c implementation of settrans to libhurdutil and binding to that. Then we will only need a (guix build hurd) module which will include that binding. I will update the proposal if you agree. >> I think it’s important to think about: >> >> 1. How functionality equivalent to linux-{initrd,boot} will be >> implemented on the Hurd. >> >> In my experience the equivalent thing is simpler on the Hurd, >> esp. if relying on passive translators (see daemons/runsystem.sh in >> the Hurd), though here we’ll probably explicitly activate >> translators at boot time. > > Currently, there is not really a reason to have an initrd-like > solution on the Hurd. Yes, one has to start the default pager > explicitly, but that's about it. Then it seems we only need a hurd-boot module which will take care of activating translators and booting the system. > 2. How to structure GuixSD code in a way that abstracts the > underlying OS kernel. > > For instance, we could have a (guix build os) module providing an > API that works for both kernels, probably close to the Linux one, > and that would dispatch to the right implementation, the Linux or > Hurd one. This module sounds like a great idea. I will add it to the proposal. >>> Finally, once GuixSD is successfully ported, we can cater to the last stage of taking advantage of Hurd specific >>> mechanisms. >>> This includes but is not limited to: >>> 1)Replacing (gnu build linux-container) with (gnu build subhurd) when on a GNU/Hurd system. Subhurds can offer >>> isolation similar to Linux containers as described here[3]. >> >> This is really super optional IMO. This module is only used by ‘guix >> environment --container’, which is an optional feature. > > Yes, subhurds are more on the experimental side imho. So Adding subhurd support -> if there is time. > >>> 2)Modify the guix-daemon to run without root privileges by utilizing the Hurd architecture. The daemon needs root >>> privileges in order to setup chrooted environments for the builds. In the Hurd this can be done by setting up a >>> translator as described here[4]. >> >> This is more important, and already non-trivial work. If libc provided >> ‘mount’ with support for MS_BIND (which I think it should), it would >> help a bit, but there’s still the problem of the other Linux name spaces >> that are used (the CLONE_NEW* clone(2) flags.) >> >> Thus it may make more sense to write this functionality in guix-daemon >> using directly the Hurd interfaces. Separate PID name spaces, UID name >> spaces, mount name spaces, etc. are fairly natural on the Hurd: it’s >> “just” a matter of giving the child process ports to separate proc, >> auth, etc. translators. >> >> In itself this is also a bit of work. I wonder what the Hurd folks >> think about priorities here? > > I'd go for specializing guix-daemon over trying too hard to implement > Linux-compatible interfaces in the libc. I consider the > filesystem-isolation part easy, UID isolation relatively easy, PID > isolation is a bit tricky. Currently one cannot simply start another > proc server and expect it to work as it needs privileged kernel > interfaces. I created an RPC to allow nested proc servers for > unprivileged subhurds. That should do the trick, it is merely a > matter of making it actually work I guess. As I said above I believe that first getting GuixSD to work will make it easier to work on this and test any changes. >>> 3)Guix uses symlink trees for user profiles. Instead we can use stowfs[5]. Stowfs creates a traditional Unix directory >>> structure from all the files in the individual package directories. >> >> Fun but optional. ;-) > > Agreed. Stowfs support -> if there is time. >> Before March 31 >> Finish merging the wip-hurd branch to upstream. > > Note that this task depends on, ahem, other people as well. ;-) Well one can only hope :-) >>> May 2 - May 22 >>> Create (gnu build hurd-boot) and (gnu build hurd-initrd). >>> Start working on describing the GNU/Hurd system in (gnu system). >> >> I know Debian at some point added initrd support to GNU Mach for some >> reason, but fundamentally, the whole point of multiboot is to provide a >> solution more flexible than initrds. So, hopefully, no initrds here. >> Since there’s no initrd, there’s also no ‘switch_root’ dance (on >> Linux-based system the initrd is the initial root file system, so you >> need to switch to the real root file system as soon as you’re able to >> mount it), which simplifies things. >> >> Justus, Samuel, WDYT? > > Debian has the initrd for the live cds, but that is a bit hacky. I > don't believe we need an initrd at this point. (gnu build hurd-initrd) -> dropped >>> May 23 - 12 June >>> Modify (gnu system *) modules as needed. >>> All the modules (guix build *) and (gnu build *) will be working as expected by now. >>> Try building a GuixSD image. (Milestone 2) >> >> This is the crux of the matter. :-) >> >> Before starting, it would be nice to have a rough idea of how GuixSD >> startup will work on the Hurd, and what changes this entails. Currently I am working on familiarizing myself with both how Hurd and GuixSD booting works. I am already using GuixSD as a system and I am going though the source code so I can better understand what is going on. >> >> For debugging purposes, it would be very helpful to say the least to >> have a working ‘guix system vm’: it would allow you to test your changes >> very quickly, without rebooting and so on. >> >> This in itself requires some thought: currently (guix system vm) relies >> on QEMU’s ‘-kernel’ option to boot the kernel Linux. For GNU/Hurd, we >> instead need to boot a complete image with GRUB, like ‘guix system >> vm-image’ does. You’ll have to investigate how to port this. > > qemu can boot multiboot operating systems. Justus is correct here. I found this https://www.gnu.org/software/hurd/hurd/running/qemu.html#index9h1 which explains how to make qemu start with gnumach. This way guix system vm can work, just with the proper modifications. >>> Deliver a working GuixSD system image with Hurd as the kernel. > > Hurd is not a kernel. I will rephrase it correctly. I am sorry again. >> The main question is whether you should implement build isolation in >> guix-daemon, in which case that would leave little time for the GuixSD >> parts. I think I would rather let you focus on the GuixSD stuff as you >> wrote, but I’d like to hear what the Hurd folks think. > > I consider isolation more important. I understand that isolation is more important but I think first getting GuixSD will be more beneficial in the long run. If everything goes well, even though we may not be able to fully implement isolation in the duration of this gsoc, we can bootstrap the process so we continue after the end of the summer. WDYT? Thank you :-) Manolis ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-24 11:18 ` Manolis Ragkousis @ 2016-03-24 11:38 ` Justus Winter 2016-03-24 12:36 ` Manolis Ragkousis 0 siblings, 1 reply; 77+ messages in thread From: Justus Winter @ 2016-03-24 11:38 UTC (permalink / raw) To: Manolis Ragkousis, Ludovic Courtès Cc: guix-devel, bug-hurd, Samuel Thibault Quoting Manolis Ragkousis (2016-03-24 12:18:25) > >>> The project consists of four main stages > >>> > >>> 1. Modify Guix so it will be able to create and mount the file-system needed to boot into a system with Hurd at its core. > >>> 2. Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions. > >>> 3. Successfully boot into one such system using GNU Shepherd with pid 1. > >>> 4. Modify the new Guix system to take advantage of Hurd specific mechanisms. > > > > For me, 4. is the most important bit, so we can build packages in > > isolation. > > I think our priority should be to first get GuixSD working and then > concentrate to achieving isolation. From what I understand none of the > two is trivial but in the long run the ability to spawn GNU/Hurd system > vms on the fly will make it easier to work on it. Otoh if we could properly build packages, we could provide the substitutes, so people could try Guix on the Hurd without going through the 12h+ bootstrap procedure. > Currently I am working on familiarizing myself with both how Hurd and > GuixSD booting works. I am already using GuixSD as a system and I am > going though the source code so I can better understand what is going on. Here is an overview of the early server bootstrap in the Hurd. It is slightly outdated, but still the best description that I know of: http://teythoon.cryptobitch.de/posts/bootstrapping-the-hurd/ > >> For debugging purposes, it would be very helpful to say the least to > >> have a working ‘guix system vm’: it would allow you to test your changes > >> very quickly, without rebooting and so on. > >> > >> This in itself requires some thought: currently (guix system vm) relies > >> on QEMU’s ‘-kernel’ option to boot the kernel Linux. For GNU/Hurd, we > >> instead need to boot a complete image with GRUB, like ‘guix system > >> vm-image’ does. You’ll have to investigate how to port this. > > > > qemu can boot multiboot operating systems. > > Justus is correct here. I found this > https://www.gnu.org/software/hurd/hurd/running/qemu.html#index9h1 which > explains how to make qemu start with gnumach. This way guix system vm > can work, just with the proper modifications. Hmmm, so one still needs a filesystem, right? That's going to be a bit tricky too, since whatever tool you use for that purpose, it surely does not support creating hurdish passive translator records. Without passive translator records things get indeed more interesting. I have a patch for some tool for creating ext2 filesystems that could help, or we create all the passive translator records on first boot similar to how Samuels Debian/Hurd live cds deal with that. Or I finish my bootshell work that can boot from filesystems without passive translator records. Justus ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-24 11:38 ` Justus Winter @ 2016-03-24 12:36 ` Manolis Ragkousis 2016-03-24 12:49 ` Justus Winter 0 siblings, 1 reply; 77+ messages in thread From: Manolis Ragkousis @ 2016-03-24 12:36 UTC (permalink / raw) To: Justus Winter; +Cc: guix-devel, Ludovic Courtès, bug-hurd, Samuel Thibault On 03/24/16 13:38, Justus Winter wrote: > Otoh if we could properly build packages, we could provide the > substitutes, so people could try Guix on the Hurd without going > through the 12h+ bootstrap procedure. Here the problem is not isolation but the fact that we don't have a substitutes server. The machine I had at my house crashed and I cannot bring it back up remotely. When I get back to my home island and revive it, this will not be an issue. > Here is an overview of the early server bootstrap in the Hurd. It is > slightly outdated, but still the best description that I know of: > > http://teythoon.cryptobitch.de/posts/bootstrapping-the-hurd/ > It definitely is!! Nice one!! > Hmmm, so one still needs a filesystem, right? That's going to be a > bit tricky too, since whatever tool you use for that purpose, it > surely does not support creating hurdish passive translator records. > Without passive translator records things get indeed more interesting. > I have a patch for some tool for creating ext2 filesystems that could > help, or we create all the passive translator records on first boot > similar to how Samuels Debian/Hurd live cds deal with that. Or I > finish my bootshell work that can boot from filesystems without > passive translator records. Where can I find more info on those? Manolis ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-24 12:36 ` Manolis Ragkousis @ 2016-03-24 12:49 ` Justus Winter 0 siblings, 0 replies; 77+ messages in thread From: Justus Winter @ 2016-03-24 12:49 UTC (permalink / raw) To: Manolis Ragkousis Cc: guix-devel, Ludovic Courtès, bug-hurd, Samuel Thibault Quoting Manolis Ragkousis (2016-03-24 13:36:04) > > Hmmm, so one still needs a filesystem, right? That's going to be a > > bit tricky too, since whatever tool you use for that purpose, it > > surely does not support creating hurdish passive translator records. > > Without passive translator records things get indeed more interesting. > > I have a patch for some tool for creating ext2 filesystems that could > > help, or we create all the passive translator records on first boot > > similar to how Samuels Debian/Hurd live cds deal with that. Or I > > finish my bootshell work that can boot from filesystems without > > passive translator records. > > Where can I find more info on those? https://www.gnu.org/software/hurd/hurd-paper.html#translator Passive translator records are stored in ext2 using the Hurd on-disk format: http://git.sceen.net/hurd/hurd.git/blob/HEAD:/ext2fs/ext2_fs.h#l252 Justus ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-23 16:55 ` Justus Winter 2016-03-24 11:18 ` Manolis Ragkousis @ 2016-03-24 13:22 ` Ludovic Courtès 2016-03-24 13:55 ` Manolis Ragkousis 1 sibling, 1 reply; 77+ messages in thread From: Ludovic Courtès @ 2016-03-24 13:22 UTC (permalink / raw) To: Justus Winter; +Cc: guix-devel, bug-hurd, Samuel Thibault Hi Justus, Justus Winter <4winter@informatik.uni-hamburg.de> skribis: > Quoting Ludovic Courtès (2016-03-23 14:40:38) >> > 2. The Project >> > >> > The project consists of four main stages >> > >> > 1. Modify Guix so it will be able to create and mount the file-system needed to boot into a system with Hurd at its core. >> > 2. Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions. >> > 3. Successfully boot into one such system using GNU Shepherd with pid 1. >> > 4. Modify the new Guix system to take advantage of Hurd specific mechanisms. > > For me, 4. is the most important bit, so we can build packages in > isolation. I guess you mean isolation in guix-daemon. >> This is more important, and already non-trivial work. If libc provided >> ‘mount’ with support for MS_BIND (which I think it should), it would >> help a bit, but there’s still the problem of the other Linux name spaces >> that are used (the CLONE_NEW* clone(2) flags.) >> >> Thus it may make more sense to write this functionality in guix-daemon >> using directly the Hurd interfaces. Separate PID name spaces, UID name >> spaces, mount name spaces, etc. are fairly natural on the Hurd: it’s >> “just” a matter of giving the child process ports to separate proc, >> auth, etc. translators. >> >> In itself this is also a bit of work. I wonder what the Hurd folks >> think about priorities here? > > I'd go for specializing guix-daemon over trying too hard to implement > Linux-compatible interfaces in the libc. So this would become maybe half of the GSoC coding part maybe. WDYT? > I consider the filesystem-isolation part easy, UID isolation > relatively easy, PID isolation is a bit tricky. Currently one cannot > simply start another proc server and expect it to work as it needs > privileged kernel interfaces. I created an RPC to allow nested proc > servers for unprivileged subhurds. That should do the trick, it is > merely a matter of making it actually work I guess. “Merely”, hmm… :-) So, let’s say PID isolation will be optional, and we can always adjust later on. Sounds good? Manolis, make sure to read about how the various Hurd servers provides these parts of POSIX personality: file systems, UIDs, PIDs, networking, and so on. As far as code integration code, I think we won’t bother syncing this work with nix-daemon; guix-daemon has already diverged, and for instance it does not have OS X sandbox support. You’ll have to arrange to have the Hurd-specific bits in a separate file, so that ‘#ifdef HURD’ are not scattered all over the place. This is C(++) as you know. WDYT, Manolis? >> This in itself requires some thought: currently (guix system vm) relies >> on QEMU’s ‘-kernel’ option to boot the kernel Linux. For GNU/Hurd, we >> instead need to boot a complete image with GRUB, like ‘guix system >> vm-image’ does. You’ll have to investigate how to port this. > > qemu can boot multiboot operating systems. Great, didn’t know that. >> > Deliver a working GuixSD system image with Hurd as the kernel. > > Hurd is not a kernel. I think we use “kernel” to mean “the thing(s) that libc talks to.” >> The main question is whether you should implement build isolation in >> guix-daemon, in which case that would leave little time for the GuixSD >> parts. I think I would rather let you focus on the GuixSD stuff as you >> wrote, but I’d like to hear what the Hurd folks think. > > I consider isolation more important. OK. So, Manolis, what about reframing the agenda such that porting guix-daemon to GNU/Hurd comes first (I’d consider it roughly half of the programming effort), followed by GuixSD stuff? Thanks, Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-24 13:22 ` Ludovic Courtès @ 2016-03-24 13:55 ` Manolis Ragkousis 2016-03-24 14:30 ` Justus Winter 0 siblings, 1 reply; 77+ messages in thread From: Manolis Ragkousis @ 2016-03-24 13:55 UTC (permalink / raw) To: Ludovic Courtès, Justus Winter; +Cc: guix-devel, bug-hurd, Samuel Thibault Hey On 03/24/16 15:22, Ludovic Courtès wrote: > So, let’s say PID isolation will be optional, and we can always adjust > later on. Sounds good? > > Manolis, make sure to read about how the various Hurd servers provides > these parts of POSIX personality: file systems, UIDs, PIDs, networking, > and so on. Already started. :-) > As far as code integration code, I think we won’t bother syncing this > work with nix-daemon; guix-daemon has already diverged, and for instance > it does not have OS X sandbox support. > > You’ll have to arrange to have the Hurd-specific bits in a separate > file, so that ‘#ifdef HURD’ are not scattered all over the place. > > This is C(++) as you know. WDYT, Manolis? I have to start studying the daemon's code more. From what I know the part that handles builds is in libstore/build.cc. I will start there. I think I can do it. >>> The main question is whether you should implement build isolation in >>> guix-daemon, in which case that would leave little time for the GuixSD >>> parts. I think I would rather let you focus on the GuixSD stuff as you >>> wrote, but I’d like to hear what the Hurd folks think. >> >> I consider isolation more important. > > OK. Isolation first it is then. > So, Manolis, what about reframing the agenda such that porting > guix-daemon to GNU/Hurd comes first (I’d consider it roughly half of the > programming effort), followed by GuixSD stuff? > Current objectives then: 1) Achieve build isolation in the daemon on the Hurd. 2) Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions. 3) Boot to GuixSD Ludo, Justus do you agree with this? Manolis ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: [GSoC] Porting GuixSD to GNU Hurd draft 2016-03-24 13:55 ` Manolis Ragkousis @ 2016-03-24 14:30 ` Justus Winter 0 siblings, 0 replies; 77+ messages in thread From: Justus Winter @ 2016-03-24 14:30 UTC (permalink / raw) To: Manolis Ragkousis, Ludovic Courtès Cc: guix-devel, bug-hurd, Samuel Thibault Hi, Quoting Manolis Ragkousis (2016-03-24 14:55:31) > On 03/24/16 15:22, Ludovic Courtès wrote: > >>> The main question is whether you should implement build isolation in > >>> guix-daemon, in which case that would leave little time for the GuixSD > >>> parts. I think I would rather let you focus on the GuixSD stuff as you > >>> wrote, but I’d like to hear what the Hurd folks think. > >> > >> I consider isolation more important. > > > > OK. > > Isolation first it is then. > > > So, Manolis, what about reframing the agenda such that porting > > guix-daemon to GNU/Hurd comes first (I’d consider it roughly half of the > > programming effort), followed by GuixSD stuff? > > > > Current objectives then: > 1) Achieve build isolation in the daemon on the Hurd. > 2) Modify Guix so it can produce a working image, while isolating any > cases of Linux assumptions. > 3) Boot to GuixSD Well, I didn't ment to stomp over your priorities like that, it is just that I personally consider it more important and from my point of view it should be easier to achieve. Justus ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-03-02 21:31 ` Ludovic Courtès 2016-03-02 22:06 ` Samuel Thibault @ 2016-03-04 15:09 ` Manolis Ragkousis 2016-03-05 22:02 ` Ludovic Courtès 1 sibling, 1 reply; 77+ messages in thread From: Manolis Ragkousis @ 2016-03-04 15:09 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel, bug-hurd, Samuel Thibault Hey On 03/02/16 23:31, Ludovic Courtès wrote: > Do you have examples of GNU/Linux uses that would make no sense? > After a quick look in mount's man page I think that maybe Roland was referring to some flags (like relatime for example) that when passed to mount, expect the Linux kernel to handle the filesystem in a specific way. > Other options include calling out to the ‘settrans’ command (inelegant > IMO), writing Guile bindings for some of the Hurd libraries, and/or some > sort of a MiG in Scheme (neat but takes some time!). We could have a guile wrapper for the ‘settrans’ command that could cover our needs. Isn't this feasible? WDYT? Manolis ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-03-04 15:09 ` GSoC ideas Manolis Ragkousis @ 2016-03-05 22:02 ` Ludovic Courtès 0 siblings, 0 replies; 77+ messages in thread From: Ludovic Courtès @ 2016-03-05 22:02 UTC (permalink / raw) To: Manolis Ragkousis; +Cc: guix-devel, bug-hurd, Samuel Thibault Manolis Ragkousis <manolis837@gmail.com> skribis: > On 03/02/16 23:31, Ludovic Courtès wrote: [...] >> Other options include calling out to the ‘settrans’ command (inelegant >> IMO), writing Guile bindings for some of the Hurd libraries, and/or some >> sort of a MiG in Scheme (neat but takes some time!). > > We could have a guile wrapper for the ‘settrans’ command that could > cover our needs. Isn't this feasible? WDYT? It’s definitely feasible, and probably the easiest option. It scores poorly in terms of elegance though. :-) Ludo’. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 11:38 GSoC ideas Pjotr Prins 2016-02-06 12:36 ` Ludovic Courtès @ 2016-02-06 23:53 ` Ben Woodcroft 2016-02-07 5:51 ` Pjotr Prins 1 sibling, 1 reply; 77+ messages in thread From: Ben Woodcroft @ 2016-02-06 23:53 UTC (permalink / raw) To: Pjotr Prins, guix-devel On 06/02/16 21:38, Pjotr Prins wrote: [..] > - Add all testing frameworks to Guix (e.g. cucumber) Hey just fyi I think I just got cucumber working here https://github.com/wwood/guix_mine/blob/master/ben/packages/rails.scm but the (7?) patches need finalisation (updating to newest versions/synopses/description/lint/reproducibility etc.) before submission here. For Ruby, circular dependencies seem to be an ongoing issue. I'm not sure how hard this is, but an error message more useful than "stack overflow" or whatever it is would be helpful, perhaps this is something a student could work on. ^ permalink raw reply [flat|nested] 77+ messages in thread
* Re: GSoC ideas 2016-02-06 23:53 ` Ben Woodcroft @ 2016-02-07 5:51 ` Pjotr Prins 0 siblings, 0 replies; 77+ messages in thread From: Pjotr Prins @ 2016-02-07 5:51 UTC (permalink / raw) To: Ben Woodcroft; +Cc: guix-devel On Sun, Feb 07, 2016 at 09:53:00AM +1000, Ben Woodcroft wrote: > > > On 06/02/16 21:38, Pjotr Prins wrote: > [..] > > - Add all testing frameworks to Guix (e.g. cucumber) > Hey just fyi I think I just got cucumber working here > https://github.com/wwood/guix_mine/blob/master/ben/packages/rails.scm > > but the (7?) patches need finalisation (updating to newest > versions/synopses/description/lint/reproducibility etc.) before > submission here. Cool! Your packaging of Rails comes a long way too. Of course there is a lot more to package still ;) > For Ruby, circular dependencies seem to be an ongoing issue. I'm not > sure how hard this is, but an error message more useful than "stack > overflow" or whatever it is would be helpful, perhaps this is > something a student could work on. Interesting point. Question is whether it is all laziness of upstream, or that it is a form of bootstrapping the test systems ;). I'll factor it in if anyone is interested in this project in the SciRuby world. Pj. -- ^ permalink raw reply [flat|nested] 77+ messages in thread
end of thread, other threads:[~2016-03-25 20:52 UTC | newest] Thread overview: 77+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-02-06 11:38 GSoC ideas Pjotr Prins 2016-02-06 12:36 ` Ludovic Courtès 2016-02-06 18:54 ` Christopher Allan Webber 2016-02-07 10:16 ` Efraim Flashner 2016-02-09 20:52 ` Ludovic Courtès 2016-03-25 20:32 ` myglc2 2016-02-08 10:45 ` Tomáš Čech 2016-02-08 11:37 ` Efraim Flashner 2016-02-08 17:24 ` Christopher Allan Webber 2016-02-08 18:45 ` Thompson, David 2016-02-08 19:47 ` Christopher Allan Webber 2016-02-08 20:43 ` Pjotr Prins 2016-02-09 10:36 ` Installing Guix on foreign distros Ludovic Courtès 2016-02-10 8:53 ` Tomáš Čech 2016-02-10 9:42 ` Ricardo Wurmus 2016-02-10 12:44 ` Jookia 2016-02-11 5:44 ` Ricardo Wurmus 2016-02-11 10:54 ` Bootstrapping Ludovic Courtès 2016-02-23 23:00 ` GSoC ideas Diane Trout 2016-02-23 23:52 ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber 2016-02-24 0:02 ` Leo Famulari 2016-02-24 9:03 ` Ricardo Wurmus 2016-02-24 9:16 ` Efraim Flashner 2016-02-24 9:36 ` Jookia 2016-02-25 18:15 ` Bootstrap binaries Ludovic Courtès 2016-02-25 20:26 ` Christopher Allan Webber 2016-02-26 23:19 ` Ludovic Courtès 2016-02-28 10:51 ` Jookia 2016-02-28 15:08 ` Ludovic Courtès 2016-02-28 15:10 ` Jookia 2016-02-29 5:22 ` Christopher Allan Webber 2016-02-29 10:01 ` Ludovic Courtès 2016-02-24 0:32 ` Guix on Debian (was: GSoC ideas) Diane Trout 2016-02-24 7:04 ` Pjotr Prins 2016-02-24 17:20 ` Thompson, David 2016-02-24 19:36 ` Diane Trout 2016-02-25 10:30 ` Efraim Flashner 2016-02-26 1:27 ` Diane Trout 2016-02-24 19:14 ` GSoC ideas Jan Nieuwenhuizen 2016-02-24 21:24 ` Jan Nieuwenhuizen 2016-02-24 21:56 ` Diane Trout 2016-02-25 18:10 ` Ludovic Courtès 2016-02-26 1:28 ` Diane Trout 2016-03-25 20:52 ` myglc2 2016-02-09 20:49 ` Ludovic Courtès 2016-02-09 22:17 ` Christopher Allan Webber 2016-02-10 6:12 ` Pjotr Prins 2016-02-11 2:11 ` Christopher Allan Webber 2016-02-11 10:01 ` Ludovic Courtès 2016-02-11 17:59 ` Christopher Allan Webber 2016-02-21 21:07 ` Ludovic Courtès 2016-03-23 19:07 ` myglc2 2016-02-11 11:46 ` Manolis Ragkousis 2016-02-11 17:32 ` Andreas Enge 2016-02-12 11:48 ` Alex Sassmannshausen 2016-02-11 17:36 ` Christopher Allan Webber 2016-02-28 22:12 ` Samuel Thibault 2016-02-28 23:33 ` Richard Braun 2016-03-02 10:09 ` Ludovic Courtès 2016-03-02 10:12 ` Samuel Thibault 2016-03-02 21:31 ` Ludovic Courtès 2016-03-02 22:06 ` Samuel Thibault 2016-03-21 12:09 ` [GSoC] Porting GuixSD to GNU Hurd draft Manolis Ragkousis 2016-03-22 0:49 ` Samuel Thibault 2016-03-23 13:40 ` Ludovic Courtès 2016-03-23 16:55 ` Justus Winter 2016-03-24 11:18 ` Manolis Ragkousis 2016-03-24 11:38 ` Justus Winter 2016-03-24 12:36 ` Manolis Ragkousis 2016-03-24 12:49 ` Justus Winter 2016-03-24 13:22 ` Ludovic Courtès 2016-03-24 13:55 ` Manolis Ragkousis 2016-03-24 14:30 ` Justus Winter 2016-03-04 15:09 ` GSoC ideas Manolis Ragkousis 2016-03-05 22:02 ` Ludovic Courtès 2016-02-06 23:53 ` Ben Woodcroft 2016-02-07 5:51 ` Pjotr Prins
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.