Re: GNU Mes 0.21 released

2019-11-25 Thread Nala Ginrut
Congrats!

On Tue, Nov 26, 2019, 11:11 Brett Gilio  wrote:

> Jan Nieuwenhuizen  writes:
>
> > We are pleased to announce the release of GNU Mes 0.21, representing
> > 54 commits over 10 weeks.
> >
> > Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap
> > a GNU/Linux system without binary GNU toolchain or equivalent).  See
> > https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
> >
> > This release supports a Scheme-only bootstrap: Mes can now be built with
> > Gash and the experimental Gash Core Utils instead of using GNU Awk, GNU
> > Bash, the GNU Core Utilities, GNU Grep, GNU Gzip, GNU Make, GNU SED, and
> > GNU Tar.  Also, the Mes C Library now supports bootstrapping those.
> > Finally, this release brings Mes as a package to Debian GNU/Linux.
> >
> > We are excited that the Nlnet Foundation[12] is now sponsoring this
> > work!
> >
> > Next targets:
> >
> >  - Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian,
> >Gentoo, ...?)
> >  - Scheme-only bootstrap: use Guile, Gash and Gash Core Utils to remove
> >awk, bash, core utilities, grep, gzip, make, sed, tar, etc. from the
> >Guix bootstrap binaries
> >  - ARM support
> >  - Full Source Bootstrap: compile Mes.c using M2-Planet
> >  - Reduced Binary Seed bootstrap for ARM
> >  - the Hurd
> >
> > Packages are available in Guix master.
> >
> > * About
> >
> >   GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GNU Guix[2].
> >   This bootstrap has halved the size of opaque, uninspectable binaries
> >   that were needed to bootstrap Guix.  The final goal is to help create
> >   a full source bootstrap as part of the bootstrappable builds[3] effort
> >   for any interested UNIX-like operating system.
> >
> >   It consists of a mutual self-hosting Scheme interpreter written in
> >   ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme.
> >   This mes.c is being simplified[4] to be transpiled by M2-Planet[5].
> >
> >   The Scheme interpreter has a Garbage Collector, a library of loadable
> >   Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS
> >   [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8]
> >   --and test suite just enough to support a REPL and a C99 compiler:
> >   MesCC.
> >
> >   Mes+MesCC can compile an only lightly patched TinyCC[9] that is
> >   self-hosting.  Using this tcc and the Mes C library we now have a
> >   Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
> >   binutils-2.20.1, gcc-2.95.3.  This is enough to bootstrap Guix for
> >   i686-linux and x86_64-linux.
> >
> >   Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] --
> John
> >   McCarthy page 13, GNU Guix's source/binary packaging transparency and
> >   Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler.
> >
> > * Download
> >
> >   git clone git://git.savannah.gnu.org/mes.git
> >
> >   Here are the compressed sources and a GPG detached signature[*]:
> > https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz
> > https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz.sig
> >
> >   Use a mirror for higher download bandwidth:
> > https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz
> > https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz.sig
> >
> >   Here are the MD5 and SHA1 checksums:
> >
> >   dea43529d2d84fb4b9d81bdd9efcc715  mes-0.21.tar.gz
> >   35721a81feeab6e0d5913b8bf78f18951edbb964  mes-0.21.tar.gz
> >
> >   [*] Use a .sig file to verify that the corresponding file (without the
> >   .sig suffix) is intact.  First, be sure to download both the .sig file
> >   and the corresponding tarball.  Then, run a command like this:
> >
> > gpg --verify mes-0.21.tar.gz.sig
> >
> >   If that command fails because you don't have the required public key,
> >   then run this command to import it:
> >
> > gpg --keyserver keys.gnupg.net --recv-keys
> 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
> >
> >   and rerun the 'gpg --verify' command.
> >
> > * Get informed, get involved
> >
> >   See https://bootstrappable.org
> >   Join #bootstrappable on irc.freenode.net.
> >
> > * Changes in 0.21 since 0.20
> >  ** Core
> >  *** Mes can now be bootstrapped with Gash and Gash Core Utils.
> >  *** Mes now supports a Scheme-only bootstrap.
> >  *** Mes now supports -c EXPR.
> >  ** MesCC
> >  *** Mes C Library now supports bootstrapping GNU Awk, GNU Bash, GNU
> SED, and GNU Tar.
> >  *** Mes C Library now has limited float support in vfprintf, vsnprintf,
> vsscanf.
> >   7 new functions
> >  abtod, atof, creat, dtoab, execlp, isgraph, mknod, readlink, strtod,
> >  symlink.
> >   5 new stubs
> >  getgrgid, getgrnam, getpgid, getpgrp, mktime, setgrent.
> >  ** Noteworthy bug fixes
> >  *** A bug with `mes -c EXPR' has been fixed.
> >  *** The REPL now works again on x86_64.
> >  *** --with-system-libc now works again.
> >
> > Greetings,
> > janneke and Danny.
> >
> > [0] https://www.gnu.org/software/mes
> > [1] 

Re: GNU Mes 0.21 released

2019-11-25 Thread Brett Gilio
Jan Nieuwenhuizen  writes:

> We are pleased to announce the release of GNU Mes 0.21, representing
> 54 commits over 10 weeks.
>
> Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap
> a GNU/Linux system without binary GNU toolchain or equivalent).  See
> https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
>
> This release supports a Scheme-only bootstrap: Mes can now be built with
> Gash and the experimental Gash Core Utils instead of using GNU Awk, GNU
> Bash, the GNU Core Utilities, GNU Grep, GNU Gzip, GNU Make, GNU SED, and
> GNU Tar.  Also, the Mes C Library now supports bootstrapping those.
> Finally, this release brings Mes as a package to Debian GNU/Linux.
>
> We are excited that the Nlnet Foundation[12] is now sponsoring this
> work!
>
> Next targets:
>
>  - Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian,
>Gentoo, ...?)
>  - Scheme-only bootstrap: use Guile, Gash and Gash Core Utils to remove
>awk, bash, core utilities, grep, gzip, make, sed, tar, etc. from the
>Guix bootstrap binaries
>  - ARM support
>  - Full Source Bootstrap: compile Mes.c using M2-Planet
>  - Reduced Binary Seed bootstrap for ARM
>  - the Hurd
>
> Packages are available in Guix master.
>
> * About
>
>   GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GNU Guix[2].
>   This bootstrap has halved the size of opaque, uninspectable binaries
>   that were needed to bootstrap Guix.  The final goal is to help create
>   a full source bootstrap as part of the bootstrappable builds[3] effort
>   for any interested UNIX-like operating system.
>
>   It consists of a mutual self-hosting Scheme interpreter written in
>   ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme.
>   This mes.c is being simplified[4] to be transpiled by M2-Planet[5].
>
>   The Scheme interpreter has a Garbage Collector, a library of loadable
>   Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS
>   [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8]
>   --and test suite just enough to support a REPL and a C99 compiler:
>   MesCC.
>
>   Mes+MesCC can compile an only lightly patched TinyCC[9] that is
>   self-hosting.  Using this tcc and the Mes C library we now have a
>   Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
>   binutils-2.20.1, gcc-2.95.3.  This is enough to bootstrap Guix for
>   i686-linux and x86_64-linux.
>
>   Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John
>   McCarthy page 13, GNU Guix's source/binary packaging transparency and
>   Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler.
>
> * Download
>
>   git clone git://git.savannah.gnu.org/mes.git
>
>   Here are the compressed sources and a GPG detached signature[*]:
> https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz
> https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz.sig
>
>   Use a mirror for higher download bandwidth:
> https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz
> https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz.sig
>
>   Here are the MD5 and SHA1 checksums:
>
>   dea43529d2d84fb4b9d81bdd9efcc715  mes-0.21.tar.gz
>   35721a81feeab6e0d5913b8bf78f18951edbb964  mes-0.21.tar.gz
>
>   [*] Use a .sig file to verify that the corresponding file (without the
>   .sig suffix) is intact.  First, be sure to download both the .sig file
>   and the corresponding tarball.  Then, run a command like this:
>
> gpg --verify mes-0.21.tar.gz.sig
>
>   If that command fails because you don't have the required public key,
>   then run this command to import it:
>
> gpg --keyserver keys.gnupg.net --recv-keys 
> 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
>
>   and rerun the 'gpg --verify' command.
>
> * Get informed, get involved
>
>   See https://bootstrappable.org
>   Join #bootstrappable on irc.freenode.net.
>
> * Changes in 0.21 since 0.20
>  ** Core
>  *** Mes can now be bootstrapped with Gash and Gash Core Utils.
>  *** Mes now supports a Scheme-only bootstrap.
>  *** Mes now supports -c EXPR.
>  ** MesCC
>  *** Mes C Library now supports bootstrapping GNU Awk, GNU Bash, GNU SED, and 
> GNU Tar.
>  *** Mes C Library now has limited float support in vfprintf, vsnprintf, 
> vsscanf.
>   7 new functions
>  abtod, atof, creat, dtoab, execlp, isgraph, mknod, readlink, strtod,
>  symlink.
>   5 new stubs
>  getgrgid, getgrnam, getpgid, getpgrp, mktime, setgrent.
>  ** Noteworthy bug fixes
>  *** A bug with `mes -c EXPR' has been fixed.
>  *** The REPL now works again on x86_64.
>  *** --with-system-libc now works again.
>
> Greetings,
> janneke and Danny.
>
> [0] https://www.gnu.org/software/mes
> [1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
> [2] https://www.gnu.org/software/guix
> [3] https://bootstrappable.org
> [4] https://github.com/oriansj/mes-m2
> [5] https://github.com/oriansj/m2-planet
> [6] https://github.com/schemeway/lalr-scm
> [7] 

Re: Guix and FSDG

2019-11-25 Thread zimoun
Hi,

On Sat, 23 Nov 2019 at 19:00, Ludovic Courtès  wrote:

> Clément Lassieur  skribis:
>
> > Indeed 'guix build --source' returns the freed source.  However, the
> > original archive does end up in /gnu/store, and its path in displayed
> > during the build.
>
> (Only if you build from source, without substitutes, etc.)

If I read correctly, Clément just points out inaccuracies of the
David's answer [0]:

[0] https://lists.gnu.org/archive/html/guix-devel/2019-11/msg00376.html


<<
The most important
part of this process is that the original source archive is *never*
accessible to the Guix user via any Guix tools.
>>

Correct, even if Guix tools is vague. Is "guix repl" a Guix tools? :-)


<<
The original archive
is discarded and does not end up in the canonical location for Guix
data: /gnu/store.
>>

Incorrect, as Clément shows. And it is not a bug of the very
particular zpaq package, but a general feature of how Guix works.


<<
Therefore, Guix has taken sufficient
technical measures to avoid steering its user towards nonfree software
and thus Guix is compliant with the FSDG.
>>

> The spirit of the FSDG is that the distro must not provide, recommend, or
> link to non-free code, and I think Guix is following that to the letter.

We all agree on that. I guess.


In the initial Raghav's message, it seems that the argument is:
because Guix downloads non-free code in order to install free
software, then Guix does not follow the FSDG. This argument misreads
the current FSDG. For example, any GNU/linux distribution needs to
download non-free blobs and then removes them. Even, the FSDG webpage
[1] points to scripts [2] that remove these non-free blobs. The
keyword in the FSDG is "installable" and nothing is said about
"download", from my understanding.

[1] https://www.gnu.org/distros/free-system-distribution-guidelines.html
[2] http://www.fsfla.org/svn/fsfla/software/linux-libre/scripts/


> For the record, this issue was discussed in the early days of Guix and I
> don’t think anything has changed since then.  The current behavior of
> ‘guix build --source’ stems from those discussions (that was ca. 2015,
> but I can’t find the links now).

I have not found neither.

However, from my perspective, all this seems more a troll than a real issue. :-)



All the best,
simon



Re: Guix in Docker for automated CD/CI of complex software

2019-11-25 Thread zimoun
Hi,

On Fri, 22 Nov 2019 at 19:57, Vicente Eduardo  wrote:

> [...] I want to run guix inside docker in order to have a portable 
> installation of guix for common ci/cd enviroments.

I was suggesting that maybe you can use Guix to create this image. :-)

--8<---cut here---start->8---
$ guix describe
Generation 57   Nov 25 2019 14:26:15(current)
  guix b5d4d5b
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: b5d4d5b9bcf267fddd02fcc14b88eac0bebf979f
--8<---cut here---end--->8---

--8<---cut here---start->8---
$ guix pack\
 -f docker   \
 -C none \
 -S /bin=bin \
 -S /lib=lib \
 -S /share=share \
 -S /etc=etc \
 guix
$ docker load < /gnu/store/8vrdpas5s9alpczixc8bw83x9sxc8if5-docker-pack.tar
--8<---cut here---end--->8---

--8<---cut here---start->8---
$ docker run -ti guix guix --version
--8<---cut here---end--->8---


Obviously, it needs some love (dameon) to fit your use case. And I do
not know if it make sense but I would try to replace this Dockerfile
[1] by a manifest and "guix pack". Or maybe as a first step using
Dockerfile based on Guix instead of Alpine.

[1] https://github.com/metacall/guix/blob/master/Dockerfile

And even, instead of the raw instruction, I would use the installation
script [2].

[2] https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh


> Here's the metacall schema: 
> https://github.com/metacall/distributable/blob/53caad582cd097c5e92798bf0ec16660bfc4030c/source/metacall.scm
>
> My idea is to generate a zip with all libraries self contained, rather than a 
> Docker image.

The "guix pack" should fit your need. But I am not sure because it is
a simple cmake-build-system with few (guix) dependencies, i.e., it
"relies a lot in CMake features like ExternalProject".



All the best,
simon



Re: Packaging Jami progress

2019-11-25 Thread Jan
Hi again,

Sorry for being impatient, but is it normal for patches to be merged
that long? Is there something stopping the commits?
I need those merged in order to continue working on Jami.


Jan Wielkiewicz



Re: $out/lib/libexec?

2019-11-25 Thread ng0
I would leave it as it is, some applications require this layout,
I can only speak for what I work on - as it behaves this way - gnunet,
which would require too much to adjust to some arbitrary layout choice.



$out/lib/libexec?

2019-11-25 Thread Hartmut Goebel
Hi,

I just discovered that some packages store programs in $out/lib/libexec
instead of $out/libexec. In my store, only KDE packages are effected.

Is it worth investigating? Or shall we just leave as it i?

-- 
Regards
Hartmut Goebel

| Hartmut Goebel  | h.goe...@crazy-compilers.com   |
| www.crazy-compilers.com | compilers which you thought are impossible |




GNU Mes 0.21 released

2019-11-25 Thread Jan Nieuwenhuizen

We are pleased to announce the release of GNU Mes 0.21, representing
54 commits over 10 weeks.

Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap
a GNU/Linux system without binary GNU toolchain or equivalent).  See
https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/

This release supports a Scheme-only bootstrap: Mes can now be built with
Gash and the experimental Gash Core Utils instead of using GNU Awk, GNU
Bash, the GNU Core Utilities, GNU Grep, GNU Gzip, GNU Make, GNU SED, and
GNU Tar.  Also, the Mes C Library now supports bootstrapping those.
Finally, this release brings Mes as a package to Debian GNU/Linux.

We are excited that the Nlnet Foundation[12] is now sponsoring this
work!

Next targets:

 - Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian,
   Gentoo, ...?)
 - Scheme-only bootstrap: use Guile, Gash and Gash Core Utils to remove
   awk, bash, core utilities, grep, gzip, make, sed, tar, etc. from the
   Guix bootstrap binaries
 - ARM support
 - Full Source Bootstrap: compile Mes.c using M2-Planet
 - Reduced Binary Seed bootstrap for ARM
 - the Hurd

Packages are available in Guix master.

* About

  GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GNU Guix[2].
  This bootstrap has halved the size of opaque, uninspectable binaries
  that were needed to bootstrap Guix.  The final goal is to help create
  a full source bootstrap as part of the bootstrappable builds[3] effort
  for any interested UNIX-like operating system.

  It consists of a mutual self-hosting Scheme interpreter written in
  ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme.
  This mes.c is being simplified[4] to be transpiled by M2-Planet[5].

  The Scheme interpreter has a Garbage Collector, a library of loadable
  Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS
  [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8]
  --and test suite just enough to support a REPL and a C99 compiler:
  MesCC.

  Mes+MesCC can compile an only lightly patched TinyCC[9] that is
  self-hosting.  Using this tcc and the Mes C library we now have a
  Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
  binutils-2.20.1, gcc-2.95.3.  This is enough to bootstrap Guix for
  i686-linux and x86_64-linux.

  Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John
  McCarthy page 13, GNU Guix's source/binary packaging transparency and
  Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler.

* Download

  git clone git://git.savannah.gnu.org/mes.git

  Here are the compressed sources and a GPG detached signature[*]:
https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz
https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz.sig

  Use a mirror for higher download bandwidth:
https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz
https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz.sig

  Here are the MD5 and SHA1 checksums:

  dea43529d2d84fb4b9d81bdd9efcc715  mes-0.21.tar.gz
  35721a81feeab6e0d5913b8bf78f18951edbb964  mes-0.21.tar.gz

  [*] Use a .sig file to verify that the corresponding file (without the
  .sig suffix) is intact.  First, be sure to download both the .sig file
  and the corresponding tarball.  Then, run a command like this:

gpg --verify mes-0.21.tar.gz.sig

  If that command fails because you don't have the required public key,
  then run this command to import it:

gpg --keyserver keys.gnupg.net --recv-keys 
1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273

  and rerun the 'gpg --verify' command.

* Get informed, get involved

  See https://bootstrappable.org
  Join #bootstrappable on irc.freenode.net.

* Changes in 0.21 since 0.20
 ** Core
 *** Mes can now be bootstrapped with Gash and Gash Core Utils.
 *** Mes now supports a Scheme-only bootstrap.
 *** Mes now supports -c EXPR.
 ** MesCC
 *** Mes C Library now supports bootstrapping GNU Awk, GNU Bash, GNU SED, and 
GNU Tar.
 *** Mes C Library now has limited float support in vfprintf, vsnprintf, 
vsscanf.
  7 new functions
 abtod, atof, creat, dtoab, execlp, isgraph, mknod, readlink, strtod,
 symlink.
  5 new stubs
 getgrgid, getgrnam, getpgid, getpgrp, mktime, setgrent.
 ** Noteworthy bug fixes
 *** A bug with `mes -c EXPR' has been fixed.
 *** The REPL now works again on x86_64.
 *** --with-system-libc now works again.

Greetings,
janneke and Danny.

[0] https://www.gnu.org/software/mes
[1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
[2] https://www.gnu.org/software/guix
[3] https://bootstrappable.org
[4] https://github.com/oriansj/mes-m2
[5] https://github.com/oriansj/m2-planet
[6] https://github.com/schemeway/lalr-scm
[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[8] https://www.nongnu.org/nyacc
[9] https://gitlab.com/janneke/tinycc
[10] 
http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
[11] https://savannah.nongnu.org/projects/stage0
[12] 

Re: Guile-Git & delayed ‘dynamic-link’ calls

2019-11-25 Thread Mathieu Othacehe


> Does anywone understands what's going on here?

Found it! It's the #:return-errno passed to pointer->procedure that
makes every call to libgit2->procedure return two values.

The second one (the errno) was silently ignored. I'll propose a patch
soon.

Mathieu



Re: Relationship between Docker and Guix

2019-11-25 Thread zimoun
Hi,

Thank you Ricardo for the detailed explanations.


I do not know if my analogy below is correct and/or useful.

The relationship between Docker and GNU Guix is container and the LXC
[1] technology. They use both but differently:

 - Docker is rooted in mutable/imperative and tries to go to more functional;
 - Guix is rooted in immutable/functional.


Everything starts with a configuration file: Dockerfile versus manifest.scm.

 - Dockerfile depends on the state of the distribution that one will
use -- say Debian -- and each time "RUN apt-get update" and/or "RUN
apt-get install" is called then no one can know in advance what the
resulting disk image will *exactly* contain;
 - the manifest.scm depends on the state of the channel trees, other
said, on commit hashes -- manifest.scm acts as a pure function: same
inputs, same outputs -- so one obtain exactly the same container.

We cannot guarantee that the manifest.scm file which one runs today
will generate the same bit-to-bit disk image in the future. Mainly
because it has not been tested yet on the long run. :-)

However, Guix provides the tools to detect that something is not as
expected. For example, we can imagine that today one says: this is the
manifest to build the disk image and the hashes of the store are that
(the same way one provides the MD5 of files when downloading); then in
the future, building again the disk image, we can compare. Currently,
it is impossible with Docker because all the distro are doomed
(mutable). ;-) So what people are currently doing is to store all the
Docker disk images.

Docker motto: build once and run anywhere.
Guix motto(*): build anytime and run everywhere.


To me the relationship(**) is:

   guix pack -f docker -m stuff.scm
   docker load < /gnu/store/-fancy-name.tar
   docker push



Hope that helps.

All the best,
simon



[1] https://en.wikipedia.org/wiki/LXC

(*) it is not official and my personal view ;-)
(**) again my personal view.



Re: ARM VM with networking support?

2019-11-25 Thread Mathieu Othacehe


Hey Marius,

> Do you know roughly what's needed to support cross-compiling in
> meson-build-system, apart from creating a '--cross-file'[0]?

Never looked into it, but it seems that nix has proper cross compilation
support for meson (using cross-file.conf as you mentionned), see:
nixpkgs/pkgs/development/tools/build-managers/meson/default.nix

Sadly there are other build-systems where cross-compiling isn't
supported:

* scons.scm
* haskell.scm
* python.scm
* ruby.scm
* perl.scm
* meson.scm
* r.scm
* android-ndk.scm
* go.scm
* waf.scm
* emacs.scm
* asdf.scm
* ocaml.scm
* node.scm
* julia.scm
* dune.scm
* dub.scm
* ant.scm
* linux-module.scm
* rakudo.scm
* cargo.scm
* glib-or-gtk.scm

As I think that using --system is not viable (horribly slow, hard to
find native hardware to cook substitutes), extending cross-compilation
support is very important IMO.

Thanks,

Mathieu



Re: ARM VM with networking support?

2019-11-25 Thread Marius Bakke
Mathieu Othacehe  writes:

> I tried to cross-compile your system file, but it depends on glib which
> uses meson-build-system, that does not support cross-compilation.

Do you know roughly what's needed to support cross-compiling in
meson-build-system, apart from creating a '--cross-file'[0]?

[0] https://mesonbuild.com/Cross-compilation.html


signature.asc
Description: PGP signature


Re: FSFE seeking talks for 36C3

2019-11-25 Thread Hartmut Goebel
Hi,

>> https://fsfe.org/news/2019/news-20191102-01.en.html
> I don’t plan to be there.  It’d be great if you or anyone interested
> could talk about Guix!

I did not make it writing a proposal. Sorry.


-- 
Regards
Hartmut Goebel

| Hartmut Goebel  | h.goe...@crazy-compilers.com   |
| www.crazy-compilers.com | compilers which you thought are impossible |




Re: Profiles/manifests-related command line interface enhancements

2019-11-25 Thread Konrad Hinsen
Hi Ludo,

I'll start from the end:

> What do we disagree on, actually?  :-)

This:

>> 2. Power users will always write code in powerful languages that exceed
>>what less advanced users can deal with. And since power users are not
>>necessarily benevolent, this creates a trust issue for the less
>>advanced ones.
>
> Good point.  I tend to (naively?) view it the other way around: that it
> gives people an incentive to try and write actual code rather than mere
> declarations.

I'd say we should encourage people to write declarations as much as
possible and resort to executable code only when declarations become
too messy. As a corollary, we should support most configuration-style
use cases with suitable declarative forms, much like these:

> The goal for Guix was to have the ‘package’ and ‘operating-system’
> forms, for instance, look exactly like what you’d write in JSON etc.,
> only with a different syntax.

For better illustration, I'll try to rewrite my own manifests in the
way I'd like to be able to write them. That's probably more useful
than theory (a tough statement to make for a theoretician ;-)

The main reason why I want to see more declarative style is:

>> The problem with powerful formal languages (read: Turing-complete) is
>> not writing, but (1) debugging and (2) reading.
>
> Yes and no.  Guile has a debugger, whereas XML/JSON/YAML don’t.  As for
> reading, it’s subjective, but I don’t think a full-blown language is
> necessarily harder to read.

It's harder to read because you need to understand the language's
execution model if there is one. YAML etc. don't, there is nothing
but literals. Which is also why they don't need a debugger.

>   (define lst (list 1 2 3))
>
>   lst = [1, 2, 3]

Fine. But then a power user comes along and writes

   (define lst (cons* 1 2 '(3)))

That may be bad style, but as a reader I have to be able to deal with it
nevertheless. And bad style may in fact serve to obfuscate evil
intentions.

> Interesting!  The conclusion you seem to draw is that embedded DSLs as
> found in Racket fit the bill, and to me, that’s pretty much what we’ve
> been trying to do with Guix as well, no?

Indeed, just not enough for my taste!

Cheers,
  Konrad.



[BLOG] rust blog post

2019-11-25 Thread Efraim Flashner
There's one or two FIXMEs and the like in the blog post but I figured
I'd send it off anyway.

-- 
Efraim Flashner  אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
It's easy to think of Rust as a new programming language but it has already 
been around for five years.  Rust has made it past it's 1.0 release and the 
compiler is written in Rust. We even have mrustc to act as a secondary method 
to bootstrap new Rust releases without falling back to downloading precompiled 
tarballs. So how is the state of Rust in Guix today?
Truthfully, Rust in Guix could be better. The developer story for Rust is 
pretty straightforward: write your program, declare your dependencies in a 
Cargo.toml file, and ```cargo foo``` will figure out your dependency chain. 
```cargo build``` will download any missing dependencies, even using a cache 
directory to reduce downloads, and compile the bits of the dependencies that 
are needed.
But what about for distro maintainers?
Obviously we can't download dependencies at build time, they need to be 
packaged ahead of time. So we package those dependencies. But wait, those 
dependencies have dependencies that are needed, and those ones too. It's 
dependencies all the way down, hidden in 5 years of iterative development that 
we're late to the party to, trying to capture snapshots in time where specific 
versions of libraries built using previous generations. All this all the way 
back to the beginning, whenever that is.
Obviously humans are prone to errors, so to work around this while packaging 
Rust crates Guix has effectively two importers for crates, one that will import 
a specific version and list it's dependencies, and one that can take a crate 
and recursively import all the packages that it depends on. Currently some work 
is needed to allow the recursive importer to interpret version numbers, but for 
now it works quite well.
Taking a break from Rust for a moment, let's look at some of the other 
languages that are packaged. Packages written in C/C++, processed with 
autotools or cmake or meson, are the easiest. Dependencies are declared, source 
code is provided, and there's a clear distinction between source code and 
compiled binary; source code is for hacking on, binaries are for executing. The 
closest to a middle ground are libraries which allow programs to use features 
from other programs. In order to use a package, all of its dependencies must be 
packaged and the libraries linked.
Taking a look at the other end we have Javascript. Javascript is source code, 
it's ready to be read and hacked on. Javascript is already ready to be run, 
therefor it must be a binary. Its... both? Javascript libraries leave distro 
maintainers in a difficult position. Building Javascript ends up in the same 
problem as we saw with Rust, recursive dependencies all the way down, iterative 
versions depending on previous ones, and a misty past from whence everything 
sprang forth, which must be recreated in order to bring us back to the present 
day. But there's more difficulty, often even after a 'build' phase has been run 
and tests have been run on Javascript we're left with unchanged code. Except 
now it's no longer source, it's a binary... or something. So just what did we 
build and test?
We can worry about Javascript another time, Rust has a clear boundary between 
source code and binaries.
So how about python? Python is a scripting language and can be run without 
being compiled, but it also can be compiled (pre-interpreted?) to bytecode and 
installed either locally or globally. That leaves us with source code which can 
double as a binary, and a bytecode which is clearly a binary. Given these two 
states, we declare the uncompiled version as source code, ignore that it can be 
run as a script except when testing the code, and we never return to 
second-guess ourselves.
How about Go? Go is another language that defies packaging efforts, primarily 
because build instructions often make use of the HEAD of other git branches, 
not tagged and released versions. That the names of the libraries are long and 
cumbersome is mostly a secondary issue. On the developer side a binary is a 
```go build``` away. Go will download missing source and compile libraries as 
needed. On a packager side the libraries are carefully gathered one by one, 
precompiled, and placed carefully in a directory hierarchy for use in future 
builds. What could be a long build of a program is replaced by an intermediate 
series of packages where libraries are pre-compiled, and at each stage only the 
new code has to be compiled.
For all except the distro maintainer, the similarities are strong between Rust 
and Go. In both cases dependencies are downloaded as part of the build process, 
there's a cache for the downloaded sources and the compiled libraries, and 
build artifacts can be reused between different 

Re: Relationship between Docker and Guix

2019-11-25 Thread Laura Lazzati
Hi Ricardo!


Thank you sooo much for taking your time for the explanation :)
 I will probably come back to this when I prepare that part of the
presentation about it.


Regards :)
Laura