bug#25476: pivot-root test fails on Ubuntu 16.04

2017-01-18 Thread Paul Garlick
Hi,

I have noticed that the pivot-root test on my development system has
started to fail.  After running 'make check' the result: FAIL is
recorded for the syscalls.scm test.

I have recently updated the system.  It is running Ubuntu 16.04.
 Previously, the test passed.  Now:

$ uname -r
4.4.0-59-generic

Best,

Paul.

bug#25476: pivot-root test fails on Ubuntu 16.04

2017-01-20 Thread Paul Garlick
Hi Ludo,
> That’s on Git master, right?
Yes, back on the master branch the test still fails:
$ git describe
v0.11.0-3373-g2df3d14
> Could you post tests/syscalls.log?
> 

Attached.
Best,
Paul.

test-name: mount, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:38
source:
+ (test-equal
+   "mount, ENOENT"
+   ENOENT
+   (catch 'system-error
+  (lambda ()
+(mount "/dev/null" "/does-not-exist" "ext2")
+#f)
+  (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: umount, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:46
source:
+ (test-assert
+   "umount, ENOENT/EPERM"
+   (catch 'system-error
+  (lambda () (umount "/does-not-exist") #f)
+  (lambda args
+(memv (system-error-errno args)
+  (list EPERM ENOENT)
actual-value: (1 2)
result: PASS

test-name: mount-points
location: /data/paul/sourceCode/guix/tests/syscalls.scm:55
source:
+ (test-assert
+   "mount-points"
+   (any (cute member <> (mount-points))
+'("/" "/proc" "/sys" "/dev")))
actual-value: (/ /sys/kernel/security /dev/shm /run/lock /sys/fs/cgroup /sys/fs/cgroup/systemd /sys/fs/pstore /sys/fs/cgroup/memory /sys/fs/cgroup/net_cls,net_prio /sys/fs/cgroup/pids /sys/fs/cgroup/cpuset /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/blkio /sys/fs/cgroup/devices /sys/fs/cgroup/freezer /sys/fs/cgroup/perf_event /sys/fs/cgroup/hugetlb /proc/sys/fs/binfmt_misc /sys/kernel/debug /dev/mqueue /dev/hugepages /run/rpc_pipefs /sys/fs/fuse/connections /data /run/cgmanager/fs /run/user/1000 /run/user/1000/gvfs)
result: PASS

test-name: swapon, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:61
source:
+ (test-assert
+   "swapon, ENOENT/EPERM"
+   (catch 'system-error
+  (lambda () (swapon "/does-not-exist") #f)
+  (lambda args
+(memv (system-error-errno args)
+  (list EPERM ENOENT)
actual-value: (1 2)
result: PASS

test-name: swapoff, ENOENT/EINVAL/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:69
source:
+ (test-assert
+   "swapoff, ENOENT/EINVAL/EPERM"
+   (catch 'system-error
+  (lambda () (swapoff "/does-not-exist") #f)
+  (lambda args
+(memv (system-error-errno args)
+  (list EPERM EINVAL ENOENT)
actual-value: (1 22 2)
result: PASS

test-name: mkdtemp!
location: /data/paul/sourceCode/guix/tests/syscalls.scm:77
source:
+ (test-assert
+   "mkdtemp!"
+   (let* ((tmp (or (getenv "TMPDIR") "/tmp"))
+  (dir (mkdtemp!
+ (string-append tmp "/guix-test-XX"
+ (and (file-exists? dir) (begin (rmdir dir) #t
actual-value: #t
result: PASS

test-name: statfs, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:85
source:
+ (test-equal
+   "statfs, ENOENT"
+   ENOENT
+   (catch 'system-error
+  (lambda () (statfs "/does-not-exist"))
+  (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: statfs
location: /data/paul/sourceCode/guix/tests/syscalls.scm:92
source:
+ (test-assert
+   "statfs"
+   (let ((fs (statfs "/")))
+ (and (file-system? fs)
+  (> (file-system-block-size fs) 0)
+  (>= (file-system-blocks-available fs) 0)
+  (>= (file-system-blocks-free fs)
+  (file-system-blocks-available fs)
actual-value: #t
result: PASS

test-name: clone
location: /data/paul/sourceCode/guix/tests/syscalls.scm:109
source:
+ (test-assert
+   "clone"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+  (0 (primitive-exit 42))
+  (pid (and (not (equal?
+   (readlink (user-namespace pid))
+   (readlink (user-namespace (getpid)
+(match (waitpid pid)
+   ((_ . status) (= 42 (status:exit-val status
actual-value: #t
result: PASS

test-name: setns
location: /data/paul/sourceCode/guix/tests/syscalls.scm:122
source:
+ (test-assert
+   "setns"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+  (0 (primitive-exit 0))
+  (clone-pid
+(match (pipe)
+   ((in . out)
+(match (primitive-fork)
+   (0
+(close in)
+(call-with-input-file
+  (user-namespace clone-pid)
+  (lambda (port) (setns (port->fdes port) 0)))
+(write 'done out)
+(close out)
+(primitive-exit 0))
+   (fork-pid
+ (close out)
+ (read in)
+ (let ((result
+ (and (equal?
+(readlink
+  (us

bug#25476: pivot-root test fails on Ubuntu 16.04

2017-01-31 Thread Paul Garlick
> 
> Could you change “(eq? #t result)” to “result”, rerun the test, and
> send
> syscalls.log?
> 
> 
Hi Ludo,
After a 'git pull --rebase' I now have:
$ git describe
v0.12.0-984-gabb7eb7
The pivot-root test still fails.  The 'actual-value' is now #.  I
have attached the syscalls.log file.  
In fact there is also a new FAIL result, for utmpx-entries.  Is this
unrelated?
Best,
Paul.test-name: mount, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:38
source:
+ (test-equal
+   "mount, ENOENT"
+   ENOENT
+   (catch 'system-error
+  (lambda ()
+(mount "/dev/null" "/does-not-exist" "ext2")
+#f)
+  (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: umount, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:46
source:
+ (test-assert
+   "umount, ENOENT/EPERM"
+   (catch 'system-error
+  (lambda () (umount "/does-not-exist") #f)
+  (lambda args
+(memv (system-error-errno args)
+  (list EPERM ENOENT)
actual-value: (1 2)
result: PASS

test-name: mount-points
location: /data/paul/sourceCode/guix/tests/syscalls.scm:55
source:
+ (test-assert
+   "mount-points"
+   (any (cute member <> (mount-points))
+'("/" "/proc" "/sys" "/dev")))
actual-value: (/ /sys/kernel/security /dev/shm /run/lock /sys/fs/cgroup /sys/fs/cgroup/systemd /sys/fs/pstore /sys/fs/cgroup/devices /sys/fs/cgroup/pids /sys/fs/cgroup/memory /sys/fs/cgroup/freezer /sys/fs/cgroup/net_cls,net_prio /sys/fs/cgroup/hugetlb /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/blkio /sys/fs/cgroup/cpuset /sys/fs/cgroup/perf_event /proc/sys/fs/binfmt_misc /dev/hugepages /dev/mqueue /sys/kernel/debug /run/rpc_pipefs /sys/fs/fuse/connections /data /run/cgmanager/fs /run/user/1000 /run/user/1000/gvfs)
result: PASS

test-name: swapon, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:61
source:
+ (test-assert
+   "swapon, ENOENT/EPERM"
+   (catch 'system-error
+  (lambda () (swapon "/does-not-exist") #f)
+  (lambda args
+(memv (system-error-errno args)
+  (list EPERM ENOENT)
actual-value: (1 2)
result: PASS

test-name: swapoff, ENOENT/EINVAL/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:69
source:
+ (test-assert
+   "swapoff, ENOENT/EINVAL/EPERM"
+   (catch 'system-error
+  (lambda () (swapoff "/does-not-exist") #f)
+  (lambda args
+(memv (system-error-errno args)
+  (list EPERM EINVAL ENOENT)
actual-value: (1 22 2)
result: PASS

test-name: mkdtemp!
location: /data/paul/sourceCode/guix/tests/syscalls.scm:77
source:
+ (test-assert
+   "mkdtemp!"
+   (let* ((tmp (or (getenv "TMPDIR") "/tmp"))
+  (dir (mkdtemp!
+ (string-append tmp "/guix-test-XX"
+ (and (file-exists? dir) (begin (rmdir dir) #t
actual-value: #t
result: PASS

test-name: statfs, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:85
source:
+ (test-equal
+   "statfs, ENOENT"
+   ENOENT
+   (catch 'system-error
+  (lambda () (statfs "/does-not-exist"))
+  (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: statfs
location: /data/paul/sourceCode/guix/tests/syscalls.scm:92
source:
+ (test-assert
+   "statfs"
+   (let ((fs (statfs "/")))
+ (and (file-system? fs)
+  (> (file-system-block-size fs) 0)
+  (>= (file-system-blocks-available fs) 0)
+  (>= (file-system-blocks-free fs)
+  (file-system-blocks-available fs)
actual-value: #t
result: PASS

test-name: clone
location: /data/paul/sourceCode/guix/tests/syscalls.scm:109
source:
+ (test-assert
+   "clone"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+  (0 (primitive-exit 42))
+  (pid (and (not (equal?
+   (readlink (user-namespace pid))
+   (readlink (user-namespace (getpid)
+(match (waitpid pid)
+   ((_ . status) (= 42 (status:exit-val status
actual-value: #t
result: PASS

test-name: setns
location: /data/paul/sourceCode/guix/tests/syscalls.scm:122
source:
+ (test-assert
+   "setns"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+  (0 (primitive-exit 0))
+  (clone-pid
+(match (pipe)
+   ((in . out)
+(match (primitive-fork)
+   (0
+(close in)
+(call-with-input-file
+  (user-namespace clone-pid)
+  (lambda (port) (setns (port->fdes port) 0)))
+(write 'done out)
+(close out)
+(primitive-exit 0))
+   (fork-pid
+ (close out)
+ (read in)
+  

bug#25476: pivot-root test fails on Ubuntu 16.04

2017-02-01 Thread Paul Garlick
Hi Ludo,

Here is the output from the guile session:

paul$ ./pre-inst-env guile
GNU Guile 2.0.13
Copyright (C) 1995-2016 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> ,use(guix build syscalls)
scheme@(guile-user)> (utmpx-entries)
$1 = (#< type: 2 pid: 0 line: "~" id: (126 126 0 0) user:
"reboot" host: "4.4.0-59-generic" termination: 0 exit: 0 session: 0
time: #
address: (0 0 0 0)> #< type: 1 pid: 53 line: "~" id: (126
126 0 0) user: "runlevel" host: "4.4.0-59-generic" termination: 0 exit:
0 session: 0 time: # address: (0 0 0 0)> #< type: 6 pid: 1589 line:
"tty1" id: (116 116 121 49) user: "LOGIN" host: #f termination: 0 exit:
0 session: 1589 time: # address: (0 0 0 0)> #< type: 7 pid:
1908 line: "tty7" id: (58 48 0 0) user: "paul" host: ":0" termination:
0 exit: 0 session: 0 time: # address: (0 0 0 0)> #< type: 7 pid:
2486 line: "pts/11" id: (47 49 49 0) user: "paul" host: ":0.0"
termination: 0 exit: 0 session: 0 time: # address: (0 0 0 0)> #< type: 7 pid: 2486 line: "pts/2" id: (47 50 0 0) user: "paul"
host: ":0.0" termination: 0 exit: 0 session: 0 time: # address: (0 0 0 0)>)
scheme@(guile-user)> ,use(srfi srfi-1)
scheme@(guile-user)> (find (lambda (entry) (and (string? (utmpx-user 
entry))(zero? (utmpx-pid entry (utmpx-entries))
$2 = #< type: 2 pid: 0 line: "~" id: (126 126 0 0) user:
"reboot" host: "4.4.0-59-generic" termination: 0 exit: 0 session: 0
time: #
address: (0 0 0 0)>

The $2 ##SELECTION_END##output is not false in this case.

Paul.

bug#25476: pivot-root test fails on Ubuntu 16.04

2017-02-13 Thread Paul Garlick
> I think a1a8b7f2e20513a3ad968e74e7ec52546404e3c6 fixes this.
> 
> 
Yes, confirmed.  The utmpx-entries test now passes.
The pivot-root test still fails.  One thought; I made a change to the
guix-daemon.service file, at about the same time as updating Ubuntu to
16.04, setting TMPDIR to /data/tmp.  Could that be related?
Paul.

bug#31977: clone tests fail on CentOS 7

2018-06-26 Thread Paul Garlick
Hi Guix,

Running 'make check' in the guix source tree on a CentOS 7 system
results in 15 FAILS:

tests/containers.log: 9 FAILS
tests/syscalls.log: 3 FAILS
tests/guix-environment-container.log: 1 FAIL
tests/guix-pack.log: 1 FAIL
tests/pack.log: 1 FAIL

Referring to bug#24108, the cause may be that the clone-related tests
are being executed instead of being skipped. 

The output of 'uname -srv' is:

Linux 3.10.0-862.3.3.el7.x86_64 #1 SMP Fri Jun 15 04:15:27 UTC 2018

Files:
a)  '/proc/self/ns/user' exists
b) '/proc/sys/kernel/unprivileged_userns_clone' does not exist.

On CentOS 7 I believe user namespaces are supported but disabled by
default.  The output of 'cat /proc/sys/user/max_user_namespaces' is
'0'.

Perhaps the 'perform-container-tests?' logic should include an extra
check for the default, disabled case to ensure that the tests are
skipped.

Attached are the log files, except 'guix-pack.log' (~100MB) and
'pack.log' (~7MB).

Best regards,

Paul.

test-name: call-with-container, exit with 0 when there is no error
location: /data/paul/sourceCode/guix/tests/containers.scm:41
source:
+ (test-assert
+   "call-with-container, exit with 0 when there is no error"
+   (zero? (call-with-container
+'()
+(const #t)
+#:namespaces
+'(user
actual-value: #f
actual-error:
+ (system-error
+   "clone"
+   "~d: ~A"
+   (268435473 "Invalid argument")
+   (22))
result: FAIL

test-name: call-with-container, user namespace
location: /data/paul/sourceCode/guix/tests/containers.scm:46
source:
+ (test-assert
+   "call-with-container, user namespace"
+   (zero? (call-with-container
+'()
+(lambda ()
+  (assert-exit
+(and (zero? (getuid)) (zero? (getgid)
+#:namespaces
+'(user
actual-value: #f
actual-error:
+ (system-error
+   "clone"
+   "~d: ~A"
+   (268435473 "Invalid argument")
+   (22))
result: FAIL

test-name: call-with-container, uts namespace
location: /data/paul/sourceCode/guix/tests/containers.scm:55
source:
+ (test-assert
+   "call-with-container, uts namespace"
+   (zero? (call-with-container
+'()
+(lambda ()
+  (sethostname "test-container")
+  (primitive-exit 0))
+#:namespaces
+'(user uts
actual-value: #f
actual-error:
+ (system-error
+   "clone"
+   "~d: ~A"
+   (335544337 "Invalid argument")
+   (22))
result: FAIL

test-name: call-with-container, pid namespace
location: /data/paul/sourceCode/guix/tests/containers.scm:66
source:
+ (test-assert
+   "call-with-container, pid namespace"
+   (zero? (call-with-container
+'()
+(lambda ()
+  (match (primitive-fork)
+ (0 (assert-exit (= 2 (getpid
+ (pid (primitive-exit
+(match (waitpid pid)
+   ((_ . status)
+(status:exit-val status)))
+#:namespaces
+'(user pid
actual-value: #f
actual-error:
+ (system-error
+   "clone"
+   "~d: ~A"
+   (805306385 "Invalid argument")
+   (22))
result: FAIL

test-name: call-with-container, mnt namespace
location: /data/paul/sourceCode/guix/tests/containers.scm:82
source:
+ (test-assert
+   "call-with-container, mnt namespace"
+   (zero? (call-with-container
+(list (file-system
+(device "none")
+(mount-point "/testing")
+(type "tmpfs")
+(check? #f)))
+(lambda ()
+  (assert-exit (file-exists? "/testing")))
+#:namespaces
+'(user mnt
actual-value: #f
actual-error:
+ (system-error
+   "clone"
+   "~d: ~A"
+   (268566545 "Invalid argument")
+   (22))
result: FAIL

test-name: call-with-container, mnt namespace, wrong bind mount
location: /data/paul/sourceCode/guix/tests/containers.scm:94
source:
+ (test-equal
+   "call-with-container, mnt namespace, wrong bind mount"
+   `(system-error ,ENOENT)
+   (catch 'system-error
+  (lambda ()
+(call-with-container
+  (list (file-system
+  (device "/does-not-exist")
+  (mount-point "/foo")
+  (type "none")
+  (flags '(bind-mount))
+  (check? #f)))
+  (const #t)
+  #:namespaces
+  '(user mnt)))
+  (lambda args
+(list 'system-error (system-error-errno args)
expected-value: (system-error 2)
actual-value: (system-error 22)
result: FAIL

test-name: call-with-container, all namespaces
location: /data/paul/sourceCode/guix/tests/containers.scm:111
source:
+ (test-assert
+   "call-with-container, all namespaces"
+   (zero? (call-with-container
+'()
+(lambda () (primitive-exit 0)
actual-value: #f
actual-error:
+ (system-error
+   "clone"
+   "~d: ~A"

bug#31977: clone tests fail on CentOS 7

2020-12-02 Thread Paul Garlick
Hi Simon,

On Tue, 2020-12-01 at 19:12 +0100, zimoun wrote:
> This old bug #31977 is about an issue on your CentOS 7 machine.  Is
> it still relevant?

Yes, this bug still exists.

However, I have just tested a fix:

--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -44,7 +44,7 @@
   (let ((userns-file "/proc/sys/kernel/unprivileged_userns_clone"))
 (if (file-exists? userns-file)
 (eqv? #\1 (call-with-input-file userns-file read-char))
-#t)))
+#f)))
 
 (define (setgroups-supported?)
   "Return #t if the setgroups proc file, introduced in Linux-libre
3.19,

This ensures that tests are skipped if user namespaces are not enabled
for unprivileged users.

Best regards,

Paul.






bug#31977: clone tests fail on CentOS 7

2020-12-03 Thread Paul Garlick
Hi Simon,

I have pushed the fix as 8bc5ca5160db3d82bd5b6b2b7ed80c96f42bd33e.

Best regards,

Paul.






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

2020-12-07 Thread Paul Garlick
Hi Pierre,

Can you try, as root on Guix System:

$ echo 1 > /proc/sys/kernel/unprivileged_userns_clone

If you could report success or failure that would be helpful; the
unprivileged-user-namespace-supported? test in gnu/build/linux-
container.scm should be the same irrespective of the underlying
distribution (Debian, CentOS, Guix System ...).

Best regards,

Paul.

On Mon, 2020-12-07 at 12:57 +0100, Pierre Neidhardt wrote:
> Hi!
> 
> I can reproduce the issue since I 'recondigure'd my Guix System.
> I'm on cebfb29abb151ede95696181d2446c63504593d7.
> 
> Guix' bug?
> 
> 






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

2020-12-07 Thread Paul Garlick
Hi Pierre,

> # echo 1 > /proc/sys/kernel/unprivileged_userns_clone
> -bash: /proc/sys/kernel/unprivileged_userns_clone: No such file or
> directory

Thanks, that gives us a clue.  So all or part of the path
'/proc/sys/kernel' is missing?

Best regards,

Paul.







bug#31977: clone tests fail on CentOS 7

2020-12-21 Thread Paul Garlick
Hi Simon,

> If I understand well your message:
> 
> Files:
> a) '/proc/self/ns/user' exists
> b) '/proc/sys/kernel/unprivileged_userns_clone' does not exist.

Yes, this is the case on CentOS.  

So testing for the existence of the unprivileged_userns_clone file is
an insufficent test for unprivileged user namespaces.  We have learnt
that trying to create the file as a dummy file does not work, since the
/proc/sys/kernel directory is read-only even for root.

So the current 'unprivileged-user-namespace-supported?' function in
gnu/build/linux-container.scm really only works for Debian-derived
systems.  Other systems, that co not create the
unprivileged_userns_clone file, differ in their default configurations.
CentOS, for example, disables the feature.  However, Guix System
enables it.

It has been suggested that the feature itself should be tested, instead
of relying on the /proc filesystem.  This could well be a better idea
and I gather from the thread that this idea is being worked on.  I can
test on CentOS when a new patch is available.

Best regards,

Paul. 






bug#39727: statx error running 'guix gc' on CentOS 7

2020-02-21 Thread Paul Garlick
Hi Guix,

After a 'guix pull' today to commit
536cc4aae5b58b45b974530646a4916a29a8aa6c I noticed that 'guix gc' fails
with the message:

guix gc: error: statting `/gnu/store/.links/0pck...': Invalid argument

The system is running CentOS 7:

$ cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)

A temporary fix is to remove 'statx' from the list of functions checked
in 
config-daemon.ac (line 96):

-  statvfs nanosleep strsignal statx])
+ statvfs nanosleep strsignal])

This could a problem with the kernel version or coreutils [0] in CentOS
7.  

It seems that HAVE_STATX is set in the guix build process but then
runtime calls to statx generate errors.

Best regards,

Paul.

[0] https://bugzilla.redhat.com/show_bug.cgi?id=1760300










bug#39727: statx error running 'guix gc' on CentOS 7

2020-02-24 Thread Paul Garlick
Hi Ludo,

> This was during the “removing unused link” phase, right?
> 
Yes, that's it.

> The system is running CentOS 7:
> 
> $ cat /etc/centos-release
> CentOS Linux release 7.7.1908 (Core)
> 
> What does “uname -r” return?

3.10.0-1062.12.1.el7.x86_64

> Let me know how it goes!

I compiled a C program with the following code using gcc-toolchain
9.2.0:

#define _GNU_SOURCE
#include 
#include 
#include 
#include 
#include 

int main(void)
{
  struct statx st;
  if (statx(AT_FDCWD, "/",
AT_SYMLINK_NOFOLLOW | AT_STATX_DONT_SYNC,
/* AT_SYMLINK_NOFOLLOW, */
STATX_SIZE | STATX_NLINK, &st) == -1)
printf ("failed: %m\n");

  return 0;
}

Initially, with the AT_STATX_DONT_SYNC flag, the output is:

$ failed: Invalid argument

Then, without the  AT_STATX_DONT_SYNC flag, the program runs and there
is no output.

Best regards,

Paul.






bug#39727: statx error running 'guix gc' on CentOS 7

2020-02-24 Thread Paul Garlick
Hi Ludo,


> Great.  Could you apply the following patch, run the daemon with:
> 
>   sudo -E ./pre-inst-env guix-daemon --build-users-group=…
> 
> then run:
> 
>   guix gc -C42

Yes, all is good.  

I have re-built guix with your patch and started the daemon.  Now 'guix
gc' runs as expected:

.
.
.
deleted or invalidated more than 42 bytes; stopping
deleting `/gnu/store/trash'
deleting unused links...
note: currently hard linking saves 3264.68 MiB
guix gc: freed 0.91850 MiBs

Many thanks!  CentOS 7 will be around for a few years yet.

Best regards,

Paul.






bug#77195: [PATCH 0/7] Remove fenics

2025-04-05 Thread Paul Garlick
Hi Guix,

Thank you for the notification that fenics-dolfin is not currently
building.

It has been a while :-) but I plan to resume maintaining the fenics
packages in Guix by the end of this month.

A quick look at the build log for fenics-dolfin suggests that the
problem is VTK-related; possibly a new VTK version containing an
updated function.

In terms of the upstream project, fenicsx will replace fenics.  It has
currently reached version 0.9; the production version may be released
later this year.

I intend to package fenicsx for Guix, including its new dependencies. 
Ideally, the fenicsx and fenics packages would co-exist for a period,

Best regards,

Paul.


On Tue, 2025-04-01 at 15:54 +0200, Andreas Enge wrote:
> Am Tue, Apr 01, 2025 at 02:33:24PM +0200 schrieb Ludovic Courtès:
> > My understanding of  is that
> > only
> > ‘fenics-dolfin’ fails to build, so perhaps we could limit to this
> > one
> > package?
> > No strong opinion though.
> 
> Me neither. I tend to rather the other side, why should we keep a
> package that is outdated and that probably nobody uses anymore, but
> that uses project resources (builds; people trying to fix it when it
> potentially stops building, which is bound to happen with
> unmaintained
> software)?
> 
> So I would drop them all unless someone speaks up who uses any of
> them
> (or knows someone else who does).
> 
> Andreas
> 






bug#77195: [PATCH 0/7] Remove fenics

2025-05-09 Thread Paul Garlick
Hello Andreas,

Thank you for the reminder.

I am planning to look at this next week.  My feeling is that the fix is
likely to a simple
one, so it is worth doing now (as opposed to waiting for fenicsx).

Best regards,

Paul.


On Wed, 2025-05-07 at 10:30 +0200, Andreas Enge wrote:
> Hello Paul,
> 
> just a quick reminder concerning the fenics-dolfin and related
> packages;
> do you think you will have the time to repair it/them (I am not sure
> which packages exactly are concerned, this seems to be a little
> complex
> of several related ones)? Or should we drop them and wait for
> fenicsx?
> 
> Thanks,
> 
> Andreas
> 






bug#77195: [PATCH 0/7] Remove fenics

2025-05-15 Thread Paul Garlick
Hi Andreas,

On Fri, 2025-05-09 at 20:56 +0200, Andreas Enge wrote:
> I was discouraged to try it myself, so it is good to have
> a specialist look at it.

Aha! 

I have checked the build logs on ci.guix.gnu.org and I can see that
some of the fenics dependencies are failing to build,  Specifically,
hdf5-parallel-openmpi:

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

Three tests are now failing.  This seems to be related to a recent
commit, that re-enables Fortran support:

https://codeberg.org/guix/guix-mirror/commit/ca3be0964af171721123f97e0850b3e734a575f5

Do you know whether the commit author, Romain Garbage, is already
working on a fix?

Best regards,

Paul.





bug#77195: hdf5-parallel-openmpi failure (was Re: bug#77195: [PATCH 0/7] Remove fenics)

2025-06-23 Thread Paul Garlick
Hi Guix,

I notice that the three hdf5-parallel-openmpi tests that have been
failing are now skipped (commit 2dd09c786c).  Thanks Ludo!

Meanwhile, I have submitted a patch that fixes the fenics-dolfin build.
Dolfin is the main library in the fenics package.  The problem turned
out to be an hdf5-related issue too; the API has changed in the move
from 1.10 to 1.14.  The patch is bug #78878.

There is one more build to fix; the fenics package itself.  This
package provides the high-level python interface.  In this case, it is
a numpy update that is causing one of the tests to fail.

Best regards,

Paul.





bug#77195: [PATCH 0/7] Remove fenics

2025-06-04 Thread Paul Garlick
Hi,

On Mon, 2025-06-02 at 10:28 +0200, Andreas Enge wrote:
> Am Tue, May 20, 2025 at 11:23:45AM +0200 schrieb Romain Garbage:
> > Paul Garlick  writes:
> > > Three tests are now failing.  This seems to be related to a
> > > recent
> > > commit, that re-enables Fortran support:
> > > https://codeberg.org/guix/guix-mirror/commit/ca3be0964af171721123f97e0850b3e734a575f5
> > To my understanding, these tests fail in a non-reproducible way
> > since I
> > managed to build 'hdf5-parallel-openmpi' on my machine.
> 
> So did I before merging the patch by Romain. And now there is a
> substitute on the bordeaux server, so you may give repairing/updating
> fenics a try.

The package builds successfully on my machine too.  

Interestingly, the ci build is still failing
(https://ci.guix.gnu.org/build/10915547/details), which could be worth
a look.  However, I will attempt to fix the fenics packages next.

Best regards,

Paul.







bug#77195: [PATCH 0/7] Remove fenics

2025-06-11 Thread Paul Garlick
Hi Guix,

I have made some progress on the fenics packages.

First up is an update of the scalapack package, which is a dependency
of petsc-openmpi.  The current package has been failing to build, with
new test failures, for ten days or so.

I have submitted a patch that updates scalapack to version 2.2.2, the
latest release.  This is bug #78755 [0].

Best regards,

Paul.


[0]:
https://lists.gnu.org/archive/html/guix-patches/2025-06/msg00253.html






bug#77195: [PATCH 0/7] Remove fenics

2025-07-09 Thread Paul Garlick
Hi Andreas,

I have submitted a patch to fix the build of the python-dolfin-adjoint
package.  It is bug #78978 [0].

This completes the set of fixes for the fenics-related packages.

Best regards,

Paul.

[0]:
https://lists.gnu.org/archive/html/guix-patches/2025-07/msg00077.html





bug#77195: [PATCH 0/7] Remove fenics

2025-07-04 Thread Paul Garlick
Hi Andreas,

On Wed, 2025-06-11 at 20:14 +0200, Andreas Enge wrote:
> If you can keep me updated, I will continue following your progress
> and try to push as soon as possible.

I have submitted a patch to fix the build of the fenics package.  It is
bug #78954.

In brief, I have removed references to the numpy aliases 'int', 'float'
and 'long' in two of the test modules.  These aliases have expired in
numpy v1.24. See

https://numpy.org/doc/stable/release/1.24.0-notes.html#expired-deprecations

There is one fenics dependency to fix too: python-dolfin-adjoint.  I
believe this will be a simple one, keeping up with the switch to the
pyproject-build-system.

Best regards,

Paul.