Re: A new paradigm for modifying operating system declarations

2021-01-04 Thread Carlo Zancanaro

Hi raid5atemyhomework,

On Tue, Jan 05 2021, raid5atemyhomework wrote:
What `install-zfs` does is that it installs the same 
kernel-specific package in three different points:


* `kernel-loadable-modules`, because ZFS needs to get into the 
kernel somehow.
* `packages`, because the kernel module is useless if you don't 
have the userland tools to interact with the kernel module.
* `services`, because ZFS is well-documented outside of Guix as 
automatically mounting its filesystems at bootup, but that 
actually requires a bit of magic in the `init` system, 
specifically you need to actually **load** the module, then 
execute `zpool import -a -l` to have it scan for all filesystems 
and mount those that need automounting.


Thus, an `install-zfs`, that is a *single* form that inserts the 
correct bits in the correct ***three*** places, makes the 
experience of adding ZFS to your `operating-system` easier 
because there's less scope for error in actually adding the 
package.  You just add a single `install-zfs`, not add three 
things (plus an extra `(define my-zfs (make-zfs-package 
linux-libre-5.4))` before your form).


In principle, I think this should all be handled by a service. 
Services have a number of extension points where they can impact 
the operating system being declared, by extending other services. 
For example, adding a package into the global profile is done by 
extending profile-service-type (which you can find in 
gnu/services.scm). Adding a shepherd service to manage a process 
is done by extending shepherd-root-service-type (in 
gnu/services/shepherd.scm).


This is how many services work. As an example, sddm-service-type 
extends services to: (a) start a process on the running system, 
(b) put files in /etc, (c) install some pam services, (d) add an 
account on the system, and (e) install packages in the global 
profile.


As far as I can tell, the only thing missing for a 
zfs-service-type to do what you want is that services can't 
currently add new kernel modules (although they can load them via 
kernel-module-loader-service-type). I may have missed a mechanism 
for this, though. If we added the ability to do this, then it 
should be possible to add zfs support by adding a single (service 
zfs-service-type) to your services list.


The approach of using services in this way has some advantages 
which are outlined in a blog post from 2015[1]. For me the most 
compelling advantage is that an zfs-service-type is more 
restricted in what it can do, and must be more explicit. An 
install-zfs procedure has free-reign over the entire 
operating-system definition that it gets passed, which makes it 
harder to reason about the composition of such procedures.


Carlo

[1]: https://guix.gnu.org/blog/2015/service-composition-in-guixsd/



Re: Mailman From header rewrite (was: [bug#45644] closed (Re: [bug#45644] [PATCH] gnu: esbuild: Update to 0.8.29.))

2021-01-04 Thread Kyle Meyer
Kyle Meyer writes:

> As an example, the patch you feed to git-send-email would look something
> like this:
>
> --8<---cut here---start->8---
> From ad2469ec86357b1a46dd63dcd17d5831969d5270 Mon Sep 17 00:00:00 2001
> From: Ryan Prior 
> Date: Mon, 4 Jan 2021 01:47:34 +
> Subject: [PATCH] gnu: esbuild: Update to 0.8.29.
>
> From: Ryan Prior 
>
> * gnu/packages/web.scm (esbuild): Update to 0.8.29.
>
> Signed-off-by: Leo Famulari 

Oops, sorry about the spurious Signed-off-by trailer here.  I forgot to
prune that after calling format-patch with ad2469ec86.



Mailman From header rewrite (was: [bug#45644] closed (Re: [bug#45644] [PATCH] gnu: esbuild: Update to 0.8.29.))

2021-01-04 Thread Kyle Meyer
Ryan Prior via Guix-patches via writes:

>> By the way, your patches show that they are authored by "Ryan Prior
>> via Guix-patches via guix-patc...@gnu.org". Is that the correct email
>> address?
>
> No, the correct email address is rpr...@protonmail.com
>
> There's maybe 15 commits in Guix that have that incorrect email
> address. I'm not sure where it comes from or how to get rid of it. I
> send my patches by running a command like:
>
> git send-email --to=guix-patc...@gnu.org --suppress-cc=self 
> 0001-gnu-esbuild-Update-to-0.8.29.patch
>
> Git has my correct email address:
>
> $ git config user.email
> rpr...@protonmail.com
>
> So I have to imagine that either Protonmail or your email server are
> changing the email address.

To add a couple of links to what Tobias mentioned downstream, I believe
the From header rewrite is a DMARC-related mitigation on Mailman's part:

  https://wiki.list.org/DEV/DMARC
  
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/handlers/docs/dmarc-mitigations.html

As far as I understand, protonmail is relevant here only in that,
depending on the Mailman configuration, the originating server's DMARC
policy will affect Mailman's decision to rewrite the From header.

> If there's some behavior I can change to keep it from happening again
> the future I will certainly be flexible.
>
> One thing I'm going to try (unless there's any objection) is to try
> sending email [...]

Here's a way that doesn't involve changing where you're sending from:
add the appropriate "From:" header to the *body* of each patch.  `git
am` will take the in-body header over the actual header.  (One use of
this technique is to include a patch from someone else in a series.)

As an example, the patch you feed to git-send-email would look something
like this:

--8<---cut here---start->8---
>From ad2469ec86357b1a46dd63dcd17d5831969d5270 Mon Sep 17 00:00:00 2001
From: Ryan Prior 
Date: Mon, 4 Jan 2021 01:47:34 +
Subject: [PATCH] gnu: esbuild: Update to 0.8.29.

From: Ryan Prior 

* gnu/packages/web.scm (esbuild): Update to 0.8.29.

Signed-off-by: Leo Famulari 
---
 gnu/packages/web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 34998b94a5..20a40560e2 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1487,7 +1487,7 @@ (define-public tidy
 (define-public esbuild
   (package
 (name "esbuild")
-(version "0.8.27")
+(version "0.8.29")
 (source
  (origin
(method git-fetch)
@@ -1496,7 +1496,7 @@ (define-public esbuild
  (commit (string-append "v" version
(file-name (git-file-name name version))
(sha256
-(base32 "1n9h6r3q6mik7p5j0cyybh1sdcllig0awbryrx28r03cxv4ip2ij"))
+(base32 "142gc21aaqmx0d01vmqsg7zi85pjgi3higr4ba0m52qf3mvxd6as"))
(modules '((guix build utils)))
(snippet
 '(begin
-- 
2.29.2
--8<---cut here---end--->8---



Re: guix build -d with a target causes many builds

2021-01-04 Thread Chris Marusich
Chris Marusich  writes:

> Hi,
>
> I've noticed that Guix builds many things when I ask it to instantiate a
> derivation in the following way:
>
> [0] [env] marusich@garuda-lan:~/guix/repos/guix-worktrees/wip-ppc64
> $ guix build -d --target=powerpc64-linux-gnu -e '(@@ (gnu packages 
> make-bootstrap) %gcc-static)'
> The following derivations will be built:
>/gnu/store/i5wn3xl6p0zw1vglscgk0bs9dwc6hdh6-gcc-static-5.5.0.drv
>
> /gnu/store/3h2sk37iim53fh7g9r3sd1q0xzhqwa51-gcc-cross-powerpc64-linux-gnu-7.5.0.drv
>
> /gnu/store/84k0j5jm316cwf7h66vrw1vmvkd4kbck-glibc-cross-powerpc64-linux-gnu-2.31.drv
>
> /gnu/store/d36n7qy9xbgwpaw3nw8k9dj51hzmdnr4-gcc-cross-sans-libc-powerpc64-linux-gnu-7.5.0.drv
>
> /gnu/store/mqar9bnapfcfkna3rvy28awhlpd3q65q-binutils-cross-powerpc64-linux-gnu-2.34.drv
>
> /gnu/store/pzp93dw3rr6sp2ybi3dzs6kd7gvigfsk-ld-wrapper-powerpc64-linux-gnu-0.drv
>
> /gnu/store/n7dhpsq41q4kdbqgniljbwrlawvmmlp6-linux-libre-headers-cross-powerpc64-linux-gnu-5.4.20.drv
>
> /gnu/store/9p5anrji5wgkf66k09jhbsr3fqwwi7cn-gcc-cross-powerpc64-linux-gnu-7.5.0.drv
>
> /gnu/store/r4ac80znwlrnh4jmj2sbczc4mn66mqdg-glibc-cross-powerpc64-linux-gnu-2.31.drv
>/gnu/store/ap8ri9ddka13vyrsl72pzqslagi4v7vj-gmp-6.2.0.drv
>
> /gnu/store/arxf2alzwf9rmz5hz8h11j4j12drxm3i-glibc-cross-powerpc64-linux-gnu-2.31.drv
>
> /gnu/store/d127w5flv12s4bfmpf4nwrvg3sibvfya-linux-libre-headers-cross-powerpc64-linux-gnu-5.4.20.drv
>/gnu/store/j3d5kr7qlr6g3lq0dwc8z8jh6w814z9v-isl-0.18.drv
>/gnu/store/j90wwahzd5ldw7ai11zf5lnp3kbbrmkh-mpfr-4.0.2.drv
>/gnu/store/mz9fdir4avdda5cw1snyf8vhpq70c9na-libelf-0.8.13.drv
>/gnu/store/q9x04y75mq2nfp2a6gwa0pvrgv60aah9-mpc-1.1.0.drv
>/gnu/store/xk4yv7xj15qnl3zv2m8nnzrw0bdgjsx3-zlib-1.2.11.drv
> 171.3 MB will be downloaded:
>/gnu/store/ir3092v7657h6g4g2vlsw3zrli3rndb3-zlib-1.2.11.tar.gz
>/gnu/store/amc0nizxsdcj212nk9a3ivr946hzhl6c-mpc-1.1.0
>/gnu/store/j4npmpn7dxmfknyfnhj4q4jmdwmk3klg-mpc-1.1.0.tar.gz
>/gnu/store/0z3z3lhig0xyy817nv70p2hp1n1wqawa-libelf-0.8.13.tar.gz
>/gnu/store/bkyiyc4hrjcd4ljx6jqf7z05hm4qxcwd-mpfr-4.0.2.tar.xz
>/gnu/store/2jj3il6p5xrc4gkncj9303an81x2csc9-perl-5.30.2
>/gnu/store/n1yvkd7jk50qg1vv9cca6ywynkqvaqgq-ncurses-6.2
>/gnu/store/j709qpwy790bcra6w8kvyz1v5zcsw8df-texinfo-6.7
>/gnu/store/jk5k0sgqpj0sj4ymgq7m8g8617i0xji2-m4-1.4.18
>/gnu/store/57i37x74wz7ar703smykildzvhpdds1g-gmp-6.2.0
>/gnu/store/f2r1w8y7l3lpwh4i47nq2s1vqlqxq0jb-glibc-2.31
>/gnu/store/rgi1k6kx4v9m8449w00i6jfxvpgaz73g-glibc-2.31-static
>/gnu/store/df1gdl0vwwbzv04snfha0g88rj02pni9-gcc-5.5.0
>/gnu/store/waz3iz17vlbpfc2fm9yiym6bgbsajghf-mpfr-4.0.2
>/gnu/store/hnsi8iaimgss3v81h7h1r8ck55c0968h-popt-1.18
>/gnu/store/vpy0bcjw0yzaj7j7qx8rfc88c7r357k3-rsync-3.1.3
>/gnu/store/0zcl1i3rbjc356138hx86b7yaz29g6fj-linux-libre-5.4.20-gnu.tar.xz
>/gnu/store/l788x07ska5vffayz0gayv4hsx5flxal-module-import-compiled
>/gnu/store/lqz1pygx3x5dd6ad2l3n8ixm1vh6czj4-python-minimal-3.8.2
>/gnu/store/ba6s3g925nggb57b1gpj2jkhqsq24s4q-libstdc++-7.5.0
>/gnu/store/xaclbfx6rvnbsq5qmry0251r7y82rgnv-libstdc++-headers-7.5.0
>/gnu/store/j8b9i4czpzb298zwa15wpyr42471qfbm-module-import-compiled
>
> The Guix documentation ((guix) Additional Build Options) says the "-d"
> option should just give me the derivation paths, not the output paths:
>
> ‘--derivations’
> ‘-d’
>  Return the derivation paths, not the output paths, of the given
>  packages.
>
> So, I'm confused about why all these builds need to happen.  Didn't I
> only ask Guix to instantiate the derivation - not realize it?  In other
> words, I expected Guix to calculate the transitive closure of the
> requested derivation's inputs (mainly other derivations, I think?) and
> write them to the store, without actually executing any significant
> builds.
>
> I suppose that Guix is building these things in order to do just that,
> but I don't quite understand why this happens.  Can someone explain it?

This can also happen even if I don't include --target:

[0] marusich@garuda-lan:~/guix/repos/guix-worktrees/wip-ppc64
$ guix build -d -e '(@@ (gnu packages make-bootstrap) %gcc-static)'
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivations will be built:
   /gnu/store/jx7frgnihxqn75sgxwb9md420dbrh6cg-gcc-static-5.5.0.drv
   /gnu/store/h3y11yg8g44ss2b02rlq7is4mxqd8qfs-isl-0.18.drv
   /gnu/store/wx5mmblp5p5q85g55ggpcpc2kh12dsbv-zlib-1.2.11.drv
   /gnu/store/xk149wji2hlx0ls404agj3is77kazxx6-libelf-0.8.13.drv
10.9 MB will be downloaded:
   /gnu/store/f2r1w8y7l3lpwh4i47nq2s1vqlqxq0jb-glibc-2.31
   /gnu/store/rgi1k6kx4v9m8449w00i6jfxvpgaz73g-glibc-2.31-static
   /gnu/store/b1940pfi34sxd3h3gxzx1x5mzwc55flp-linux-libre-headers-5.4.20
substituting 
/gnu/store/b1940pfi34sxd3h3gxzx1x5mzwc55flp-linux-libre-headers-5.4.20...
downloading from 

guix build -d with a target causes many builds

2021-01-04 Thread Chris Marusich
Hi,

I've noticed that Guix builds many things when I ask it to instantiate a
derivation in the following way:

[0] [env] marusich@garuda-lan:~/guix/repos/guix-worktrees/wip-ppc64
$ guix build -d --target=powerpc64-linux-gnu -e '(@@ (gnu packages 
make-bootstrap) %gcc-static)'
The following derivations will be built:
   /gnu/store/i5wn3xl6p0zw1vglscgk0bs9dwc6hdh6-gcc-static-5.5.0.drv
   
/gnu/store/3h2sk37iim53fh7g9r3sd1q0xzhqwa51-gcc-cross-powerpc64-linux-gnu-7.5.0.drv
   
/gnu/store/84k0j5jm316cwf7h66vrw1vmvkd4kbck-glibc-cross-powerpc64-linux-gnu-2.31.drv
   
/gnu/store/d36n7qy9xbgwpaw3nw8k9dj51hzmdnr4-gcc-cross-sans-libc-powerpc64-linux-gnu-7.5.0.drv
   
/gnu/store/mqar9bnapfcfkna3rvy28awhlpd3q65q-binutils-cross-powerpc64-linux-gnu-2.34.drv
   
/gnu/store/pzp93dw3rr6sp2ybi3dzs6kd7gvigfsk-ld-wrapper-powerpc64-linux-gnu-0.drv
   
/gnu/store/n7dhpsq41q4kdbqgniljbwrlawvmmlp6-linux-libre-headers-cross-powerpc64-linux-gnu-5.4.20.drv
   
/gnu/store/9p5anrji5wgkf66k09jhbsr3fqwwi7cn-gcc-cross-powerpc64-linux-gnu-7.5.0.drv
   
/gnu/store/r4ac80znwlrnh4jmj2sbczc4mn66mqdg-glibc-cross-powerpc64-linux-gnu-2.31.drv
   /gnu/store/ap8ri9ddka13vyrsl72pzqslagi4v7vj-gmp-6.2.0.drv
   
/gnu/store/arxf2alzwf9rmz5hz8h11j4j12drxm3i-glibc-cross-powerpc64-linux-gnu-2.31.drv
   
/gnu/store/d127w5flv12s4bfmpf4nwrvg3sibvfya-linux-libre-headers-cross-powerpc64-linux-gnu-5.4.20.drv
   /gnu/store/j3d5kr7qlr6g3lq0dwc8z8jh6w814z9v-isl-0.18.drv
   /gnu/store/j90wwahzd5ldw7ai11zf5lnp3kbbrmkh-mpfr-4.0.2.drv
   /gnu/store/mz9fdir4avdda5cw1snyf8vhpq70c9na-libelf-0.8.13.drv
   /gnu/store/q9x04y75mq2nfp2a6gwa0pvrgv60aah9-mpc-1.1.0.drv
   /gnu/store/xk4yv7xj15qnl3zv2m8nnzrw0bdgjsx3-zlib-1.2.11.drv
171.3 MB will be downloaded:
   /gnu/store/ir3092v7657h6g4g2vlsw3zrli3rndb3-zlib-1.2.11.tar.gz
   /gnu/store/amc0nizxsdcj212nk9a3ivr946hzhl6c-mpc-1.1.0
   /gnu/store/j4npmpn7dxmfknyfnhj4q4jmdwmk3klg-mpc-1.1.0.tar.gz
   /gnu/store/0z3z3lhig0xyy817nv70p2hp1n1wqawa-libelf-0.8.13.tar.gz
   /gnu/store/bkyiyc4hrjcd4ljx6jqf7z05hm4qxcwd-mpfr-4.0.2.tar.xz
   /gnu/store/2jj3il6p5xrc4gkncj9303an81x2csc9-perl-5.30.2
   /gnu/store/n1yvkd7jk50qg1vv9cca6ywynkqvaqgq-ncurses-6.2
   /gnu/store/j709qpwy790bcra6w8kvyz1v5zcsw8df-texinfo-6.7
   /gnu/store/jk5k0sgqpj0sj4ymgq7m8g8617i0xji2-m4-1.4.18
   /gnu/store/57i37x74wz7ar703smykildzvhpdds1g-gmp-6.2.0
   /gnu/store/f2r1w8y7l3lpwh4i47nq2s1vqlqxq0jb-glibc-2.31
   /gnu/store/rgi1k6kx4v9m8449w00i6jfxvpgaz73g-glibc-2.31-static
   /gnu/store/df1gdl0vwwbzv04snfha0g88rj02pni9-gcc-5.5.0
   /gnu/store/waz3iz17vlbpfc2fm9yiym6bgbsajghf-mpfr-4.0.2
   /gnu/store/hnsi8iaimgss3v81h7h1r8ck55c0968h-popt-1.18
   /gnu/store/vpy0bcjw0yzaj7j7qx8rfc88c7r357k3-rsync-3.1.3
   /gnu/store/0zcl1i3rbjc356138hx86b7yaz29g6fj-linux-libre-5.4.20-gnu.tar.xz
   /gnu/store/l788x07ska5vffayz0gayv4hsx5flxal-module-import-compiled
   /gnu/store/lqz1pygx3x5dd6ad2l3n8ixm1vh6czj4-python-minimal-3.8.2
   /gnu/store/ba6s3g925nggb57b1gpj2jkhqsq24s4q-libstdc++-7.5.0
   /gnu/store/xaclbfx6rvnbsq5qmry0251r7y82rgnv-libstdc++-headers-7.5.0
   /gnu/store/j8b9i4czpzb298zwa15wpyr42471qfbm-module-import-compiled

The Guix documentation ((guix) Additional Build Options) says the "-d"
option should just give me the derivation paths, not the output paths:

‘--derivations’
‘-d’
 Return the derivation paths, not the output paths, of the given
 packages.

So, I'm confused about why all these builds need to happen.  Didn't I
only ask Guix to instantiate the derivation - not realize it?  In other
words, I expected Guix to calculate the transitive closure of the
requested derivation's inputs (mainly other derivations, I think?) and
write them to the store, without actually executing any significant
builds.

I suppose that Guix is building these things in order to do just that,
but I don't quite understand why this happens.  Can someone explain it?

-- 
Chris


signature.asc
Description: PGP signature


Re: Staging branch [aarch64 failures]

2021-01-04 Thread Leo Famulari
The branch is building again!

http://ci.guix.gnu.org/eval/10974

Qtbase is failing on aarch64:

https://ci.guix.gnu.org/build/166439/details

There errors like this:

--
g++ -c -pipe -O2 -w -fPIC  -I. 
-I/gnu/store/48i8mxxb1v4x632dff3i1dbdhsazm8bw-mariadb-10.5.8-dev/include/mysql 
-I/gnu/store/48i8mxxb1v4x632dff3i1dbdhsazm8bw-mariadb-10.5.8-dev/include/mysql/mysql
 
-I/tmp/guix-build-qtbase-5.15.2.drv-0/qtbase-everywhere-src-5.15.2/mkspecs/linux-g++
 -o main.o main.cpp
g++ -Wl,-O1 -o mysql main.o   
-L/gnu/store/c9id1jf4r3cfys6289p92wpdhk1ryns0-mariadb-10.5.8-lib/lib/
ld: main.o: in function `main':
main.cpp:(.text.startup+0x8): undefined reference to `mysql_get_client_version'
collect2: error: ld returned 1 exit status
make: *** [Makefile:69: mysql] Error 1
--


signature.asc
Description: PGP signature


Re: [bootstrappable] wip-full-source-bootstrap: from a 357-byte `hex0' to 'hello'

2021-01-04 Thread jeremiah
Amazing work as always janneke.

We will just have to do some kaem work to make it work all on POSIX systems.

-Jeremiah



Re: A new paradigm for modifying operating system declarations

2021-01-04 Thread raid5atemyhomework
Hi Jan,

>
> Better but still don't like it.
> Can't we put the os declaration into a variable and then pass it to a
> procedure?
> Say:
>
> > (define OS
> >   (operating-system
> > (kernel linux-libre-5.4)
> > ; ... other fields ...
> > ))
> >
> > (install-zfs OS)
> > (install-foo OS)
> > (install-bar OS)
> > (install-something OS)
> >
> >

No, because `` objects are not mutable (or at least their 
formal interface doesn't expose any mutation).

What we could do would be:

```scheme
(define os
  (operating-system
(kernel linux-libre-5.4)
#;...))

(set! os (install-zfs os))
(set! os (install-foo os))
(set! os (install-bar os))

os
```

However, in many examples I've seen, the `configuration.scm` file looks like 
this:

```scheme
(use-modules (gnu))
(use-package-modules #;...)
(use-service-modules #;...)

(operating-system
  (host-name "my-system")
  (timezone "Europe/Paris")
  (locale "en_US,utf-8")
  (kernel linux-libre-5.4)
  #;...)
```

What I want to avoid would be to have to nest the existing, usually 
screens-long, `operating-system` form.

So compare:

```scheme
(use-modules (gnu))
(use-package-modules #;...)
(use-service-modules #;...)

(decorate (install-zfs
   install-foo
   install-bar
   operating-system)
  (host-name "my-system")
  (timezone "Europe/Paris")
  (locale "en_US,utf-8")
  (kernel linux-libre-5.4)
  #;...)
```

versus:

```scheme
(use-modules (gnu))
(use-package-modules #;...)
(use-service-modules #;...)

(define os
  (operating-system
(host-name "my-system")
(timezone "Europe/Paris")
(locale "en_US,utf-8")
(kernel linux-libre-5.4)
#;...))
(set! os (install-zfs os))
(set! os (install-foo os))
(set! os (install-bar os))
os
```

I feel the former is better and requires less boilerplate.

Now of course, I ***have*** seen examples as well where the `operating-system` 
is put in a `define` form as well, but those are rare and the default stuff 
that come with Guix tend not to use this, and we should consider that new Guix 
sysads might not be comfortable working with EMACS and prefer nano, so adding 
even just *one* additional layer of nestedness to a long `operating-system` 
form is not easy.  Of course, such a sysad might then consider not indenting it 
correctly.

Thanks
raid5atemyhomework



Re: A new paradigm for modifying operating system declarations

2021-01-04 Thread raid5atemyhomework
Good morning Taylan,

> First, let me point out a more conventional alternative to what your
> 'decorate' macro does:
>
> (define (compose proc . rest)
> "Functional composition; e.g. ((compose x y) a) = (x (y a))."
> (if (null? rest)
> proc
> (let ((rest-proc (apply compose rest)))
> (lambda x
> (let-values ((x (apply rest-proc x)))
> (apply proc x))
>
> This allows for something like:
>
> ((compose install-foo install-bar install-zfs)
> (operating-system ...))
>
> Or perhaps cleaner:
>
> (define my-os-modifier (compose install-foo install-bar install-zfs))
>
> (my-os-modifier
> (operating-system ...))
>
> If you need custom modifications within, you can do:
>
> (define my-os-modifier
> (compose install-foo
> (lambda (os) ...)
> install-bar))
>
> It's more verbose, but doesn't "break" standard Scheme syntax as much.
> Function composition is conceptually pretty easy and probably more
> well-known than "decorators" (which I had never heard of, personally).

Yes, except function composition does not work on syntactic forms, which is 
why, with `compose`, you have to separate the `operating-system` form instead 
of being able to compose `operating-system` with the rest of the os 
modifications.

The intent is that you have already an existing `operating-system` form with a 
single layer of parenthesis. With `compose`, if you want to install ZFS and a 
bunch of other complex OS modifications, you have to add a layer of 
parenthesis.  With `decorate`, you don't:

```scheme
((compose install-zfs install-foo)
 (operating-system
(name "my-system") #;...))
;vs
(decorate (install-zfs
   install-foo
   operating-system)
  (nmae "my-system") #;...)
```

>
> Fewer macros means the reader needs to keep fewer special rules in mind.

Fine, I'm doubling down then.

```scheme
(define-syntax compose-syntax
  (syntax-rules ()
((compose-syntax (x ...))
 (syntax-rules ::: ()
   ((form args :::)
(x ... args :::
((compose-syntax x)
 (syntax-rules ::: ()
   ((form args :::)
(x args :::
((compose-syntax (x ...) y ...)
 (syntax-rules ::: ()
   ((form args :::)
(let-syntax ((sub-syntax (compose-syntax y ...)))
  (x ... (sub-syntax args :::))
((compose-syntax x y ...)
 (syntax-rules ::: ()
   ((form args :::)
(let-syntax ((sub-syntax (compose-syntax y ...))
  (x (sub-syntax args :::)
```

Then use it as follows:

```
(define-syntax my-operating-system
  (compose-syntax
(install-zfs #:options '(("zfs_arc_max" 50)) #:os)
operating-system))
(my-operating-system
  (name "my-system") #;...)
```

Again, the goal here is to keep the nestedness of your existing, very long 
`operating-system` form, which your simple `compose` function fails to do, 
because you can't compose syntax with `compose` and `operating-system` is a 
syntax form.

>
> Secondly, I wonder if passing an OS declaration through various
> procedures that modify it is really the best approach in the first place.
>
> For build phases, we have the 'modify-phases' syntax. For services,
> there is 'modify-services'. Maybe there should be a 'modify-os' kind of
> syntax. (In other words, if we're going to invent new syntax, why not
> go all-out and create the most convenient syntax for the use-case.)

Because a *generic* form to modify the operating system is worthless --- you 
can just define the operating-system directly.

What `install-zfs` does is that it installs the same kernel-specific package in 
three different points:

* `kernel-loadable-modules`, because ZFS needs to get into the kernel somehow.
* `packages`, because the kernel module is useless if you don't have the 
userland tools to interact with the kernel module.
* `services`, because ZFS is well-documented outside of Guix as automatically 
mounting its filesystems at bootup, but that actually requires a bit of magic 
in the `init` system, specifically you need to actually **load** the module, 
then execute `zpool import -a -l` to have it scan for all filesystems and mount 
those that need automounting.

Thus, an `install-zfs`, that is a *single* form that inserts the correct bits 
in the correct ***three*** places, makes the experience of adding ZFS to your 
`operating-system` easier because there's less scope for error in actually 
adding the package.  You just add a single `install-zfs`, not add three things 
(plus an extra `(define my-zfs (make-zfs-package linux-libre-5.4))` before your 
form).


Now, if this kind of simplifying form is useful for ZFS, I imagine that this 
kind of simplifying form would also exist for other things you could install 
into your operating system in the future.  Thus, we need some way to take an 
existing `` and pass it through a number of single 
simplifying operating system transformations, which I don't think something 
like `modify-os` would work well with.


Thanks
raid5atemyhomework



Re: A new paradigm for modifying operating system declarations

2021-01-04 Thread Jan Wielkiewicz
Dnia 2021-01-04, o godz. 15:38:38
raid5atemyhomework  napisał(a):

> Hi guix-developers,

Hello.

> ```scheme
> (install-zfs
>   (operating-system
> (kernel linux-libre-5.4)
> ; ... other fields ...
> ))
> ```

I don't like this way of nesting the OS declaration inside of any other
expression.
> 
> ```scheme
> (install-foo
>   (install-bar
> (install-zfs
>(operating-system
>   #;...

This makes it even worse.

> Which brings us back to the `decorate` form, which reduces nestedness:
> 
> ```scheme
> (decorate (install-foo
>install-bar
>install-zfs
>operating-system)
>#;...)

Better but still don't like it.
Can't we put the os declaration into a variable and then pass it to a
procedure?
Say:

> ```scheme
> (define OS
>   (operating-system
> (kernel linux-libre-5.4)
> ; ... other fields ...
> ))
>
> (install-zfs OS)
> (install-foo OS)
> (install-bar OS)
> (install-something OS)
>
> ```

> Thanks
> raid5atemyhomework
> 

Jan Wielkiewicz




The Guix Data Service can now compare system tests between two revisions

2021-01-04 Thread Christopher Baines
Hey,

Small update on the stuff I'm doing around trying to test patches, the
Guix Data Service can now compare system test derivations between two
revisions [1]. I'm using this functionality to spot derivations to build
to test patches, and expose the status of those through the Guix Data
Service web interface.

1: 
https://git.savannah.gnu.org/cgit/guix/data-service.git/commit/?id=6f89066355246a475897a66751afc7a75dd62aa3

There's an example of what this looks like here [2]. In the script I'm
using to submit the builds to the Guix Build Coordinator instance, it
has a list of the system tests that change with any change to Guix, and
those will get a lower priority. Other system tests should be processed
with a relatively high priority.

2: 
https://data.guix-patches.cbaines.net/compare/system-test-derivations?base_commit=fdfc1c81ba018dd808b0dfd9827a73262c716808_commit=6a468a0c4b92580468cefd3883ced71679e9615d=en_US.UTF-8

There's still the issues that insights from building things are
currently visible in the Guix Data Service web interface, and not where
they'd be more useful (Patchwork or Mumi for example), but I've got some
ideas on how to start addressing that.

Chris


signature.asc
Description: PGP signature


Re: A new paradigm for modifying operating system declarations

2021-01-04 Thread Taylan Kammer

On 04.01.2021 16:38, raid5atemyhomework wrote:

Hi guix-developers,

I'd like to propose an idea for constructing `` objects.

[... snip ...]

What are your opinions?  Blech?  Yummy?  Is it worth exploring this paradigm 
for adding particularly complex features to an operating system definition?


Hi,

Interesting idea.

First, let me point out a more conventional alternative to what your 
'decorate' macro does:


  (define (compose proc . rest)
"Functional composition; e.g. ((compose x y) a) = (x (y a))."
(if (null? rest)
proc
(let ((rest-proc (apply compose rest)))
  (lambda x
(let-values ((x (apply rest-proc x)))
  (apply proc x))

This allows for something like:

  ((compose install-foo install-bar install-zfs)
   (operating-system ...))

Or perhaps cleaner:

  (define my-os-modifier (compose install-foo install-bar install-zfs))

  (my-os-modifier
   (operating-system ...))

If you need custom modifications within, you can do:

  (define my-os-modifier
(compose install-foo
 (lambda (os) ...)
 install-bar))

It's more verbose, but doesn't "break" standard Scheme syntax as much. 
Function composition is conceptually pretty easy and probably more 
well-known than "decorators" (which I had never heard of, personally).


Fewer macros means the reader needs to keep fewer special rules in mind.

---

Secondly, I wonder if passing an OS declaration through various 
procedures that modify it is really the best approach in the first place.


For build phases, we have the 'modify-phases' syntax.  For services, 
there is 'modify-services'.  Maybe there should be a 'modify-os' kind of 
syntax.  (In other words, if we're going to invent new syntax, why not 
go all-out and create the most convenient syntax for the use-case.)


Just my thoughts.


- Taylan



Re: Guile-zstd 0.1.1 released

2021-01-04 Thread Aleix Conchillo Flaqué
On Sun, Dec 27, 2020 at 7:01 AM Ludovic Courtès  wrote:
>
> Ludovic Courtès  skribis:
>
> > I’m pleased to announce the first release of Guile-zstd:
>
> Oops, a file was missing from the repo, so here’s a brand new release!
>
>   git clone https://notabug.org/guile-zstd/guile-zstd
>   cd guile-zstd
>   git checkout v0.1.1  # or f853c8eb81088f8fbf33d38e62cddea9a4984180
>   git tag -v v0.1.1
>

Great! This is now available in Guile Homebrew as well as guile-lzlib
and guile-zlib.

Btw, I sent a PR to guile-zstd:

https://notabug.org/guile-zstd/guile-zstd/pulls/1

Aleix



Re: 02/05: gnu: libmad: Install pkg-config file.

2021-01-04 Thread Kei
Hi Ludovic,

> It seems to me that we shouldn’t provide .pc files if upstream doesn’t
> do it.  The main reason is that developers who use Guix will come to
> rely on it and unknowingly write code that doesn’t work on other
> distros.  (I remember pestering in the past as I stumbled upon packages
> who depended on some library as packaged by a specific distro.  :-))
> 
> WDYT?
> 
> Apologies if I missed an earlier discussion!

No apologies needed, the discussion was minimal at best.  This patch is the
result of my yielding to the forces of incompatibility you mention.  Major
distributions like Debian, Arch Linux [1], and Fedora [2] have all added pkg-
config files for (at least) libmad.  Audacity expects to find pkg-config files
for the system libraries it uses, so I supplied those to follow the path of
least resistance.

If there's a way to supply "-I" and "-L" flags directly somewhere in the build
process as was done before, I'm not opposed to reverting these changes and
modifying Audacity's package definition myself during the next update.  I'll
investigate some of our other CMake packages for possible inspiration.

Thanks,
Kei

[0]: https://packages.debian.org/buster/amd64/libmad0-dev/filelist
[1]: 
https://github.com/archlinux/svntogit-packages/blob/packages/libmad/trunk/libmad.patch
[2]: 
https://koji.fedoraproject.org/koji/rpminfo?fileOrder=-name=22388610=-id=0#filelist


signature.asc
Description: This is a digitally signed message part


Re: [bug#45644] closed (Re: [bug#45644] [PATCH] gnu: esbuild: Update to 0.8.29.)

2021-01-04 Thread Leo Famulari
On Mon, Jan 04, 2021 at 06:02:54PM +0100, Tobias Geerinckx-Rice wrote:
> Leo, does this happen to any guix-patch@ or just Ryan's?

I've been noticing it with Ryan, but I don't know for sure if it happens
with anyone else. Sometimes I remember to change Ryan's address,
sometimes I don't.


signature.asc
Description: PGP signature


Re: [bug#45644] closed (Re: [bug#45644] [PATCH] gnu: esbuild: Update to 0.8.29.)

2021-01-04 Thread Development of GNU Guix and the GNU System distribution.

Tobias Geerinckx-Rice 写道:
I can't say what went wrong, only that I routinely apply patches 
from
Guix MLs through mu4e and ‘git am’ without trouble.  I 
think. The last

~dozen patches signed off by me seem fine, at least.


...no idea why I didn't actually test your actual patch that 
caused this actual question.


commit e258898862f38aa9effa33ddae7fc517b0a403f4 (HEAD -> tmp)
Author: Ryan Prior via Guix-patches via 

   gnu: Add picoev.
   
   * gnu/packages/networking.scm (picoev): New variable.
   
   Signed-off-by: Tobias Geerinckx-Rice 


Eh,

T G-R


signature.asc
Description: PGP signature


Re: [bug#45644] closed (Re: [bug#45644] [PATCH] gnu: esbuild: Update to 0.8.29.)

2021-01-04 Thread Development of GNU Guix and the GNU System distribution.

via,

Ryan Prior via Guix-patches via 写道:
git send-email --to=guix-patc...@gnu.org --suppress-cc=self 
0001-gnu-esbuild-Update-to-0.8.29.patch


I (and many others) use git send-email, so it can't be directly to 
blame.  I've never used it with an explicit patch file like that, 
though, only ‘-’, but that should change little.


You shouldn't bother too much with Mailgun & the like, this has 
nothing to do with Protonmail.


So I have to imagine that either Protonmail or your email server 
are changing the email address.


Looks like us.  It's by design.  Mailing lists *have to* change 
email addresses now.  If gnu.org sent out mail to mi^Whundreds of 
Guix users claiming to be directly from you:


 From: Ryan Prior 

it would amount to a poor forgery in this age of DMARC & DKIM. 
We'd be spamholed into oblivion by every recipient who doesn't go 
through extra (manual/heuristic) trouble to whitelist known MLs. 
And rightly so.


So instead we munge the From header[0], with a note to make 
receivers aware of that fact:


 From: Ryan Prior via Guix-patches via 
 Resent-From: Ryan Prior 

But this happens to every mail we resend, not only yours:

 From: Leo Famulari 
 Resent-From: Leo Famulari 

I can't say what went wrong, only that I routinely apply patches 
from Guix MLs through mu4e and ‘git am’ without trouble.  I think. 
The last ~dozen patches signed off by me seem fine, at least.


Leo, does this happen to any guix-patch@ or just Ryan's?

I don't know if it's possible with the commit-signing system you 
have in place to rewrite Guix repo history, or whether it would 
be worth it,


No and no.  Sorry.

We also can't use .mailmap to rewrite the user-facing address. 
We'd be mapping all of guix-patc...@gnu.org to you.


I can't think of a way to fix the past.  It's unfortunate, but 
we'll live.


Kind regards,

T G-R

[0]: We (Mailman?) get this part wrong, however: ‘Fu Barian via 
’ looks cute, but it abuses the format & clutters 
address books everywhere with the bogus name ‘Fu Barian via’.


signature.asc
Description: PGP signature


wip-full-source-bootstrap: from a 357-byte `hex0' to 'hello'

2021-01-04 Thread Jan Nieuwenhuizen
Hi!

I have reset Guix' wip-full-source-bootstrap branch with a first working
implementation of the, well, "Full Source Bootstrap" for x86-linux (and
x86_64-linux).  This bootstrap is rooted in the 357-byte hex0-seed from
the Stage0 project (https://savannah.gnu.org/projects/stage0):

--8<---cut here---start->8---
$ ./pre-inst-env guix build hello --verbosity=1
[..]
/gnu/store/w61gf93yn2bxwyc6d1xp4y9lavvw1l3d-hello-2.10
17:58:54 janneke@dundal:~/src/guix/wip-fsb [env]
--8<---cut here---end--->8---

(it runs too!).

When you look at the bottom of the graph (see attached), you will notice
"%bootstrap-guile": the driver that we use for the Guix build and also
for "bootar", "gash", and "gash-utils".  This "%bootstrap-guile" is not
used as a seed in anything that is built, "%bootstrap-guile", "bootar",
"gash", and "gash-utils" could be replaced with any other driver.

Two new packages are added: "bootstrap-seeds", which contains the
hex0-seed binary
(https://github.com/oriansj/bootstrap-seeds/blob/master/POSIX/x86/hex0-seed)
with ASCII-equivalent
(https://github.com/oriansj/bootstrap-seeds/blob/master/POSIX/x86/hex0_x86.hex0),
and "m2-planet-boot" which, starting from hex0, via hex1, M0, hex2 and
M1, bootstraps the M2-Planet transpiler.  M2 is a language that closely
resembles a subset of C.

The breakthrough is that this M2-Planet can now compile a version of GNU
Mes, as yet unreleased: the wip-m2 branch.  This removes the remaining
binary seeds: %bootstrap-mescc-tools and %bootstrap-mes, together with
the "%bootstrap-mes-rewired" hack.

Apart from a review there is still some work before it can be
integrated, in short (from the top commit message):

XXX TODO:
   * wip-full-source-bootstrap
 - release mes-0.24, update
 - possibly release m2-planet-1.8.0, update
 - rebase wip-full-source-bootstrap onto core-updates
 - integrate
   * wip-arm-bootstrap
 - finish; currently stuck on gawk-mesboot0
 - release mes-0.23
 - devise strategy for integrating wip-full-source-bootstrap and
   wip-arm-bootstrap

Greetings,
Janneke

*) https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-full-source-bootstrap



gcc-core-mesboot0-graph.dot
Description: Binary data

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com


Re: bug#45644: closed (Re: [bug#45644] [PATCH] gnu: esbuild: Update to 0.8.29.)

2021-01-04 Thread Ryan Prior
‐‐‐ Original Message ‐‐‐

> By the way, your patches show that they are authored by "Ryan Prior via 
> Guix-patches via guix-patc...@gnu.org". Is that the correct email address?

No, the correct email address is rpr...@protonmail.com

There's maybe 15 commits in Guix that have that incorrect email address. I'm 
not sure where it comes from or how to get rid of it. I send my patches by 
running a command like:

git send-email --to=guix-patc...@gnu.org --suppress-cc=self 
0001-gnu-esbuild-Update-to-0.8.29.patch

Git has my correct email address:

$ git config user.email
rpr...@protonmail.com

So I have to imagine that either Protonmail or your email server are changing 
the email address.

I don't know if it's possible with the commit-signing system you have in place 
to rewrite Guix repo history, or whether it would be worth it, but it would be 
nice to have my actual email on my commits instead of the weird munged one. If 
there's some behavior I can change to keep it from happening again the future I 
will certainly be flexible.

One thing I'm going to try (unless there's any objection) is to try sending 
email through a third party like mailgun instead of using Protonmail's SMTP 
server. If it's confusing or triggers some kind of fraud prevention mechanism 
to get e-mails to the list that have my Protonmail address on them but aren't 
actually from Protonmail's server, then the next thing I could try is to 
request a gnu.org email address for the purposes of contributing to GNU 
software.

Let me know what you think!
Ryan



A new paradigm for modifying operating system declarations

2021-01-04 Thread raid5atemyhomework
Hi guix-developers,

I'd like to propose an idea for constructing `` objects.

First, let me present the `decorate` form:

```scheme
(define-syntax decorate
  (syntax-rules ()
((decorate ((x ...)) a ...)
 (x ... a ...))
((decorate (x) a ...)
 (x a ...))
((decorate ((x ...) y ...) a ...)
 (x ... (decorate (y ...) a ...)))
((decorate (x y ...) a ...)
 (x (decorate (y ...) a ...)
```

Here's an example usage, instead of:

```scheme
(with-output-to-port (current-error-port)
  (lambda ()
(system "echo" "an error occurred")))
```

We can use:

```scheme
(decorate ((with-output-to-port (current-error-port))
   (lambda ()))
  (system "echo" "an error occurred"))
```

The reason why this is relevant, is that when I was tying out 
https://issues.guix.gnu.org/45643 , I ended up having several changes to the 
base `operating-system` form:

```scheme
(define system-zfs (make-zfs-package linux-libre-5.4))
(operating-system
  ; ... other fields ...
  (kernel linux-libre-5.4)
  (kernel-loadable-modules (list (list system-zfs "module")))
  (packages (cons* system-zfs
   ; ... other packages ...
   %base-packages))
  (services (cons* (service zfs-loader-service-type system-zfs)
   ; ... other services ...
   %desktop-services)))
```

So, I imagined instead of exposing `make-zfs-package` and 
`zfs-loader-service-type` and requiring so many modifications to various fields 
of `operating-system` form, expose instead a `install-zfs` form, like so:

```scheme
(install-zfs
  (operating-system
(kernel linux-libre-5.4)
; ... other fields ...
))
```

This `install-zfs` form would be defined as below:

```scheme
(define-public (install-zfs os)
  (define system-zfs (make-zfs-package (operating-system-kernel os)))
  (operating-system
(inherit os)
(location (operating-system-location os))
(kernel-loadable-modules (cons (list system-zfs "module")
   (operating-system-kernel-loadable-modules 
os)))
(packages (cons system-zfs
(operating-system-packages os)))
(services (cons (sevice zfs-loader-service-type system-zfs)
(operating-system-services os)
```

This would install ZFS "correctly", by adding the module to kernel loadable 
modules, adding the package so that ZFS can be managed at runtime, and adding 
the service to load ZFS module and import ZFS pools.  The hope is that this 
reduces the scope for errors in defining the operating system.

On the other hand, if this kind of pattern becomes common, then consider:

```scheme
(install-foo
  (install-bar
(install-zfs
   (operating-system
  #;...
```

Which brings us back to the `decorate` form, which reduces nestedness:

```scheme
(decorate (install-foo
   install-bar
   install-zfs
   operating-system)
   #;...)
```

This seems quite elegant to me.

Now for example we can consider that the `"zfs"` module supports various 
options as well, which would be put in a `/etc/modprobe.d/zfs.conf` file. We 
could consider for example that `install-zfs` could support an `options` keyed 
argument, which it will then add to the `modprobe` configuration file in an 
`etc-service-type` in a new service that it extends to the given 
``.

```scheme
(define install-zfs-full
  (lambda* (#:key (options '()) os)
#;...))
(define-public install-zfs
  (match-lambda
((os)
 (install-zfs-full #:os os))
(rest
 (apply install-zfs-full rest
```

Then in a system configuration:

```scheme
(decorate ((install-zfs #:options '(("zfs_arc_max" 50)) #:os)
   operating-system)
  #;...)
```

Something similar could be done for the `ddcci-driver-linux` example in the 
documentation for `kernel-module-loader-service-type`:

```scheme
(define-public install-ddcci
  (match-lambda
((os)
 (install-ddcci-full #:os os))
(rest
 (apply install-ddcci-full rest
(define install-ddcci-full
  (lambda* (#:key (options '())) os)
(define config-file
  (plain-file "ddcci.conf"
(if (null? options)
""
(string-join (cons "options ddcci" options)
 " "
(operating-system
  (inherit os)
  (location (operating-system-location os))
  (kernel-loadable-modules (cons ddcci-driver-linux
 (operating-system-kernel-loadable-modules 
os)))
  (services
(cons* (service kernel-module-loader-service-type
 '("ddcci" "ddcci_backlight"))
   (simple-service 'ddcci-config etc-service-type
 `(("modprobe.d/ddcci.conf" ,config-file)))
   (operating-system-services os))
```

Then, in the system configuration file:

```scheme
(decorate (install-zfs
   (install-ddcci #:options '("dyndbg" "delay=120") #:os)
   operating-system)
   (name "example-system")
 

Re: ZFS on Guix

2021-01-04 Thread raid5atemyhomework
Available here: https://issues.guix.gnu.org/45643

Please review! Hopefully it gets merged!

> Yes, I found that out after a little more digging.
>
> I have a preliminary patch here: https://issues.guix.gnu.org/45592
> However I will make a patchset based on this in order to support /home on ZFS 
> and managing ZFS the "legacy" way by (file-system ...) declaration, please 
> wait.
>
> > Hi,
> > the reason is that our "zfs" package uses
> > ("util-linux" ,util-linux "lib")
> > and then does
> > (substitute* "lib/libzfs/libzfs_mount.c"
> > (("/bin/mount") (string-append util-linux "/bin/mount"))
> > (("/bin/umount") (string-append util-linux "/bin/umount")))
> > .
> > That can't work.
> > zfs interna that will be patched by the Guix package are:
> > ./lib/libzfs/libzfs_mount.c
> > do_mount(const char *src, const char *mntpt, char *opts)
> > char *argv[9] = {
> > "/bin/mount",
> > "--no-canonicalize",
> > "-t", MNTTYPE_ZFS,
> > "-o", opts,
> > (char *)src,
> > (char *)mntpt,
> > (char *)NULL };
> > Easy fix would be to change our package to have both
> > ("util-linux:lib" ,util-linux "lib")
> > and
> > ("util-linux" ,util-linux)
> > .





Re: ZFS on Guix

2021-01-04 Thread raid5atemyhomework
Yes, I found that out after a little more digging.

I have a preliminary patch here: https://issues.guix.gnu.org/45592
However I will make a patchset based on this in order to support /home on ZFS 
and managing ZFS the "legacy" way by (file-system ...) declaration, please wait.



> Hi,
>
> the reason is that our "zfs" package uses
>
> ("util-linux" ,util-linux "lib")
>
> and then does
>
> (substitute* "lib/libzfs/libzfs_mount.c"
> (("/bin/mount") (string-append util-linux "/bin/mount"))
> (("/bin/umount") (string-append util-linux "/bin/umount")))
>
> .
>
> That can't work.
>
> zfs interna that will be patched by the Guix package are:
>
> ./lib/libzfs/libzfs_mount.c
>
> do_mount(const char *src, const char *mntpt, char *opts)
>
> char *argv[9] = {
> "/bin/mount",
> "--no-canonicalize",
> "-t", MNTTYPE_ZFS,
> "-o", opts,
> (char *)src,
> (char *)mntpt,
> (char *)NULL };
>
> Easy fix would be to change our package to have both
>
> ("util-linux:lib" ,util-linux "lib")
>
> and
>
> ("util-linux" ,util-linux)
>
> .





Bump "Added magic-enum header-only library as a package."

2021-01-04 Thread Josh Marshall
Can this get reviewed?  It looks like it fell between the cracks.


Re: 02/05: gnu: libmad: Install pkg-config file.

2021-01-04 Thread Ludovic Courtès
Hi Kei,

guix-comm...@gnu.org skribis:

> commit 83afa4e9a6aa4dc69f86651d795007dc96a31e64
> Author: Kei Kebreau 
> AuthorDate: Sun Aug 2 16:54:03 2020 -0400
>
> gnu: libmad: Install pkg-config file.
> 
> * gnu/packages/mp3.scm (libmad)[arguments]: Add 'install-pkg-config phase.

[...]

> +(add-after 'install 'install-pkg-config
> +  (lambda* (#:key outputs #:allow-other-keys)
> +(let* ((out (assoc-ref outputs "out"))
> +   (pkg-config-dir (string-append out "/lib/pkgconfig")))
> +  (mkdir-p pkg-config-dir)
> +  (with-output-to-file (string-append pkg-config-dir "/mad.pc")
> +(lambda _
> +  (format #t
> +  "prefix=~@*~a~@
> +   libdir=${prefix}/lib~@

It seems to me that we shouldn’t provide .pc files if upstream doesn’t
do it.  The main reason is that developers who use Guix will come to
rely on it and unknowingly write code that doesn’t work on other
distros.  (I remember pestering in the past as I stumbled upon packages
who depended on some library as packaged by a specific distro.  :-))

WDYT?

Apologies if I missed an earlier discussion!

Ludo’.



Re: bug#45069: BUG: Re: guix environment: error: cannot create container: unprivileged user cannot create user namespaces

2021-01-04 Thread Pierre Neidhardt
This issue seems to be gone for me with kernel 5.10.x.
I guess it was a kernel bug then.

-- 
Pierre Neidhardt
https://ambrevar.xyz/


signature.asc
Description: PGP signature