l...@gnu.org (Ludovic Courtès) writes: > Mark H Weaver <m...@netris.org> skribis: > >> l...@gnu.org (Ludovic Courtès) writes: > > [...] > >>> Currently there’s no Bash in the initrd. Should we add one? Our >>> ‘bash-static’ package takes 1.4 MiB (I don’t think we can make it >>> smaller.) >> >> I'm not sure it would help much without also adding 'coreutils'. > > Good point. > >>> Another idea that comes to mind: what about providing a “shell” language >>> in Guile? It would automatically tokenize what the user types in and >>> convert it to (system* …), plus it would have a few built-in commands >>> like ‘cd’ and ‘ls’. >> >> I like the idea of having something like this in Guile, but I'm not sure >> we should rush to implement a half-baked solution. > > OTOH, hacking it is very tempting, like: > > scheme@(guile-user)> ,use (guix build bournish) > scheme@(guile-user)> ,bournish > Happy hacking with Bournish! To switch back, type `,L scheme'. > bournish@(guile-user)> ls > . gnu-dist.go r-build-system.go > .. gnu-dist.scm r-build-system.scm > activation.scm~ gnu-dist.scm~ relocate.scm~ > bournish.scm gnu.scm~ rpath.go > bournish.scm~ graft.go rpath.scm > cmake-build-system.go graft.scm rpath.scm~ > cmake-build-system.scm graft.scm~ ruby-build-system.go > cvs.go graft.scm.115 ruby-build-system.scm > cvs.scm graft.scm.bak ruby-build-system.scm.orig > download.go gremlin.go ruby-build-system.scm.rej > download.scm gremlin.scm store-copy.go > download.scm~ gremlin.scm~ store-copy.scm > download.scm.bak haskell-build-system.go store-copy.scm~ > emacs-build-system.go haskell-build-system.scm svn.go > emacs-build-system.scm http.scm~ svn.scm > emacs-utils.go install.scm~ syscalls.go > emacs-utils.scm linux-initrd.scm~ syscalls.scm > ftp.scm~ perl-build-system.go syscalls.scm~ > git.go perl-build-system.scm union.go > git.scm perl-build-system.scm~ union.scm > git.scm~ profile.go union.scm~ > glib-or-gtk-build-system.gprofile.scm~ url.scm~ > glib-or-gtk-build-system.sprofiles.go utils.go > gnome-build-system.scm profiles.scm utils.scm > gnome-build-system.scm~ profiles.scm~ utils.scm~ > gnu-build-system.go pull.go vm.scm~ > gnu-build-system.scm pull.scm waf-build-system.go > gnu-build-system.scm~ pull.scm~ waf-build-system.scm > gnu-build-system.scm.bak python-build-system.go > gnu-cross-build.scm~ python-build-system.scm > bournish@(guile-user)> cd / > bournish@(guile-user)> pwd > $2 = "/" > bournish@(guile-user)> echo $PATH $LANGUAGE > $3 = > ("/home/ludo/soft/bin:/home/ludo/.opam/system/bin:/home/ludo/.guix-profile/bin:/home/ludo/.guix-profile/sbin:/run/setuid-programs:/run/current-system/profile/bin:/run/current-system/profile/sbin" > "eo") > bournish@(guile-user)> touch --version > touch (GNU coreutils) 8.24 > Copyright © 2015 Free Software Foundation, Inc. > Ĉi tiu estas libera programaro: vi rajtas ĝin ŝanĝi kaj redistribui. > La ĝusta permesilo estas GPLv3+: GNU GPL versio 3 aŭ sekva; > por la kompleta (angla) teksto vidu <http://gnu.org/licenses/gpl.html>. > Ĉi tiu programaro ne garantiatas, ene de la limoj de la leĝo. > > Verkita de Paul Rubin, Arnold Robbins, Jim Kingdon, > David MacKenzie kaj Randy Smith. > $4 = 0 > bournish@(guile-user)> ,L scheme > Happy hacking with Scheme! To switch back, type `,L bournish'. > > :-) > > The point is, if we can allow users to avoid typing in parentheses and > long procedure names and quoted argument lists when all they want is to > run fsck, we should do that. > >> When we have something decent along the lines of Scsh, then >> definitely! > > Scsh makes it super easy to deal with Unix processes, redirections, and > all that (it would be awesome to use it on the build side), but AFAIK it > doesn’t try to provide a Bourne-like interface, which is what we need > here. > > So, WDYT? :-)
Okay, I must admit that's a pretty great little hack, and a nice demo of how easy it is to hack something together like this in Guile. Let's do it :) Mark