bug#51258: [PATCH v3] gnu: emacs: Handle pdump filenames that contain a fingerprint

2021-10-23 Thread Morgan . J . Smith
From: Morgan Smith 

* gnu/packages/emacs.scm (emacs) [restore-emacs-pdmp]: Change regex to handle
filenames that have a fingerprint in them. Remove #t at the end of the
phase. Don't bother deleting the old files because rename will overwrite them
anyways.
---

find-files does sort its return so my previous 2 patches probably work great
regardless of the number of pdmps we encounter (which will only ever be 1
anyways).

Also the fingerprint is a 32 char hexidecimal number used to uniquely[1]
identify the Emacs binary (well more specifically an earlier binary generated
during the build process).  If you put the version in there it would
completely invalidate the entire purpose of this fingerprint.  Different
distros will have different fingerprints for the same version and that's the
point.

Here is another over engineered solution even though the previous 2 still work
great.  I'm not sure if I'm supposed to just throw a '(use-modules ...)' in the
phase but if we want to use the #:modules argument then it will break all of
the other Emacsen that inherit from Emacs since they use different build
systems.


1. Hash collisions are a thing so maybe not actually uniquely


 gnu/packages/emacs.scm | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 6d9950d068..e25b79b832 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -179,18 +179,18 @@ (define* (emacs-byte-compile-directory dir)
  (add-after 'glib-or-gtk-wrap 'restore-emacs-pdmp
;; restore the dump file that Emacs installs somewhere in
;; libexec/ to its original state
-   (lambda* (#:key outputs target #:allow-other-keys)
- (let* ((libexec (string-append (assoc-ref outputs "out")
+   (lambda* (#:key outputs #:allow-other-keys)
+ (use-modules (ice-9 regex))
+ (let* ((pdmp-regex ".(emacs(-[[:xdigit:]]+)?.pdmp)-real")
+(libexec (string-append (assoc-ref outputs "out")
 "/libexec"))
-;; each of these find-files should return one file
-(pdmp (find-files libexec "^emacs\\.pdmp$"))
-(pdmp-real (find-files libexec
-   "^\\.emacs\\.pdmp-real$")))
-   (for-each (lambda (wrapper real)
-   (delete-file wrapper)
-   (rename-file real wrapper))
- pdmp pdmp-real))
- #t))
+(pdmp (find-files libexec pdmp-regex)))
+   (map
+(lambda (pdmp)
+  (rename-file
+   pdmp
+   (regexp-substitute #f (string-match pdmp-regex pdmp) 'pre 
1)))
+pdmp
  (add-after 'glib-or-gtk-wrap 'strip-double-wrap
(lambda* (#:key outputs #:allow-other-keys)
  ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped
-- 
2.33.1






bug#51348: Exception on `guix install nss-certs`

2021-10-23 Thread Leo Famulari
On Sat, Oct 23, 2021 at 10:57:20AM +, Raimundo Martins via Bug reports for 
GNU Guix wrote:
> Hi! I'm having an exception when trying to install nss-certs. I have 
> glibc-utf8-locales installed, and even tried installing glibc-locales even 
> though my LANG=en_US.UTF-8.
> I'm running Guix the package manager on top of Void Linux.

Right, you can use glibc-utf8-locales (a random locale collection
intended for test purposes) to get en_US.UTF-8

> Throw to key `encoding-error' with args `("scm_to_stringn" "cannot convert 
> wide string to output locale" 84 #f #f)'.

Did you set GUIX_LOCPATH, as suggested in the Application Setup section
of the manual?

https://guix.gnu.org/manual/en/html_node/Application-Setup.html

I'm not sure exactly which context this error occurs in, but I recommend
setting GUIX_LOCPATH in two places:

1) Your user's login environment. That is, ~/.bash_profile or equivalent
for your shell, like this:

export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale

Remember that you'll have to re-login to make it effective. This can be
done with `bash --login`.

2) The guix-daemon's environment. On Debian, that means adding a line
like this to the Service section of guix-daemon.service and reloading
and restarting the service:

Environment=GUIX_LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale

Does Void Linux use runit instead of systemd? I'm sure there is a way to
export environment variables in service contexts with runit.





bug#51352: Matterbridge contained a lot of vendored code

2021-10-23 Thread Leo Famulari
On Sat, Oct 23, 2021 at 04:57:02PM +0200, Denis 'GNUtoo' Carikli wrote:
> Given the huge amount of dependencies I was wondering what was the best
> approach here:
> - Would it makes sense to remove matterbridge from Guix, or should we
>   fix it instead?

There's no need to remove it.

Vendoring, or bundling, is not a matter of software freedom, but rather
about maintainability or transparency.

With a bundled dependency graph, the Guix tools for inspecting and
manipulating the dependency graph do not work. But, we already bundle
the dependencies of some other Go packages, and every Rust package does
not work with the Guix dependency graph tooling.





bug#34717: GPL and Openssl incompatibilities in u-boot and possibly others

2021-10-23 Thread Leo Famulari
On Fri, Oct 22, 2021 at 02:17:33PM -0700, Vagrant Cascadian wrote:
> * Disable substitutes for relevent packages. Technically correct as
>   license incompatibility is only triggered on transmission of binary,
>   though maybe missing something about the spirit of the GPL.

Maybe, but did anyone with standing ever take action regarding these
licensing incompatibilities?

Perhaps, looking at these issues too closely is also missing something
about the spirit of the GPL.





bug#51352: Matterbridge contained a lot of vendored code

2021-10-23 Thread Liliana Marie Prikler
Hi,

Am Samstag, den 23.10.2021, 16:57 +0200 schrieb Denis 'GNUtoo' Carikli:
> Hi,
> 
> When I sent the patch adding matterbridge to Guix, I only notified
> that I didn't know if it contained vendored code or not at the last
> moment (after the patch was sent, during the discussion about it, and
> before it was merged).
> 
> The issue is that I didn't know go at all and more specifically I
> didn't know its the compilation system worked. So I managed to create
> a package for matterbridge by looking at how it was done for other go
> packages.
> 
> After learning more about how go compilation worked, I found out that
> matterbridge contained a lot of vendored code.
Judging from the original issue, you did note that guideline and that
you were unsure about the "under the hood" stuff, which imo should have
prompted a closer look.  CC'd Mathieu to check whether pushing it
regardless was intentional.

> And Guix explicitly wants to avoid bundles code. In the "16.6
> Submitting Patches" section of the manual[1], we have:
> > 6. Make sure the package does not use bundled copies of software
> > already available as separate packages.
> And here while most dependencies are not already packaged, some are,
> and I guess that I should read between the lines and conclude that
> all the matterbridge dependencies should rather be packaged.
> 
> So the question is what should we do about that. 
> 
> As I understand with the go build system, or you vendor all
> dependencies, or you vendor none, and I've not yet managed to find a
> way to workaround that yet in Guix (to do a progressive unvendoring).
> 
> So instead I've started working on unvendoring matterbridge[2]
> completely, but if we go this route, there are more than 500
> dependencies.
> 
> To do that I first used the following command:
> guix import go -r github.com/42wim/matterbridge
> 
> I then started looking at each package definition that Guix didn't
> manage to detect the license of, and I read the licenses to find if
> they were free software. All the licenses I read were FSDG compliant.
> Usually they had some extra text indicating the provenance of the
> code or they would have multiple free software licenses.
> 
> Then I started adding packages for the dependencies that guix import
> go didn't manage to find.
It's good that you've started.  Perhaps you might want to illustrate
the dependency "tree" (assuming it is one) or graph to roughly indicate
how much needs to be done and at which points we could cut off portions
of the DAG to process as batches.

> Theses are repositories that are being forked from the official ones
> for a reason or another.
> 
> I've not finished that yet, but I still think it was a good idea to
> open a bug report as I've now more understanding of the problem.
> 
> Given the huge amount of dependencies I was wondering what was the
> best approach here:
> - Would it makes sense to remove matterbridge from Guix, or should we
>   fix it instead?
I'll let Mathieu decide that one.

> - If we fix it by packaging each dependencies, would it be ok if that
>   is done step by step, like if dependencies are packaged and patches
>   for them are sent, without necessarily a way to seriously test if
>   the packaged dependency work until they are used by other software
>   (like matterbridge)?
Ideally, those packages would at least have a working test suite, but I
understand that such concerns are not always valid in the industry :)
As noted before, cutting off branches of the dependency DAG at
reasonable points and committing them in batches sounds like a good
idea to me.  No one wants to review a 500 commit bomb.

> Also when I'll manage to update matterbridge[3] how should we deal
> with such amount of packages? Would I need to send one (generated)
> patch for the upgrade of each package?
One patch per package, plus one to fix the matterbridge package.

> I also guess that sticking as much as possible to what Guix import go
> generates would help in situations like that as it would make the
> maintenance faster.
The importers exist to make your life easier, but they're not
omniscient.  Please do exercise caution when dealing with them :)

Cheers,
Liliana






bug#51352: Matterbridge contained a lot of vendored code

2021-10-23 Thread Denis 'GNUtoo' Carikli
Hi,

When I sent the patch adding matterbridge to Guix, I only notified that
I didn't know if it contained vendored code or not at the last moment
(after the patch was sent, during the discussion about it, and before
it was merged).

The issue is that I didn't know go at all and more specifically I didn't
know its the compilation system worked. So I managed to create a
package for matterbridge by looking at how it was done for other go
packages.

After learning more about how go compilation worked, I found out that
matterbridge contained a lot of vendored code.

And Guix explicitly wants to avoid bundles code. In the "16.6 Submitting
Patches" section of the manual[1], we have:
> 6. Make sure the package does not use bundled copies of software
> already available as separate packages.
And here while most dependencies are not already packaged, some are,
and I guess that I should read between the lines and conclude that all
the matterbridge dependencies should rather be packaged.

So the question is what should we do about that. 

As I understand with the go build system, or you vendor all
dependencies, or you vendor none, and I've not yet managed to find a
way to workaround that yet in Guix (to do a progressive unvendoring).

So instead I've started working on unvendoring matterbridge[2]
completely, but if we go this route, there are more than 500
dependencies.

To do that I first used the following command:
guix import go -r github.com/42wim/matterbridge

I then started looking at each package definition that Guix didn't
manage to detect the license of, and I read the licenses to find if
they were free software. All the licenses I read were FSDG compliant.
Usually they had some extra text indicating the provenance of the code
or they would have multiple free software licenses.

Then I started adding packages for the dependencies that guix import go
didn't manage to find.

Theses are repositories that are being forked from the official ones
for a reason or another.

I've not finished that yet, but I still think it was a good idea to
open a bug report as I've now more understanding of the problem.

Given the huge amount of dependencies I was wondering what was the best
approach here:
- Would it makes sense to remove matterbridge from Guix, or should we
  fix it instead?
- If we fix it by packaging each dependencies, would it be ok if that
  is done step by step, like if dependencies are packaged and patches
  for them are sent, without necessarily a way to seriously test if
  the packaged dependency work until they are used by other software
  (like matterbridge)?

Also when I'll manage to update matterbridge[3] how should we deal with
such amount of packages? Would I need to send one (generated) patch for
the upgrade of each package?

I also guess that sticking as much as possible to what Guix import go
generates would help in situations like that as it would make the
maintenance faster.

References:
---
[1]https://guix.gnu.org/manual/en/guix.html#Submitting-Patches
[2]https://git.replicant.us/contrib/GNUtoo/infrastructure/guix/log/?h=matterbridge-unvendor
[3]Right now there is a compilation issue that I didn't manage to fix,
  even with help from #guix).

Denis.


pgpKwoSUj7Kgr.pgp
Description: OpenPGP digital signature


bug#50592: Can't guix system init with grub-efi-bootloader from system that boots using grub-bootloader

2021-10-23 Thread pelzflorian (Florian Pelz)
The original wish to install to EFI NVRAM without EFI
NVRAM is impossible; workarounds have been described.  Closing.

Regards,
Florian





bug#51348: Exception on `guix install nss-certs`

2021-10-23 Thread Raimundo Martins via Bug reports for GNU Guix
Hi! I'm having an exception when trying to install nss-certs. I have 
glibc-utf8-locales installed, and even tried installing glibc-locales even 
though my LANG=en_US.UTF-8.
I'm running Guix the package manager on top of Void Linux.
I want to install nss-certs because curl, youtube-dl, and probably others all 
complain about failure to verify certificates. I'm mentioning this because it 
might be another bug altogether.

$ guix install nss-certs
The following package will be installed:
nss-certs 3.59

substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
0.1 MB will be downloaded
nss-certs-3.59 130KiB 1.0MiB/s 00:00 [ ] 49.1%
Backtrace:
In guix/ui.scm:
2185:7 19 (run-guix . _)
2148:10 18 (run-guix-command _ . _)
In ice-9/boot-9.scm:
1752:10 17 (with-exception-handler _ _ #:unwind? _ # _)
1752:10 16 (with-exception-handler _ _ #:unwind? _ # _)
In guix/scripts/substitute.scm:
771:15 15 (_)
543:9 14 (process-substitution # _ "/gnu/store/?" ?)
In guix/serialization.scm:
424:4 13 (fold-archive _ _ _ _)
468:33 12 (read "/gnu/store/2f032p23rgga56kkn91q7hl0vzqyr7k5-nss?" ?)
468:33 11 (read "/gnu/store/2f032p23rgga56kkn91q7hl0vzqyr7k5-nss?" ?)
468:33 10 (read "/gnu/store/2f032p23rgga56kkn91q7hl0vzqyr7k5-nss?" ?)
468:33 9 (read "/gnu/store/2f032p23rgga56kkn91q7hl0vzqyr7k5-nss?" ?)
451:26 8 (read "/gnu/store/2f032p23rgga56kkn91q7hl0vzqyr7k5-nss?" ?)
520:21 7 (_ "/gnu/store/2f032p23rgga56kkn91q7hl0vzqyr7k5-nss-ce?" ?)
In ice-9/boot-9.scm:
1747:15 6 (with-exception-handler # ?)
In unknown file:
5 (symlink "NetLock_Arany_=Class_Gold=_F?tan?s?tv?ny:2.6?" ?)
In ice-9/boot-9.scm:
1685:16 4 (raise-exception _ #:continuable? _)
1685:16 3 (raise-exception _ #:continuable? _)
1780:13 2 (_ #< components: (#<> #)
1685:16 1 (raise-exception _ #:continuable? _)
1685:16 0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Throw to key `encoding-error' with args `("scm_to_stringn" "cannot convert wide 
string to output locale" 84 #f #f)'.
substitution of /gnu/store/2f032p23rgga56kkn91q7hl0vzqyr7k5-nss-certs-3.59 
failed
guix install: error: some substitutes for the outputs of derivation 
`/gnu/store/srh9xhqjd2r4giaq7x5gwbybqia6kc4r-nss-certs-3.59.drv' failed 
(usually happens due to networking issues); try `--fallback' to build 
derivation from source

PS: Great job on Guix!! With so many similar package managers out there, it was 
about time someone actually invented something new!

bug#51341: gajim fails to start call

2021-10-23 Thread rdes via Bug reports for GNU Guix
## Guix
guix 6cd33f8
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 6cd33f855c88e63849c96d5df7ca256dd0379f4a

## Versions
- OS: Linux
- GTK Version: 3.24.24
- PyGObject Version: 3.34.0
- GLib Version : 2.62.6
- python-nbxmpp Version: 2.0.2
- Gajim Version: 1.3.2

## Traceback
```
Traceback (most recent call last):
File 
"/gnu/store/w4svc0x3azr64ik8jhbirapidncn3cbb-gajim-1.3.2/lib/python3.8/site-packages/gajim/chat_control.py",
 line 719, in _on_call_with_mic
self._on_jingle_button_toggled(['audio'])
File 
"/gnu/store/w4svc0x3azr64ik8jhbirapidncn3cbb-gajim-1.3.2/lib/python3.8/site-packages/gajim/chat_control.py",
 line 954, in _on_jingle_button_toggled
sid = con.get_module('Jingle').start_audio(
File 
"/gnu/store/w4svc0x3azr64ik8jhbirapidncn3cbb-gajim-1.3.2/lib/python3.8/site-packages/gajim/common/modules/jingle.py",
 line 164, in start_audio
jingle.add_content('voice', JingleAudio(jingle))
File 
"/gnu/store/w4svc0x3azr64ik8jhbirapidncn3cbb-gajim-1.3.2/lib/python3.8/site-packages/gajim/common/jingle_rtp.py",
 line 359, in __init__
self.setup_stream()
File 
"/gnu/store/w4svc0x3azr64ik8jhbirapidncn3cbb-gajim-1.3.2/lib/python3.8/site-packages/gajim/common/jingle_rtp.py",
 line 374, in setup_stream
JingleRTPContent.setup_stream(self, self._on_src_pad_added)
File 
"/gnu/store/w4svc0x3azr64ik8jhbirapidncn3cbb-gajim-1.3.2/lib/python3.8/site-packages/gajim/common/jingle_rtp.py",
 line 116, in setup_stream
self.p2pstream.set_transmitter_ht('nice', params)
gi.repository.GLib.GError: fs-error: Could not create the nicesrc element (1)

```
## Steps to reproduce the problem
...
start a chat -> open options and click 'start Call...' -> click 'With 
Microphone'

bug#34717: GPL and Openssl incompatibilities in u-boot and possibly others

2021-10-23 Thread Maxime Devos
Vagrant Cascadian schreef op vr 22-10-2021 om 14:15 [-0700]:
> [...]
> Though, it is *possible* that various u-boot-BOARD in some cases
> doesn't
> include any openssl code at all in the resulting binaries, but builds
> some tools used during the build process, that are then used to
> produce
> various cryptographic signatures in the build:
> 
>   https://lists.denx.de/pipermail/u-boot/2021-October/464533.html
> 
> If that's true, it should be ok for various boards (though the
> possibility of openssl code getting linked in would be hard to
> catch).

Add openssl to #:disallowed-references. Then the build will fail
if the store item has a reference to openssl.  

This most likely won't catch uses of the _static_ OpenSSL libraries
though, so the "openssl:static" input would need to be removed for
this approach to work.

Greetings,
Maxime.
-- 
not hacking on guix for a while, only occassionally looking at IRC logs
and bug reports.  E-mails are unsigned until backup is located.







bug#48462: Corrupt, un-repairable store after power cut during upgrade

2021-10-23 Thread Liliana Marie Prikler
Hi Guix,

Am Sonntag, den 16.05.2021, 17:59 +0900 schrieb elaexuo...@wilsonb.com:
> Hey Guix,
> 
> Recently, during in the middle of a `guix package -m
> .guix/manifest.scm`, my
> machine had power failure. After rebotting, I simply reran the above
> and it completed without error.
> 
> However, it appears that some of files in the store items are
> corrupt:
> 
> [...]
> As an extra bit of annoyance, the handy verify and repair tools fail
> to see a problem:
> 
> [...]
> 
> Some questions:
> 
>   1) Am I just missing something obvious?
>   2) How could grafting end up producing empty files in the output?
>   3) Is the store supposed to be robust against power failures?
After dealing with some softer issues related to power outage during
`guix package', I think I'm now able to say that Guix does not process
grafts correctly during repair.

What happened for me, was that certain store files were empty and when
they were later grafted, those empty files were carried over.  Guix,
upon repairing the store, did then not regraft those, but rather kept
them as-is.  I have since fixed said issue by manually deleting the
graft and rebuilding (this was possible, because nothing referred to it
– I'm not sure why `guix gc' didn't pick it up as dead earlier,
though).  Stuff in my profiles seem to also have been rebuilt after
roll-back+gc.

So I think content repair needs to have at least two steps:
1. checking and repairing all "normal" derivations.
2. fixing grafts of packages that were repaired in step 1.

WDYT?






bug#51141: guix home reconfigure does not apply changes to shepherd services

2021-10-23 Thread Andrew Tropin
On 2021-10-22 02:32, Oleg Pykhalov wrote:

> Andrew Tropin  writes:
>
> […]
>
>> According to what I see in the shepherd tests:
>> https://git.savannah.gnu.org/cgit/shepherd.git/tree/tests/replacement.sh?h=4c5176f5a7a5a1e7d7f258f585e8ed127a21b99a#n61
>>
>> and how it's implemented in home-shepherd:
>> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/home/services/shepherd.scm?h=7c3f28fdc4edc00f66801cd51a5ba08eee44f77f#n59
>>
>> It should work as you expect it.
>
> It doesn't.
>
>> Tried to do the following: I updated documentation field for a shepherd
>> service, reconfigured and it got loaded after I restarted a service.
>>
>> ~ $ herd doc state
>> Init, update and maybe destroy state.
>> ~ $ herd restart state
>> Service state has been stopped.
>> Service state has been started.
>> ~ $ herd doc state
>> Really init, update and maybe destroy state.
>>
>> Didn't check if start action gexp is updated too, but I expect it was.
>
> The start action is the interest, or configuration record, or service
> extension.

From the experiment above it's clear that new configuration got loaded
and service record get updated after restart (at least one field of it).

>
> (guix scripts system reconfigure) has a upgrade-shepherd-services
> procedure, which was created in 240b57f0ca576708ebf6cfa0dfe2803fa9ff2323
> and discussed in https://issues.guix.gnu.org/22039

The difference with update-shepherd-services is the usage of Shepherd
CLI in home service instead of Shepherd API in system service.  So the
problem can hide somewhere around this part.

Automatic unloading in home-service doesn't happens and as I said it's
by design to prevent cases of losing unsaved work.  However, it can be
implemented with an optional separate flag to shepherd configuration
record and extension to run-on-change-service or as it done in system
shepherd with the list of services, which doesn't have to be unloaded
automatically.

>
>
> [ The following text only describes how to reproduce the issue. ]
>
>
> When I tried to write goimapnotify service no changes applied after
> modifications in home-goimapnotify-shepherd-service [1] and [2], which
> are typical service-type and record.  I didn't have similar issues with
> self-written system services.
>
> [1]: 
> https://gitlab.com/wigust/dotfiles/-/blob/ea2111906233099267f3b581b4aae39ad9645c2d/dotfiles/guixsd/modules/home/services/mail.scm#L28-45
> [2]: 
> https://gitlab.com/wigust/dotfiles/-/blob/ea2111906233099267f3b581b4aae39ad9645c2d/dotfiles/guixsd/home.scm#L40-65
>

I'm out of office for next 1.5 week, will check it when I come back.

>
> Service extension also requires to unload service, e.g. mcron service
> extension in [1] and [2].
>
> [1]: 
> https://gitlab.com/wigust/dotfiles/-/blob/ea2111906233099267f3b581b4aae39ad9645c2d/dotfiles/guixsd/modules/home/services/package-management.scm#L16-50
> [2]: 
> https://gitlab.com/wigust/dotfiles/-/blob/ea2111906233099267f3b581b4aae39ad9645c2d/dotfiles/guixsd/home.scm#L154-161
>
> If I remove the guix-delete-generations service from home configuration,
> mcron job still exists according to 'herd schedule mcron'.
> --8<---cut here---start->8---
> (home-environment
>  (services
>   (list (service guix-delete-generations-service-type ;; ...
>  
> --8<---cut here---end--->8---
>
> Oleg.

BTW, please remove unreviewed changes to interpose function, they are
incorrect.
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/services/configuration.scm?id=41492639e0223dc8fc1a357e1f9537577c055db7#n362

The explanation: https://issues.guix.gnu.org/50967#66
The correct version: 
https://git.sr.ht/~abcdw/rde/commit/4961f47c3f97c21799a39b3e906fa99b2625f331

-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature