Subject: [bug#60358] [PATCH] gnu: Add gnulib.

From: Liliana Marie Prikler <[email-masked]>
Date: Tue, 27 Dec 2022 21:45:45 +0100

Am Dienstag, dem 27.12.2022 um 17:23 +0100 schrieb Vivien Kraus:
> * gnu/packages/build-tools.scm (gnulib-latest): New variable. This
> one always
> tracks the latest upstream commit, so don’t use it as an input.
> (gnulib): New variable. This is a "recent" snapshot.
The preferred package:patch ratio is 1:1.
> ---
>  gnu/packages/build-tools.scm | 71
> ++++++++++++++++++++++++++++++++++++
>  1 file changed, 71 insertions(+)
> 
> diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-
> tools.scm
> index 6c1350c44f..062956f685 100644
> --- a/gnu/packages/build-tools.scm
> +++ b/gnu/packages/build-tools.scm
> @@ -38,6 +38,7 @@ (define-module (gnu packages build-tools)
>    #:use-module (guix gexp)
>    #:use-module (guix download)
>    #:use-module (guix git-download)
> +  #:use-module (guix git)
>    #:use-module (guix build-system cmake)
>    #:use-module (gnu packages)
>    #:use-module (gnu packages adns)
> @@ -48,11 +49,13 @@ (define-module (gnu packages build-tools)
>    #:use-module (gnu packages cpp)
>    #:use-module (gnu packages elf)
>    #:use-module (gnu packages linux)
> +  #:use-module (gnu packages lisp)
>    #:use-module (gnu packages logging)
>    #:use-module (gnu packages lua)
>    #:use-module (gnu packages ninja)
>    #:use-module (gnu packages package-management)
>    #:use-module (gnu packages pcre)
> +  #:use-module (gnu packages perl)
>    #:use-module (gnu packages pkg-config)
>    #:use-module (gnu packages pretty-print)
>    #:use-module (gnu packages protobuf)
> @@ -803,3 +806,71 @@ (define-public genie
>  same settings to multiple projects.  It supports generating projects
> using GNU
>  Makefiles, JSON Compilation Database, and experimentally Ninja.")
>        (license license:bsd-3))))
> +
> +;; Gnulib is a source code library. The developers encourage you to
> develop
> +;; your programs with the latest commit of gnulib. However, gnulib
> is also
> +;; used to bootstrap some GNU programs. To avoid rebuilding the
> world when a
> +;; new gnulib commit is pushed, gnulib as a native input must use a
> known
> +;; snapshot of the library.
> +
> +(define-public gnulib-latest
> +  ;; Use this to develop.
> +  (package
> +    (name "gnulib-latest")
> +    (version "latest")
> +    (source
> +     (git-checkout
> +      (url "https://git.savannah.gnu.org/git/gnulib.git")))
Don't.  If you need to check out a particular commit, use the --with-
commit CLI option or a transformer.
> +    (build-system gnu-build-system)
> +    (arguments
> +     (list
> +      #:phases
> +      #~(modify-phases %standard-phases
> +          (delete 'configure)
> +          (replace 'install
> +            (lambda _
> +              (install-file "gnulib-tool"
> +                            (string-append #$output "/bin"))
> +              (copy-recursively "."
> +                                (string-append #$output
> "/share/gnulib-srcdir")))))
> +      #:tests? #f)) ;; Tests are syntax and indentation checks for
> the
> +                    ;; maintainer.
> +    (inputs ;; Shebangs for some auxiliary build files.
> +     (list python perl clisp))
> +    (home-page "https://www.gnu.org/software/gnulib/")
> +    (synopsis "GNU portability library")
> +    (description
> +     "Gnulib is a library that provides common functions from the
> glibc to your
> +programs, in order to enhance portability across operating systems.
> It also
> +provides common maintainer tools for gnu packages. This package
> always tracks
> +the latest commit in gnulib. @strong{For packages dependencies,
> please use the
> +@code{gnulib} package instead.} The latter provides a recent enough
> snapshot.")
> +    (native-search-paths
> +     (list
> +      (search-path-specification
> +       (variable "GNULIB_SRCDIR")
> +       (files (list "share/gnulib-srcdir")))))
> +    (license
> +     (list license:lgpl2.0+ license:gpl3+))))
> +
> +(define-public gnulib
> +  ;; Use this as a native input.
> +  (package
> +    (inherit gnulib-latest)
> +    (name "gnulib")
> +    (version "2022-12-27")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://git.savannah.gnu.org/git/gnulib.git")
> +             (commit "fde75446490e18d2539817ca418ab8adf73b02d3")))
Don't throw together raw commits and commit-less versions.  Use git-
version instead.
> +       (sha256
> +        (base32
> +         "0fjbdhwi9025wyq39rwc2j6aazfmagx056kkbvxx6bs97i80dcim"))))
> +    (synopsis "GNU portability library")
> +    (description
> +     "Gnulib is a library that provides common functions from the
> glibc to your
> +programs, in order to enhance portability across operating systems.
> It also
> +provides common maintainer tools for gnu packages. This package
> provides a
> +recent snapshot of gnulib.")))

Cheers