Workflow ideas [Was: branch master updated: gnu: eudev: Use new package style.]

2023-05-30 Thread Development of GNU Guix and the GNU System distribution.
Hi Attila,

On Tue, May 30, 2023 at 12:49 PM Attila Lendvai  wrote:
>
> maybe with the addition of team branches a core-updates branch would be much 
> more manageable? and it'd be easier to merge it more frequently?

I think even fewer people will feel responsible for that unloved
branch. Instead, I would change the workflow:

1. Only folks who provide substitutes or their delegates can push to
master. That would ensure the highest availability of substitutes the
project can muster. I would rename the master branch to 'ready' or
'installable'. The people I would call "the farmers".

2. All team branches have to go through core-updates. That would
strike a balance between individual and project responsibility. Like
the "Three Musketeers," it would be "all for one, and one for all" at
that point. The pressure to make the branch clean will be felt from
all parts of the project. I would also rename the core-updates branch
to 'testing'.

3. When fixes do not introduce new features, like security or
documentation patches, the authors may appeal to "the farmers" for
direct adoption, thereby sidestepping 'testing'. The farmers can
delegate that work. The delegates I would call "the polishers".

4. No more pushes to core-updates (other than reversals) after the
second Wednesday of each month.

With that workflow, I think we would merge core-updates every one to
three weeks. People can revert.

Just another goofy idea from an odd fellow.

Kind regards
Felix



Re: How many bytes do we add (closure of guix) when adding one new package?

2023-05-30 Thread Jack Hill

On Tue, 30 May 2023, Simon Tournier wrote:


Just to put a figure on what means “big”: currently the .go files are 5
times bigger than their associated .scm.

Somehow, it’s the trap of DSL. :-) Packages are declarative and the
information they declare is not dense.  However, because they are
bytecompiled to a general programming language, their specificity is not
exploited.  In an ideal world, the compiled binary representation of the
packages should be smaller than their human-readable text-file
counterpart.

The mentioned improvement is nice.  And it’s visible:

--8<---cut here---start->8---
145M 
/gnu/store/nqrb3g4l59wd74w8mr9v0b992bj2sd1w-guix-d62c9b267-modules/lib/guile/3.0/site-ccache/gnu
117M 
/gnu/store/s6rqlhqr750k44ynkqqj5mwjj2cs2yln-guix-a09968565-modules/lib/guile/3.0/site-ccache/gnu
127M 
/gnu/store/ndii4bpyzh2rc05ya61s89rig9hdrl4k-guix-a0178d34f-modules/lib/guile/3.0/site-ccache/gnu
164M 
/gnu/store/ni63a203jf61dwxlv8kr9b8x3vb1pdsp-guix-8e2f32cee-modules/lib/guile/3.0/site-ccache/gnu
--8<---cut here---end--->8---


This is probably a tagent, sorry, but I was curious how well the .go files 
compressed. It seems quite well, actually:


jackhill@mimolette ~/.config/guix/current/lib/guile/3.0/site-ccache/gnu [env]$ 
sudo compsize .
Processed 595 files, 1659 regular extents (1659 refs), 0 inline.
Type   Perc Disk Usage   Uncompressed Referenced
TOTAL   21%   36M 173M 173M
none   100%   16K  16K  16K
zstd21%   36M 173M 173M

Best,
Jack

Re: branch master updated: gnu: eudev: Use new package style.

2023-05-30 Thread Attila Lendvai
> > As for reverting it, I'm somewhat indifferent. I'm more interested in
> > the longer term cost of making changes like this than the temporary
> > drops in substitute availability.
> 
> You mean as a precedent for similar commits in the future or as a way
> of involuntarily breaking other packages? As already stated, I only
> pushed the commit because I was quite sure that all rebuilds would
> succeed.


a less frequent drop in substitute availability on master would considerably 
elevate my satisfaction with guix as a user. and in my reading that is the cost 
that Christopher talks about here.

it's rather disruptive on my workflow when i want to deploy something from my 
channel to my servers, but due to missing substitutes i need to edit the 
channels.scm file, pick a commit in the past... and make sure i pick it in sync 
with That-Other-Channel... then hope that the past commit i picked is covered 
by substitutes, because currently it's not predictable which commits are fully 
built by the build farm... then issue a `guix pull --allow-downgrades` to 
revert the guix channel... and then repeat it all if i picked a commit that is 
also not covered well...

my 0.02 is that it shouldn't be an either-or choice between 1) teams and topic 
branches, and 2) a core-updates-like staging branch. the latter should be 
employed, if for nothing else, to keep substitute availability high on master.

maybe with the addition of team branches a core-updates branch would be much 
more manageable? and it'd be easier to merge it more frequently? then it could 
be a home for commits that are semantically simple, but expensive to build.

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“If he controls your ideas he will soon control your actions, because every 
action is preceded by an idea.”
— Silvano Arieti (1914–1981), 'The Will to Be Human'




Re: How many bytes do we add (closure of guix) when adding one new package?

2023-05-30 Thread Csepp


Simon Tournier  writes:

> Hi,
>
> On ven., 26 mai 2023 at 18:21, Ludovic Courtès  wrote:
>
>> I agree that .go files are quite big (.scm files as well, but we’ve
>> improved information density somewhat by removing input labels :-)).
>>
>> The size of .go files went down when we switch to the baseline compiler
>> (aka. -O1):
>>
>>   https://lists.gnu.org/archive/html/guix-devel/2020-06/msg00071.html
>>
>> That thread has ideas of things to do to further reduce .go size.
>
> Just to put a figure on what means “big”: currently the .go files are 5
> times bigger than their associated .scm.
>
> Somehow, it’s the trap of DSL. :-) Packages are declarative and the
> information they declare is not dense.  However, because they are
> bytecompiled to a general programming language, their specificity is not
> exploited.  In an ideal world, the compiled binary representation of the
> packages should be smaller than their human-readable text-file
> counterpart.
>
> The mentioned improvement is nice.  And it’s visible:
>
> --8<---cut here---start->8---
> 145M 
> /gnu/store/nqrb3g4l59wd74w8mr9v0b992bj2sd1w-guix-d62c9b267-modules/lib/guile/3.0/site-ccache/gnu
> 117M 
> /gnu/store/s6rqlhqr750k44ynkqqj5mwjj2cs2yln-guix-a09968565-modules/lib/guile/3.0/site-ccache/gnu
> 127M 
> /gnu/store/ndii4bpyzh2rc05ya61s89rig9hdrl4k-guix-a0178d34f-modules/lib/guile/3.0/site-ccache/gnu
> 164M 
> /gnu/store/ni63a203jf61dwxlv8kr9b8x3vb1pdsp-guix-8e2f32cee-modules/lib/guile/3.0/site-ccache/gnu
> --8<---cut here---end--->8---
>
> However, it has almost no impact on the whole size; scaled by the number
> of packages.
>
>> Download size has to be treated separately though.  For example, ‘git
>> pull’ doesn’t redownload all of the repo or directory, and it uses
>> compression heavily.  Thus, a few hundred bytes of additional .scm text
>> translate in less than that.
>>
>> As for the rest, download size can be reduced for example by choosing a
>> content-address transport, like something based on ERIS.
>>
>> I think we must look precisely at what we want to optimize—on-disk size,
>> or bandwidth requirement, in particular—and look at the whole solution
>> space.
>
> I think one direction is to tackle the way *package-modules* is built.
> Because of that, Guix is building too much and the design is not optimal
> – whatever technical solutions we implement for improving after that.
>
> On my poor laptop, Guix is becoming unusable because many operations are
> becoming so slow – when it’s still acceptable with APT of Debian.  For
> instance, it’s something like 20 minutes for running “guix pull” without
> substitutes.  And when I am traveling without a fast Internet
> connection, it’s often too much for the network at hand.
>
> Currently, “guix pull” is either building too much and downloading too
> much; by design.
>
>
> Cheers,
> simon

Something I've been considering is if Guix could make use of database
optimizations on its packages.  Having access to Scheme for everything
is nice, but using it as a storage solution is kind of silly when we are
mostly just storing structs.  Some kind of struct-of-arrays optimization
could definitely reduce their size by a lot, might even speed up some
operations.  It makes zero sense to load full package definitions from
disk for most queries, such as guix search, with an SoA representation
we could load only the fields that we care about.

ps.: Now I'm even more glad that I'm using a file system with
transparent compression on all my Guix systems.



Re: branch master updated: gnu: eudev: Use new package style.

2023-05-30 Thread Liliana Marie Prikler
Am Montag, dem 29.05.2023 um 20:29 +0100 schrieb Christopher Baines:
> 
> Liliana Marie Prikler  writes:
> 
> > Am Montag, dem 29.05.2023 um 19:28 +0100 schrieb Christopher
> > Baines:
> > > 
> > > guix-comm...@gnu.org writes:
> > > 
> > > > This is an automated email from the git hooks/post-receive
> > > > script.
> > > > 
> > > > lilyp pushed a commit to branch master
> > > > in repository guix.
> > > > 
> > > > The following commit(s) were added to refs/heads/master by this
> > > > push:
> > > >  new 7ff003bcbf gnu: eudev: Use new package style.
> > > > 7ff003bcbf is described below
> > > > 
> > > > commit 7ff003bcbf388677c7c85b1709c58f41f84b9947
> > > > Author: Felix Lechner 
> > > > AuthorDate: Sun May 28 16:28:20 2023 -0700
> > > > 
> > > >     gnu: eudev: Use new package style.
> > > >     
> > > >     * gnu/packages/linux.scm (eudev)[arguments]: Convert to
> > > > list of
> > > > G-Expressions.
> > > >     [native-inputs]: Drop labels.
> > > >     
> > > >     Signed-off-by: Liliana Marie Prikler
> > > > 
> > > > ---
> > > >  gnu/packages/linux.scm | 94 --
> > > > 
> > > > 
> > > >  1 file changed, 45 insertions(+), 49 deletions(-)
> > > 
> > > These changes do look to affect the derivation for eudev, and
> > > eudev also has too many dependents to update on the master
> > > branch.
> > > 
> > > → guix refresh -l eudev
> > > Building the following 1913 packages would ensure 4138 dependent
> > > packages are rebuilt: ...
> > Should I revert it?  Even with the mass rebuild, my intuition was
> > that it'd be okay since it's no functional change and core-updates
> > was dropped in favour of teams (with no particular team being
> > responsible for udev afaik).
> 
> I think there is disagreement about this (including at least some
> maintainers thinking differently), but I'm of the opinion that while
> there has been discussion about stopping using core-updates, people
> should follow the currently documented process, and for now that's
> still using staging/core-updates [1].
Fair enough, I will refrain from pushing mass rebuilds directly to
master.

> 1:
> https://guix.gnu.org/manual/devel/en/html_node/Submitting-Patches.html#index-rebuild-scheduling-strategy
> 
> As for reverting it, I'm somewhat indifferent. I'm more interested in
> the longer term cost of making changes like this than the temporary
> drops in substitute availability.
You mean as a precedent for similar commits in the future or as a way
of involuntarily breaking other packages?  As already stated, I only
pushed the commit because I was quite sure that all rebuilds would
succeed.

Cheers



ping on a build fix for a build failure (main branch)

2023-05-30 Thread Andy Tai
Hi, following previous comments (thanks) I have submitted a patch to
correctly fix a build failure due to compiler warnings, instead of
avoiding not building tests, on this Guix bug issue:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63526

Please review the patch (which shall be a simple and low risk fix).  Thanks!



Re: [PATCH] web: Include blocked-by in graphql .

2023-05-30 Thread Christopher Baines

Arun Isaac  writes:

> Thanks for the patch! I have pushed it after renaming blocked-by to
> blocked_by. Underscores are a bit cringey, but unfortunately GraphQL
> doesn't like hyphens.
>
> To see the effects of this change, we need to reconfigure berlin to run
> the latest mumi. I will figure that out and do it soon.

Awesome, thanks for fixing my rough untested changes!

Chris


signature.asc
Description: PGP signature


Re: pam_ssh_agent_auth on a Guix System?

2023-05-30 Thread Development of GNU Guix and the GNU System distribution.
Hi Giovanni,

On Tue, May 30, 2023 at 9:59 AM Giovanni Biscuolo  wrote:
>
> AFAIU pam_ssh_agent_auth https://pamsshagentauth.sourceforge.net/ is not
> already packaged in Guix, or am I missing something?

I was not able to find it, either.

> I'd like to execute sudo without having to set and enter a password [1]
> and that PAM module is needed

You could also add a line like this to your /etc/sudoers (but I don't
recommend it)

user_name ALL=(ALL) NOPASSWD:ALL

> is someone already using such a configuration in a Guix System?

Not quite. I added my public ssh key to root's authorized_keys. It's
different from what you are looking for but gives you a root prompt
with 'ssh root@localhost`. I did it because it's required for 'guix
deploy'.

Personally, I have not used the SSH agent, but it's an interesting
avenue. I use Kerberos instead, which is probably the gold standard
for distributed authentication. You are doing the right thing by
thinking about your options.

When playing with PAM, please remember that PAM can never elevate
privileges of its own process. It is a shared library that runs as
part of a privileged executable (often setuid root). PAM decides
whether someone hoping to use the executable is authorized to do so.

Kind regards
Felix



pam_ssh_agent_auth on a Guix System?

2023-05-30 Thread Giovanni Biscuolo
Hello,

AFAIU pam_ssh_agent_auth https://pamsshagentauth.sourceforge.net/ is not
already packaged in Guix, or am I missing something?

I'd like to execute sudo without having to set and enter a password [1]
and that PAM module is needed

...then also a service to properly setup /etc/pam.d/sudo and
/etc/sudoers

is someone already using such a configuration in a Guix System?

Thanks, Gio'


[1] is it safer or more efficient to have users authentication without
password but only with a SSH key?

-- 
Giovanni Biscuolo

Xelera IT Infrastructures


signature.asc
Description: PGP signature


Re: How many bytes do we add (closure of guix) when adding one new package?

2023-05-30 Thread Simon Tournier
Hi,

On ven., 26 mai 2023 at 18:21, Ludovic Courtès  wrote:

> I agree that .go files are quite big (.scm files as well, but we’ve
> improved information density somewhat by removing input labels :-)).
>
> The size of .go files went down when we switch to the baseline compiler
> (aka. -O1):
>
>   https://lists.gnu.org/archive/html/guix-devel/2020-06/msg00071.html
>
> That thread has ideas of things to do to further reduce .go size.

Just to put a figure on what means “big”: currently the .go files are 5
times bigger than their associated .scm.

Somehow, it’s the trap of DSL. :-) Packages are declarative and the
information they declare is not dense.  However, because they are
bytecompiled to a general programming language, their specificity is not
exploited.  In an ideal world, the compiled binary representation of the
packages should be smaller than their human-readable text-file
counterpart.

The mentioned improvement is nice.  And it’s visible:

--8<---cut here---start->8---
145M 
/gnu/store/nqrb3g4l59wd74w8mr9v0b992bj2sd1w-guix-d62c9b267-modules/lib/guile/3.0/site-ccache/gnu
117M 
/gnu/store/s6rqlhqr750k44ynkqqj5mwjj2cs2yln-guix-a09968565-modules/lib/guile/3.0/site-ccache/gnu
127M 
/gnu/store/ndii4bpyzh2rc05ya61s89rig9hdrl4k-guix-a0178d34f-modules/lib/guile/3.0/site-ccache/gnu
164M 
/gnu/store/ni63a203jf61dwxlv8kr9b8x3vb1pdsp-guix-8e2f32cee-modules/lib/guile/3.0/site-ccache/gnu
--8<---cut here---end--->8---

However, it has almost no impact on the whole size; scaled by the number
of packages.

> Download size has to be treated separately though.  For example, ‘git
> pull’ doesn’t redownload all of the repo or directory, and it uses
> compression heavily.  Thus, a few hundred bytes of additional .scm text
> translate in less than that.
>
> As for the rest, download size can be reduced for example by choosing a
> content-address transport, like something based on ERIS.
>
> I think we must look precisely at what we want to optimize—on-disk size,
> or bandwidth requirement, in particular—and look at the whole solution
> space.

I think one direction is to tackle the way *package-modules* is built.
Because of that, Guix is building too much and the design is not optimal
– whatever technical solutions we implement for improving after that.

On my poor laptop, Guix is becoming unusable because many operations are
becoming so slow – when it’s still acceptable with APT of Debian.  For
instance, it’s something like 20 minutes for running “guix pull” without
substitutes.  And when I am traveling without a fast Internet
connection, it’s often too much for the network at hand.

Currently, “guix pull” is either building too much and downloading too
much; by design.


Cheers,
simon



Re: Guidelines for pre-trained ML model weight binaries (Was re: Where should we put machine learning model parameters?)

2023-05-30 Thread Simon Tournier
Hi Ludo,

On ven., 26 mai 2023 at 17:37, Ludovic Courtès  wrote:

>> Well, I do not know if we have reached a conclusion.  From my point of
>> view, both can be included *if* their licenses are compatible with Free
>> Software – included the weights (pre-trained model) as licensed data.
>
> We discussed it in 2019:
>
>   https://issues.guix.gnu.org/36071

Your concern in this thread was:

My point is about whether these trained neural network data are
something that we could distribute per the FSDG.

https://issues.guix.gnu.org/36071#3-lineno21

and we discussed this specific concern for the package leela-zero.
Quoting 3 messages:

Perhaps we could do the same, but I’d like to hear what others think.

Back to this patch: I think it’s fine to accept it as long as the
software necessary for training is included.

The whole link is worth a click since there seems to be a ‘server
component’ involved as well.

https://issues.guix.gnu.org/36071#3-lineno31
https://issues.guix.gnu.org/36071#5-lineno52
https://issues.guix.gnu.org/36071#6-lineno18


And somehow I am rising the same concern for packages using weights.  We
could discuss case-by-case, instead I find important to sketch
guidelines about the weights because it would help to decide what to do
with neuronal networks; as “Leela Chess Zero” [1] or others (see below).

1: https://issues.guix.gnu.org/63088


> This LWN article on the debate that then took place in Debian is
> insightful:
>
>   https://lwn.net/Articles/760142/

As pointed in #36071 mentioned above, this LWN article is a digest of
some Debian discussion, and it is also worth to give a look to the raw
material (arguments):

https://lists.debian.org/debian-devel/2018/07/msg00153.html


> To me, there is no doubt that neural networks are a threat to user
> autonomy: hard to train by yourself without very expensive hardware,
> next to impossible without proprietary software, plus you need that huge
> amount of data available to begin with.

About the “others” from above, please note that GNU Backgamon, already
packaged in Guix with the name ’gnubg’, asks similar questions. :-)

Quoting the webpage [2]:

Tournament match and money session cube handling and cubeful
play. All governed by underlying cubeless money game based
neural networks.


As Russ Allbery is pointing [3] – similarly as I tried to do in this
thread – it seems hard to distinguish the data resulting from a
pre-processing as some training to the data just resulting from good
fitted parameters.


2: https://www.gnu.org/software/gnubg/
3: https://lwn.net/Articles/760199/


> As a project, we don’t have guidelines about this though.  I don’t know
> if we can come up with general guidelines or if we should, at least as a
> start, look at things on a case-by-case basis.

Somehow, if we do not have guidelines for helping in deciding, it makes
harder the review of #63088 [1] asking the inclusion of lc0 or it makes
hard to know what to do about GNU Backgamon.

On these specific cases, what do we do? :-)


Cheers,
simon



Re: [PATCH] web: Include blocked-by in graphql .

2023-05-30 Thread Arun Isaac


Hi Chris,

Thanks for the patch! I have pushed it after renaming blocked-by to
blocked_by. Underscores are a bit cringey, but unfortunately GraphQL
doesn't like hyphens.

To see the effects of this change, we need to reconfigure berlin to run
the latest mumi. I will figure that out and do it soon.

Regards,
Arun



Re: [PATCH] web: Include blocked-by in graphql .

2023-05-30 Thread Christopher Baines

Christopher Baines  writes:

> * mumi/web/graphql.scm (): Include blocked-by.
> ---
>  mumi/web/graphql.scm | 5 -
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/mumi/web/graphql.scm b/mumi/web/graphql.scm
> index aa4f38c..3cc19cd 100644
> --- a/mumi/web/graphql.scm
> +++ b/mumi/web/graphql.scm
> @@ -63,7 +63,10 @@
>(list
>(messages (non-nullable-type (list-type ))
>  (lambda (parent . _)
> -  (issue-messages (bug-num parent)
> +  (issue-messages (bug-num parent
> +  (blocked-by (non-nullable-type (list-type ))
> +  (lambda (parent . _)
> +(map bug-status (bug-blockedby parent)
>  
>  (define-object-type 
>(name  (lambda (parent . _)

I'm looking at this so that the qa-frontpage can see what issues are
blocked.

I'm not sure how to test this though.


signature.asc
Description: PGP signature


[PATCH] web: Include blocked-by in graphql .

2023-05-30 Thread Christopher Baines
* mumi/web/graphql.scm (): Include blocked-by.
---
 mumi/web/graphql.scm | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mumi/web/graphql.scm b/mumi/web/graphql.scm
index aa4f38c..3cc19cd 100644
--- a/mumi/web/graphql.scm
+++ b/mumi/web/graphql.scm
@@ -63,7 +63,10 @@
   (list
   (messages (non-nullable-type (list-type ))
 (lambda (parent . _)
-  (issue-messages (bug-num parent)
+  (issue-messages (bug-num parent
+  (blocked-by (non-nullable-type (list-type ))
+  (lambda (parent . _)
+(map bug-status (bug-blockedby parent)
 
 (define-object-type 
   (name  (lambda (parent . _)
-- 
2.40.1