Subject: [bug#56858] [PATCH] gnu: libcgroup: Update to 2.0.2.

From: muradm <[email-masked]>
Date: Tue, 09 Aug 2022 23:29:09 +0300

Ludovic Courtès <[email-masked]> writes:

> Hi,
>
> "(" <[email-masked]> skribis:
>
>> On Mon Aug 1, 2022 at 6:42 AM BST, muradm wrote:
>>> Is there a guideline where home-page should be? I find it more
>>> DRY when reusing.
>> Almost every package in Guix puts it directly above synopsis, 
>> though
>> you do have a point about DRY.
>
> Yeah IMO it’s a good idea to reuse ‘home-page’ like this patch 
> does.
>
>>> Their repo is not suitable for building from, instead
>>> they release sources manually.
>> Looks okay to me: 
>> <https://github.com/libcgroup/libcgroup/tree/v2.0.2>
>> But there is a problem with vendoring googletest, it seems. 
>> You'll want
>> to use the system's googletest, and (recursive? #t) in the 
>> git-reference
>> to clone the tests repo. Also, the tarball seems to contain 
>> pregenerated
>> autotools files, which are discouraged by Guix.
>
> So, first things first.  The priority should be to run tests and 
> remove
> the bundled googletest, which I tried with the patch below.
>
> Now, tests won’t run because apparently they try to use ‘sudo’ 
> (!):
>
> Traceback (most recent call last):
>   File 
>   "/tmp/guix-build-libcgroup-2.0.2.drv-0/libcgroup-2.0.2/tests/ftests/./ftests.py", 
>   line 353, in <module>
>     sys.exit(main(config))
>   File 
>   "/tmp/guix-build-libcgroup-2.0.2.drv-0/libcgroup-2.0.2/tests/ftests/./ftests.py", 
>   line 337, in main
>     setup(config, record_time=True)
>   File 
>   "/tmp/guix-build-libcgroup-2.0.2.drv-0/libcgroup-2.0.2/tests/ftests/./ftests.py", 
>   line 170, in setup
>     Run.run(['sudo', 'lxd', 'init', '--auto'])
>   File 
>   "/tmp/guix-build-libcgroup-2.0.2.drv-0/libcgroup-2.0.2/tests/ftests/run.py", 
>   line 38, in run
>     subproc = subprocess.Popen(command, shell=shell_bool,
>   File 
>   "/gnu/store/65i3nhcwmz0p8rqbg48gaavyky4g4hwk-python-3.9.9/lib/python3.9/subprocess.py", 
>   line 951, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File 
>   "/gnu/store/65i3nhcwmz0p8rqbg48gaavyky4g4hwk-python-3.9.9/lib/python3.9/subprocess.py", 
>   line 1821, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 'sudo'
> FAIL ftests.sh (exit status: 1)
>
> Could you check whether they can run at all without root 
> privileges, and
> if not, document it in a comment above #:tests? #f?
unfortunately, tests are executed virtualized with lxc/lxd, while
technically it seems to be possible to execute them, but it will 
require
fixing (but probably rewriting) python test runner code. Possible 
but
not feasible i think.

On the other hand, as far as it is mentioned in their release 
process,
sources release tarball is releaced after tests passing.

;; tests are virtualized with lxc/lxd, it is not very feasible
;; to make them executable under guix build

Will this commend do the work?

> Thanks,
> Ludo’.
>
> diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
> index e70d8d1a90..7eb309dfa5 100644
> --- a/gnu/packages/linux.scm
> +++ b/gnu/packages/linux.scm
> @@ -8177,14 +8177,18 @@ (define-public libcgroup
>         (uri (string-append home-page "/releases/download/v"
>                             version "/" name "-" version 
>                             ".tar.gz"))
>         (sha256
> -        (base32 
> "1y0c9ncsawamj77raiw6qkbm5cdsyvhjb2mvgma1kxmgw0r3pxlf"))))
> +        (base32 
> "1y0c9ncsawamj77raiw6qkbm5cdsyvhjb2mvgma1kxmgw0r3pxlf"))
> +       (modules '((guix build utils)))
> +       (snippet
> +        ;; Delete the bundled copy of googletest, that even 
> includes a .so.
> +        '(delete-file-recursively "googletest"))))
>      (build-system gnu-build-system)
> -    (arguments
> -     `(#:tests? #f))
> +    ;; (arguments
> +    ;;  `(#:tests? #f))
>      (native-inputs
> -     (list bison flex))
> +     (list bison flex python-wrapper))
>      (inputs
> -     (list linux-pam))
> +     (list linux-pam googletest))
>      (synopsis "Control groups management tools")
>      (description "Control groups is Linux kernel method for 
>      process resource
>  restriction, permission handling and more.  This package 
>  provides userspace