Subject: Re: [bug#75494] [PATCH] gnu: Add dhcpcd.
From: Zheng Junjie <[email-masked]>
To: [email-masked]
Cc: Sharlatan Hellseher <[email-masked]>, [email-masked]
Date: Mon, 27 Jan 2025 11:52:25 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

[email-masked] writes:

> From: Sören Tempel <[email-masked]>
>
> * gnu/packages/admin.scm (dhcpcd): new procedure.
>
> Signed-off-by: Sören Tempel <[email-masked]>

see https://guix.gnu.org/manual/devel/en/html_node/Commit-Access.html#Commit-Policy
|   When pushing a commit on behalf of somebody else, please add a
|‘Signed-off-by’ line at the end of the commit log message—e.g., with
|‘git am --signoff’.  This improves tracking of who did what.

So you don't need to add this line

> ---
> This adds an alternative to isc-dhcpd which has reached its end-of-life
> in 2022 (i.e. three years ago!) and hasn't been maintained and patched
> upstream since [1]. This patch has been extracted from #68675 [2] in the
> hopes that it will be easier to get the package merged first and then
> propose either a standalone services [3] or a service integrated into
> dhcp-client-service-type [4] separatly afterwards.
>
> [1]: https://issues.guix.gnu.org/68619
> [2]: https://issues.guix.gnu.org/68675
> [3]: https://github.com/nmeum/guix-channel/blob/b1b80697a9d35ca015ce56ccf3031f91f2bf554f/src/nmeum/services/networking.scm#L130-L132
> [4]: https://issues.guix.gnu.org/68675#10
>
>  gnu/packages/admin.scm | 56 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 56 insertions(+)
>
> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
> index 7fd05341993..2e9640a9e1e 100644
> --- a/gnu/packages/admin.scm
> +++ b/gnu/packages/admin.scm
> @@ -1712,6 +1712,62 @@ (define-public isc-dhcp
>        (license license:mpl2.0)
>        (properties '((cpe-name . "dhcp"))))))
>  
> +(define-public dhcpcd
> +  (package
> +    (name "dhcpcd")
> +    (version "10.0.6")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/NetworkConfiguration/dhcpcd")
> +             (commit (string-append "v" version))))
> +       (sha256
> +        (base32 "07n7d5wsmy955i6l8rkcmxhgxjygj2cxgpw79id2hx9w41fbkl5l"))
> +       (file-name (git-file-name name version))))
adjust to

(origin
 (uri ...)
 (file-name ...)
 (sha256 ...))

It's a general habit

> +    (inputs (list bash-minimal))

please test the cross-compilation next time.

I add coreutils-minimal for rm, add sed for sed, and move eudev from
native-inputs to inputs, because this is a compile-time library
dependency.

> +    (native-inputs (list eudev))
> +    (build-system gnu-build-system)
> +    (arguments
> +     (list
> +      #:test-target "test"
> +      #:configure-flags #~(list "--enable-ipv6"
> +                                "--enable-privsep"
> +                                "--privsepuser=dhcpcd"
> +                                (string-append "--dbdir=" "/var/db/dhcpcd")
> +                                (string-append "--rundir=" "/var/run/dhcpcd")
> +                                (string-append "CC=" #$(cc-for-target)))
> +      #:phases #~(modify-phases %standard-phases
> +                   (add-after 'unpack 'do-not-create-dbdir
> +                     (lambda _
> +                       ;; Make sure that the Makefile doesn't attempt to create
> +                       ;; /var/db/dhcpcd for which it doesn't have permissions.
> +                       (substitute* "src/Makefile"
> +                         (("\\$\\{INSTALL\\} -m \\$\\{DBMODE\\} -d \\$\\{DESTDIR\\}\\$\\{DBDIR\\}")

I added a \ to avoid being too long

> +                          ""))))
> +                   (add-before 'build 'setenv
> +                     (lambda _
> +                       (setenv "HOST_SH" (which "sh"))))
> +                   (add-after 'install 'wrap-hooks
> +                     (lambda* (#:key inputs outputs #:allow-other-keys)
> +                       (let* ((out (assoc-ref outputs "out"))
> +                              (libexec (string-append out "/libexec"))
> +                              (sed (search-input-file inputs "/bin/sed"))
> +                              (rm (search-input-file inputs "/bin/rm")))
> +                         (wrap-program (string-append libexec
> +                                                      "/dhcpcd-run-hooks")

adjust to (string-append #$output "/libexec/dhcpcd-run-hooks").

> +                           `("PATH" ":" suffix
> +                             (,(dirname sed)
> +                              ,(dirname rm))))))))))
> +    (home-page "https://roy.marples.name/projects/dhcpcd")
> +    (synopsis "Feature-rich DHCP and DHCPv6 client")
> +    (description
> +     "Provides a DHCP and a DHCPv6 client.  Additionally,
> +dhcpcd is also an IPv4LL (aka ZeroConf) client.  In layperson's terms,
> +dhcpcd runs on your machine and silently configures your computer to work
> +on the attached networks without trouble and mostly without configuration.")
> +    (license license:bsd-2)))
> +
>  (define-public radvd
>    (package
>      (name "radvd")
>
> base-commit: bd24a13c572f1c4cf0e104adc7ca81fe71fee632
pushed, closing.