bug#43420: icecat causes pulseaudio to crash

2024-01-19 Thread Nathan Dehnel
Yeah probably, I just switched to pipewire

On Fri, Jan 19, 2024, 21:10 Maxim Cournoyer 
wrote:

> Hi Nathan,
>
> Mark H Weaver  writes:
>
> > Hi Nathan,
> >
> > Nathan Dehnel  writes:
> >> Removing ~/.config/pulse fixed it,
> >
> > That's good!
> >
> >> I think because it removed a config file that was loading a couple of
> >> modules.
> >
> > Can you verify that hypothesis by adding back the config file(s),
> > without any database files, restarting pulseaudio and trying again?  If
> > it crashes, please show us the exact contents of the config file(s) and
> > the pulseaudio output.
> >
> > My hypothesis is that it was the database files in ~/.config/pulse/ that
> > caused the crash, in which case adding config files should not matter.
> >
> >> Try this:
> >>
> >> 1. start JACK1
> >> 2. pulseaudio -L module-jack-source -L module-jack-sink
> >> 3. open icecat and mess around with the seekbar
> >
> > How about you try it first?  Until my hypothesis is disproven, I would
> > prefer not to spend more time on this.
>
> It's been 4 years.  Should we close this issue?  It also seems like
> something that should be brought to Firefox upstream, if it still
> exists.
>
> --
> Thanks,
> Maxim
>


bug#57292: bug#59489: gdm: Accessibility icon missing in log in screen

2024-01-19 Thread Maxim Cournoyer
Hi Dariqq,

Thanks for working toward a fix for this.

Dariqq  writes:

> gdm needs the "/share" subdirectory of these packages present in XDG_DATA_DIRS
> such that the accessibility settings work:
> - gnome-control-center: For the icon.
> - dconf: To be able to change settings.
> - at-spi2-core: contains accessibiltiy dbus-service.
>
> * gnu/services/xorg.scm ()[gnome-shell-assets]: Add
> at-spi2-core, dconf, gnome-control-center.
>
> Change-Id: I71138ef52af6d440fadc43425b0fc48b186dcc40
> ---
>  gnu/services/xorg.scm | 6 +-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
> index 1ee15ea90c..27c8aa40c3 100644
> --- a/gnu/services/xorg.scm
> +++ b/gnu/services/xorg.scm
> @@ -51,6 +51,7 @@ (define-module (gnu services xorg)
>#:use-module (gnu packages freedesktop)
>#:use-module (gnu packages gnustep)
>#:use-module (gnu packages gnome)
> +  #:use-module (gnu packages gtk)
>#:use-module (gnu packages admin)
>#:use-module (gnu packages bash)
>#:use-module (gnu system shadow)
> @@ -1039,7 +1040,10 @@ (define-record-type* 
>(debug? gdm-configuration-debug? (default #f))
>(default-user gdm-configuration-default-user (default #f))
>(gnome-shell-assets gdm-configuration-gnome-shell-assets
> -  (default (list adwaita-icon-theme 
> font-abattis-cantarell)))
> +  (default (list at-spi2-core
> + dconf
> + gnome-control-center
> + adwaita-icon-theme 
> font-abattis-cantarell)))

Since this is, as the name implies, intended for artwork or other
non-functional "assets", perhaps these package should be propagated by
the gdm package itself?  Would that have achieve the same?

This issue appears to have been discussed previously, although I can't
find it anymore...

-- 
Thanks,
Maxim





bug#43420: icecat causes pulseaudio to crash

2024-01-19 Thread Maxim Cournoyer
Hi Nathan,

Mark H Weaver  writes:

> Hi Nathan,
>
> Nathan Dehnel  writes:
>> Removing ~/.config/pulse fixed it,
>
> That's good!
>
>> I think because it removed a config file that was loading a couple of
>> modules.
>
> Can you verify that hypothesis by adding back the config file(s),
> without any database files, restarting pulseaudio and trying again?  If
> it crashes, please show us the exact contents of the config file(s) and
> the pulseaudio output.
>
> My hypothesis is that it was the database files in ~/.config/pulse/ that
> caused the crash, in which case adding config files should not matter.
>
>> Try this:
>>
>> 1. start JACK1
>> 2. pulseaudio -L module-jack-source -L module-jack-sink
>> 3. open icecat and mess around with the seekbar
>
> How about you try it first?  Until my hypothesis is disproven, I would
> prefer not to spend more time on this.

It's been 4 years.  Should we close this issue?  It also seems like
something that should be brought to Firefox upstream, if it still
exists.

-- 
Thanks,
Maxim





bug#68595: VLANs in static-networking-service-type hangs shepherd

2024-01-19 Thread Lars Rustand


For fun I tried to use the exact configuration that is mentioned in the
manual and was amazed that it worked, and the networking service is able
to start successfully. Here is the working configuration:

--8<---cut here---start->8---
(static-networking
 (links (list (network-link
   (name "bond0")
   (type 'bond)
   (arguments '((mode . "802.3ad")
(miimon . 100)
(lacp-active . "on")
(lacp-rate . "fast"

  (network-link
   (mac-address "98:11:22:33:44:55")
   (arguments '((master . "bond0"

  (network-link
   (mac-address "98:11:22:33:44:56")
   (arguments '((master . "bond0"

  (network-link
   (name "bond0.1055")
   (type 'vlan)
   (arguments '((id . 1055)
(link . "bond0"))
 (addresses (list (network-address
   (value "192.168.1.4/24")
--8<---cut here---end--->8---


However, if I simply substitute the bond interface with a real interface
I get back the error described in my previous message. This
configuration fails:

--8<---cut here---start->8---
(static-networking
 (links (list (network-link
   (name "bond0.1055")
   (type 'vlan)
   (arguments '((id . 1055)
(link . "ens3"))
 (addresses (list (network-address
   (value "192.168.1.4/24")
   (device "bond0.1055")
--8<---cut here---end--->8---


So it seems that VLANs do work for bonds, but not for physical network
interfaces. I've done a lot of digging on the internet and cannot find a
single example of anyone using VLANs at all in Guix, so maybe that is
why this problem hasn't been discovered yet.





bug#68595: VLANs in static-networking-service-type hangs shepherd

2024-01-19 Thread Lars Rustand


Like the title says, if you add any VLAN in a
static-networking-service-type it seems like the whole shepherd daemon
freezes up and anything that depends on it stops responding.
Additionally the networking does not get fully configured either.

After configuring a VLAN `herd status`, `herd restart networking` and
any other herd command hangs forever with no output. Even reboot is not
working. The only remedy is to restart the system using the power
button, but even after the restart the networking service still fails to
start.

VLANs are seemingly created, but no addresses are created.

Steps to reproduce:

1. Add a static network with a VLAN to your system config (see below for
minimal example)
2. Reconfigure your system
3. Restart the networking service with `sudo herd restart networking`
4. Observe that herd does not finish
5. Try to run `herd status`, `guix system reconfigure`, or `sudo reboot`.
6. Observe that none of the commands seem to have any effect, and that
they hang indefinitely with no output

--8<---cut here---start->8---
(service static-networking-service-type
  (list (static-networking
 (links
  (list (network-link
 (name "myvlan")
 (type 'vlan)
 (arguments '((id . 3)
  (link . "eth0"))
 (addresses
  (list (network-address
 (device "myvlan@eth0")
 (value "192.168.0.2/24")))
--8<---cut here---end--->8---

Alternatively here are the reproduction steps using VM:

1. Build a qcow2 image, make sure there is enough space to reconfigure
   the system. Use --save-provenance so you have the config inside the
   vm so you can reconfigure later.
   `guix system image --image-type=qcow2 --image-size=30G --save-provenance 
minimal.scm`
2. Copy the qcow image to a writable directory.
3. Start up the vm.
```
sudo qemu-system-x86_64 \
   -nic user,model=virtio-net-pci \
   -enable-kvm -m 2048 \
   -device virtio-blk,drive=myhd \
   -drive
   if=none,file=1a7wi5mgcy3wrsx6pcnag6qjbb87djwl-image.qcow2,id=myhd
```
4. Edit /run/current-system/configuration.scm and uncomment the static
   networking.
5. Reconfigure the system.
6. Try to restart the networking service. `herd restart networking`
7. The command will hang infinitely. Cancel it.
8. Check the network interfaces. The VLAN interface will have been
   created, but it will not have any address.
9. The aforementioned commands will all be unresponsive now.
10. If you reboot your VM you will see that the networking service is
   failed at startup, and if you try to restart the service you will get
   an error: #<&netlink-response-error errno: 17>

--8<---cut here---start->8---
(use-modules
  (gnu)
  (gnu services)
  (gnu services base)
  (gnu services networking)
  (gnu bootloader)
  (gnu bootloader grub)
  (gnu system)
  (gnu system file-systems)
  (gnu system accounts))

(operating-system
  (host-name "minimal")

  (users
(cons*
  (user-account
(name "lars")
(group "users"))
  %base-user-accounts))

  (services
   (cons*
  (service dhcp-client-service-type)
  ;; Commented out so you can uncomment it after booting the VM
  ;;(service static-networking-service-type
  ;;  (list (static-networking
  ;; (links
  ;;  (list (network-link
  ;; (name "myvlan")
  ;; (type 'vlan)
  ;; (arguments '((id . 3)
  ;;  (link . "eth0"))
  ;; (addresses
  ;;  (list (network-address
  ;; (device "myvlan@eth0")
  ;; (value "192.168.0.2/24")))
%base-services))

   (bootloader
 (bootloader-configuration
   (bootloader grub-bootloader)
   (targets '("/dev/vda"

   (file-systems
(cons*
 %base-file-systems)))
--8<---cut here---end--->8---





bug#68591: Error when using shepherd on foreign distro

2024-01-19 Thread Einar Largenius
Hi,

I am setting up shepherd for use by my user account on a foreign distro. I 
setup as described in the manual in the section "(shepherd) Managing User 
Services". When I try to run it using shepherd, it crashes on the line:

 ;; Send shepherd into the background
 (perform-service-action 'shepherd 'daemonize)

with the error:

Uncaught exception while loading configuration file 
'/home/jaadu/.config/shepherd/init.scm': (goops-error #f "No applicable method 
for ~S in call ~S" (#< service-actions (1)> (service-actions 
shepherd)) ())

Removing said line resolves the issue.

-- 
Med vänliga hälsningar Einar





bug#68231: Frei?

2024-01-19 Thread Liliana Marie Prikler
close 68231
thanks

Hallo, Enzo

Am Dienstag, dem 02.01.2024 um 23:11 +0100 schrieb Enzo Brandsch:
> ich bin leider aus Gründen „gezwungen“ unfreie Software auf meinem
> Laptop zu nutzen. Würde aber sehr sehr gerne Guix als daily-driver
> nutzen. [...]
> PS: Mein Problem ist ein Intel Wifi Treiber. Laptop ist ein ThinkPad
> Yoga. Ich habe bis jetzt immer Arch benutzt werde aber nun bis Guix
> meine WLAN-Karte erkennt Clear nutzen.
Es ist meines Wissens (und leider auch Erfahrung) nach möglich, einen
Laptop ohne WLAN-Karte zu betreiben.  Freilich ist das etwas
umständlicher, weil du dich dann nach herumliegenden Ethernet-Kabeln
umsehen musst, aber je nachdem wofür du diesen Laptop verwendest,
sollte es möglich sein, eine Kabelverbindung z.B. zum Betriebsnetz
aufzubauen.

Du könntest auch, so dein Laptop es zulässt, eine freie WLAN-Karte oder
einen Adapter benutzen.  Generell empfehlenswert ist RYF-zertifizierte
Hardware, z.B. [1], aber auch andere Seiten können dir helfen, in
Erfahrung zu bringen, wie gut bestimmte Komponenten mit freier Software
funktionieren. 

> Wäre es für solche Fälle möglich auch unfreie Software zuzulassen?
> Ich kenne mich etwas mit Linux aus habe mir aber noch nie Lizenzen
> angesehen und werde vermutlich in naher Zukunft auch kein Auge darauf
> werfen.
Die GNU FSDG [2], an der wir uns orientieren, ist diesbezüglich sehr
eindeutig: 
  A free system distribution must not steer users towards obtaining any
  nonfree information for practical use, or encourage them to do so.
Zu Deutsch:
  Eine freie Systemdistribution darf Nutzer·innen weder dazu verleiten,
  unfreie Information für den praktischen Gebrauch zu erhalten, noch 
  sie darin unterstützen.

Zum Punkt WLAN-Karte weiters
  Some applications and drivers require firmware to function, 
  and sometimes that firmware is distributed only in object code 
  form, under a nonfree license. [...] [N]o matter how it's encoded,
  any nonfree firmware needs to be removed from a free system.

Zu Deutsch:
  Einige Anwendungen oder Treiber benötigen „Firmware“, um   
  zu funktionieren, und diese Firmware ist manchmal nur als Objekt-Code
  unter einer nichtfreien Lizenz vorhanden.  [...] [A]ber egal, in
  welcher Form diese nichtfreie Firmware aufliegt, sie muss von einem
  freien System entfernt werden.

> Als Kompromiss könnte man ja zum installieren von unfreier Software
> mehrere Schritte hinzufügen welche sicherstellen das man unfreie
> Software installieren möchte/muss.
Dieser Kompromiss gilt tatsächlich auf Festen zur Installierung von
Linux-Distributionen [3], nicht aber (wie hier) auf zum GNU-Projekt
gehörenden öffentlichen Mailing-Listen, oder IRC-Kanälen.  Auf solchen
Plattformen sind Diskussionen über nichtfreie Software zu unterlassen.

Liebe Grüße,
Liliana

[1] https://ryf.fsf.org/categories/wireless-adapters
[2] https://www.gnu.org/distros/free-system-distribution-guidelines.html
[3] https://www.gnu.org/philosophy/install-fest-devil.html





bug#67157: gcc-toolchain@4.8.5 not available on the official substitute servers

2024-01-19 Thread Thomas Schwinge
I ran into the same issue.

On 2023-11-16T11:25:18+0100, Simon Tournier  wrote:
> On Mon, 13 Nov 2023 at 20:19, Frédéric Mahé  wrote:
>> Is the absence of a x86-64 GNU Linux GCC 4.8.5 build deliberate?

> No, it is not deliberate, sadly.  Well, I have tried to find a past
> revision when gcc-toolchain@4.8.5 builds but I fail.
>
> The Guix Data Service shows that gcc-toolchain@4.8.5 is not available
> for the build farm named Bordeaux.  And the substitutes are also missing
> on the other build farm named Berlin.
>
> Well, my guess is the issue is related to an update of GCC.  Therefore,
> I am trying this commit:
>
> 27322ac30be6816eca33ee946a04d3b0ab32896f
> CommitDate: Thu Sep 8 21:40:00 2022 +0200
>
> which is right before the update to GCC 11 as default.
>
>   guix time-machine --commit=27322ac30be6816eca33ee946a04d3b0ab32896f \
>-- build gcc-toolchain@4.8.5 --no-grafts
>
> Wait and see…

I tried this, but after quite a long time, it failed, too.  :-|

In file included from ../../gcc-4.8.5/gcc/cp/except.c:1008:
cfns.gperf: At global scope:
cfns.gperf:101:1: error: ‘const char* libc_name_p(const char*, unsigned 
int)’ redeclared inline with ‘gnu_inline’ attribute
cfns.gperf:26:14: note: ‘const char* libc_name_p(const char*, unsigned 
int)’ previously declared here

If I'm understanding things right, Ricardo actually has addressed this
issue in commit e6994d7e3f3f4a69f984c9e67df27abe1bc07c1c
"gnu: gcc-arm-none-eabi-4.9: Fix incompatible redeclaration"
('gnu/packages/patches/gcc-4.9-inline.patch'), and similarly a number of
years earlier in commit db90eb8c2bd447ab53bed80e5b0ea5105a928cdf
"gnu: Add propeller-gcc-4" -- both not applied to the GCC 4.8 sources
we're trying to build here.  Anyway, putting Ricardo in CC, in case
you've got any input to this one here, too?  :-)

The latter commit's 'gnu/packages/patches/gcc-4.6-gnu-inline.patch'
indicates that "the 3.0.3 release of gperf" may be when this started, so
I'll try to invoke the time-machine for older than that, as a first
(hopefully simple) try.





bug#68565: home-pipewire-service-type doesn't provide any pw- and wpctl command.

2024-01-19 Thread Apoorv via Bug reports for GNU Guix
home-pipewire-service-type doesn't provide any pw- and wpctl command. I 
especially rely on wpctl command as I have keybind to change volume using wpctl.

-- 
 Sent with Tuta; enjoy secure & ad-free emails: 
 https://tuta.com


bug#67157: gcc-toolchain@4.8.5 not available on the official substitute servers

2024-01-19 Thread Thomas Schwinge
On 2024-01-18T20:39:16+0100, I wrote:
> In file included from ../../gcc-4.8.5/gcc/cp/except.c:1008:
> cfns.gperf: At global scope:
> cfns.gperf:101:1: error: ‘const char* libc_name_p(const char*, unsigned 
> int)’ redeclared inline with ‘gnu_inline’ attribute
> cfns.gperf:26:14: note: ‘const char* libc_name_p(const char*, unsigned 
> int)’ previously declared here
>
> If I'm understanding things right, Ricardo actually has addressed this
> issue in commit e6994d7e3f3f4a69f984c9e67df27abe1bc07c1c
> "gnu: gcc-arm-none-eabi-4.9: Fix incompatible redeclaration"
> ('gnu/packages/patches/gcc-4.9-inline.patch'), and similarly a number of
> years earlier in commit db90eb8c2bd447ab53bed80e5b0ea5105a928cdf
> "gnu: Add propeller-gcc-4" -- both not applied to the GCC 4.8 sources
> we're trying to build here.  Anyway, putting Ricardo in CC, in case
> you've got any input to this one here, too?  :-)

Actually, also years-old commit 625492ee1a5a8e515b97d4b76734584c1b420243
"gnu: gcc-4.7: Resurrect building with gcc-5.4.0" (Janneke CCed), and
also discussed in 
"gcc-4.8 fails to build with recent GCC versions" (Thiago CCed), and

"build failure: gcc-4.8.5 (gcc-toolchain-4.8.5)" (Christopher CCed), for
example.

In 
"GCC 6.3.1 errors compiling GCC 4.8.5 - error: ‘const char* libc_name_p(const 
char*, unsigned int)’ redeclared inline with ‘gnu_inline’ attribute",
or  "gcc-6 doesn't build gcc-5 anymore",
for example, Jakub suggested building with '-std=gnu++98' as another
option.  (Maybe that can be achieved by using a build GCC where this is
implicit?)

I suppose more instances of this issue can be found if searching more
thoroughly.  ;-)

> The latter commit's 'gnu/packages/patches/gcc-4.6-gnu-inline.patch'
> indicates that "the 3.0.3 release of gperf" may be when this started, so
> I'll try to invoke the time-machine for older than that, as a first
> (hopefully simple) try.





bug#65381: leptonica 1.83.1 installation failed

2024-01-19 Thread Herman Rimm via Bug reports for GNU Guix
Hello,

#68560 disables this failing test. You can apply that patch series or
just add this build-phase to the leptonica package definition:

  (add-after 'unpack 'disable-failing-tests
(lambda _
  (substitute* "prog/Makefile.am"
(("ioformats_reg") ""); Fails for unclear reason.
(("pngio_reg") "" ; Fails non-deterministically.

Cheers,
Herman Rimm





bug#68566: No jack emulation for pipewire?

2024-01-19 Thread Apoorv via Bug reports for GNU Guix
The home-pipewire-service-type provides emulation for pulseaudio but not for 
jack and for people like me who work with realtime audio, needs jack support.

 How do I enable jack support?

 Right now I have to manually from terminal launch any app with pw-jack APP 
that I want to use with jack support.

-- 
 Sent with Tuta; enjoy secure & ad-free emails: 
 https://tuta.com


bug#49935: gcc-4.8 fails to build with recent GCC versions

2024-01-19 Thread Thomas Schwinge
On 2021-08-07T20:07:32-0300, Thiago Jung Bauermann via Bug reports for GNU Guix 
 wrote:
> In file included from 
> /tmp/guix-build-gcc-4.8.5.drv-0/build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cstdlib:72:0,
>  from 
> ../../../../gcc-4.8.5/libstdc++-v3/libsupc++/del_op.cc:38:
> /gnu/store/358n1m2c8fbn6nr1mib4racjh7wfqfmy-gcc-10.3.0/include/c++/stdlib.h:38:12:
>  error: ‘std::abort’ has not been declared
>  using std::abort;
> ^
> /gnu/store/358n1m2c8fbn6nr1mib4racjh7wfqfmy-gcc-10.3.0/include/c++/stdlib.h:39:12:
>  error: ‘std::atexit’ has not been declared
>  using std::atexit;
> ^
> [...]

This looks similar to 
"AVR toolchain fails to build", fixed by
commit fd96ae4a709c5509f2d78af3968d64fe805ad1ef
"gnu: avr-gcc: Fix conflicting GCC headers", or

"gcc-cross-sans-libc-arm-none-eabi-4.9.4-1.227977 fails to build", fixed
by commit 7f6d3f395023ff430cf8b7a981d4780698e9d132
"gnu: gcc-arm-none-eabi: Fix conflicting GCC headers".





bug#39885: Bioconductor tarballs are not archived

2024-01-19 Thread Timothy Sample
Hello,

Ludovic Courtès  writes:

> As for past tarballs, #swh-devel comrades say we could send them a list
> of URLs and they’d create “Save Code Now” requests on our behalf (we
> cannot do it ourselves since the site doesn’t accept plain tarballs.)
>
> Any volunteer to write a script that’d generate a list of Bioconductor
> content-addressed URLs (the bordeaux.guix.gnu.org/file ones) for say the
> past couple of years?

Sorry I’m a little late to this party, but I wrote a similar script a
while ago.  It creates a “sources.json” file of all the sources that the
PoG database analyzed and found missing in SWH.  It only covers what PoG
monitors (which is *almost* everything, but not quite).

  $ git clone https://git.ngyro.com/preservation-of-guix
  $ cd preservation-of-guix
  $ wget https://ngyro.com/pog-reports/latest/pog.db

  [Wait a long time because my server is slw.]

  $ guile -L . etc/sources.scm pog.db > missing-sources.json

With some modifications, I used it to generate the attached list of
Bioconductor sources (based off of recent, unpublished PoG data).  I’ve
also attached the modifications in case anyone is curious or wants to
make a similar list.  I will publish the PoG database soon (today?), so
maybe wait for that before generating any lists.


-- Tim



bioconductor-sources.json.gz
Description: Binary data
diff --git a/etc/sources.scm b/etc/sources.scm
index 71d157d..515cf00 100644
--- a/etc/sources.scm
+++ b/etc/sources.scm
@@ -1,5 +1,5 @@
 ;;; Preservation of Guix
-;;; Copyright © 2022 Timothy Sample 
+;;; Copyright © 2022, 2024 Timothy Sample 
 ;;;
 ;;; This file is part of Preservation of Guix.
 ;;;
@@ -61,6 +61,7 @@ FROM fods f
 WHERE f.algorithm = 'sha256'
 AND (fr.reference LIKE '\"%'
 OR fr.reference LIKE '(\"%')
+AND fr.reference LIKE '%bioconductor.org%'
 AND NOT fr.is_error
 AND f.is_in_swh IS NOT NULL
 AND NOT f.is_in_swh")
@@ -85,22 +86,25 @@ Subresource Integrity metadata value."
   (define b64 (base64-encode bv))
   (string-append "sha256-" b64))
 
-(define (web-reference-urls reference)
+(define (web-reference-filename reference)
   (define uris
 (match (call-with-input-string reference read)
   ((urls ...) (map string->uri urls))
   (url (list (string->uri url)
-  (append-map (lambda (uri)
-(map uri->string
- (maybe-expand-mirrors uri %mirrors)))
-  uris))
+  (or (any (lambda (uri)
+ (and (string-suffix? "bioconductor.org" (uri-host uri))
+  (basename (uri-path uri
+   uris)
+  (error "Not a 'bioconductor.org' refernce" reference)))
 
 (define (record->url-source rec)
   (match-let ((#(digest reference) rec))
-(let ((urls (web-reference-urls reference))
-  (integrity (nix-base32-sha256->subresource-integrity digest)))
+(let* ((filename (web-reference-filename reference))
+   (url (string-append "https://bordeaux.guix.gnu.org/file/";
+   filename "/sha256/" digest))
+   (integrity (nix-base32-sha256->subresource-integrity digest)))
   `(("type" . "url")
-("urls" . ,(list->vector urls))
+("urls" . ,(vector url))
 ("integrity" . ,integrity)
 
 (define (lookup-missing-sources db)


bug#68561: Guix wrongfully claims there is no space left

2024-01-19 Thread Lars Rustand


Christopher Baines  writes:
> Check df -i, it could be that some filesystem has run out of inodes.

Thanks, this was the case. To recover a useful amount of inodes I had to
delete almost all previous generations. I first tried to delete
generations older than one month with `guix gc -d 1m`, but this had
little effect. Even doing `guix gc -d 1w` only recovered about 50%
inodes.

This lead me to question what was using so many inodes, and by running
`{ find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n; } 2>/dev/null`
I found out that papirus-icon-theme is using an insane amount of
inodes. The below output shows all the inodes created by *one* profile
generation:

   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus/48x48@2x/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus/48x48@2x/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus/48x48/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus/48x48/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus/96x96/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus-Dark/48x48@2x/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus-Dark/48x48@2x/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus-Dark/48x48/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus-Dark/48x48/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/ePapirus-Dark/96x96/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus/48x48@2x/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus/48x48@2x/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus/48x48/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus/48x48/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus/96x96/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Dark/48x48@2x/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Dark/48x48@2x/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Dark/48x48/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Dark/48x48/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Dark/96x96/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Light/48x48@2x/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Light/48x48@2x/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Light/48x48/apps
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Light/48x48/categories
   8438 
/gnu/store/d8mq08hz1hkjkr4jib5wjhrbmxxqc28s-profile/share/icons/Papirus-Light/96x96/apps

This gives a total of over 210,000 inodes used per profile generation.

I have the Papirus theme installed as part of my home configuration
which is under constant change, so it is often rebuilt many times per
day. I had to use `guix gc -d 1d` to get back a reasonable amount of
inodes.

This package seems to be impossible to keep in any profile that is
regenerated often, which is a shame. I was going to use it as a part of
my "desktop experience", and I really like to have my whole user
environment contained within the home config to make everything as
reproducible and simple to install on other machines as possible. Having
it manually installed in the default profile would stop it from eating
up unnecessary inodes, but at the expense of introducing it as an
external dependency to my home config, which is suboptimal.