Add LDAP server (389-ds-base)

  • Done
  • quality assurance status badge
Details
3 participants
  • Oleg Pykhalov
  • Ricardo Wurmus
  • Ricardo Wurmus
Owner
unassigned
Submitted by
Ricardo Wurmus
Severity
normal
R
R
Ricardo Wurmus wrote on 31 Jul 2018 14:35
(address . guix-patches@gnu.org)
87effjshvr.fsf@elephly.net
Hi Guix,

this patch series adds the 389-ds-base directory server. This is the
foundation for an upcoming system test involving authentication via
LDAP.

--
Ricardo
R
R
Ricardo Wurmus wrote on 31 Jul 2018 14:40
[PATCH 1/4] gnu: Add net-snmp.
(address . 32333@debbugs.gnu.org)(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)
20180731124047.17586-1-ricardo.wurmus@mdc-berlin.de
* gnu/packages/networking.scm (net-snmp): New variable.
---
gnu/packages/networking.scm | 71 ++++++++++++++++++++++++++++++++++++-
1 file changed, 70 insertions(+), 1 deletion(-)

Toggle diff (87 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 90967b9b1..57055a92e 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
@@ -1965,3 +1965,72 @@ Features:
@item Destination IP blacklist
@end itemize")
(license license:asl2.0))))
+
+(define-public net-snmp
+ (package
+ (name "net-snmp")
+ (version "5.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
+ version "/net-snmp-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1pvajzj9gmj56dmwix0ywmkmy2pglh6nny646hkm7ghfhh03bz5j"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:parallel-build? #f ; Not supported.
+ #:test-target "test"
+ #:configure-flags
+ (list (string-append "LDFLAGS=-Wl,-rpath="
+ (assoc-ref %outputs "out")
+ "/lib"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "testing/fulltests/support/simple_TESTCONF.sh"
+ (("NETSTAT=\"\"")
+ (string-append "NETSTAT=\"" (which "netstat") "\"")))
+ (substitute* "testing/fulltests/default/T065agentextend_simple"
+ (("/usr/bin/env") (which "env")))
+ (substitute* "testing/fulltests/default/T065agentextend_sh_simple"
+ (("/bin/sh") (which "sh")))
+ (substitute* "testing/fulltests/default/T115agentxperl_simple"
+ (("/usr/bin/env") (which "env")))
+ ;; FIXME: These tests fail for unknown reasons.
+ (for-each delete-file
+ '("testing/fulltests/default/T026snmpv3getSHAAES_simple"
+ "testing/fulltests/default/T027snmpv3Defaults_simple"
+ "testing/fulltests/default/T030snmpv3usercreation_simple"
+ "testing/fulltests/default/T049snmpv3informpriv_simple"
+ "testing/fulltests/default/T050snmpv3trap_simple"
+ "testing/fulltests/default/T070com2sec_simple"
+ "testing/fulltests/default/T071com2sec6_simple"))
+ #t))
+ (add-after 'unpack 'patch-Makefile.PL
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "Makefile.in"
+ (("Makefile.PL -NET")
+ (string-append "Makefile.PL PREFIX="
+ (assoc-ref outputs "out")
+ " INSTALLDIRS=site" " NO_PERLLOCAL=1"
+ " -NET")))
+ #t)))))
+ (inputs
+ `(("perl" ,perl)))
+ (native-inputs
+ `(("net-tools" ,net-tools)
+ ("coreutils" ,coreutils)
+ ("grep" ,grep)))
+ (home-page "http://www.net-snmp.org/")
+ (synopsis "Simple Network Management Protocol library and tools")
+ (description "The @dfn{Simple Network Management Protocol} (SNMP) is a
+widely used protocol for monitoring the health and welfare of network
+equipment (e.g. routers), computer equipment and even devices like UPSs.
+Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c and
+SNMP v3 using both IPv4 and IPv6.")
+ (license (list license:bsd-3
+ (license:non-copyleft
+ "http://www.net-snmp.org/about/license.html"
+ "CMU/UCD copyright notice")))))
--
2.18.0
R
R
Ricardo Wurmus wrote on 31 Jul 2018 14:40
[PATCH 2/4] gnu: Add python-argparse-manpage.
(address . 32333@debbugs.gnu.org)(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)
20180731124047.17586-2-ricardo.wurmus@mdc-berlin.de
* gnu/packages/python.scm (python-argparse-manpage): New variable.
---
gnu/packages/python.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d4448f23a..3aadd9473 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7221,6 +7221,25 @@ be set via config files and/or environment variables.")
(define-public python2-configargparse
(package-with-python2 python-configargparse))
+(define-public python-argparse-manpage
+ (package
+ (name "python-argparse-manpage")
+ (version "1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "argparse-manpage" version))
+ (sha256
+ (base32
+ "0blh31zns68anina9lba5wh81d1414s97p60zw5l0d0shhh0wj5p"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/praiskup/argparse-manpage")
+ (synopsis "Build manual page from Python's ArgumentParser object")
+ (description
+ "This package provides tools to build manual pages from Python's
+@code{ArgumentParser} object.")
+ (license license:asl2.0)))
+
(define-public python-contextlib2
(package
(name "python-contextlib2")
--
2.18.0
R
R
Ricardo Wurmus wrote on 31 Jul 2018 14:40
[PATCH 3/4] gnu: Add python-ldap.
(address . 32333@debbugs.gnu.org)(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)
20180731124047.17586-3-ricardo.wurmus@mdc-berlin.de
* gnu/packages/openldap.scm (python-ldap): New variable.
---
gnu/packages/openldap.scm | 46 ++++++++++++++++++++++++++++++++++++---
1 file changed, 43 insertions(+), 3 deletions(-)

Toggle diff (74 lines)
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index d952f412e..a331f06a0 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -22,9 +22,9 @@
(define-module (gnu packages openldap)
#:use-module (gnu packages autotools)
- #:use-module (gnu packages databases)
#:use-module (gnu packages compression)
#:use-module (gnu packages cyrus-sasl)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages groff)
#:use-module (gnu packages icu4c)
@@ -33,10 +33,11 @@
#:use-module (gnu packages python)
#:use-module (gnu packages tls)
#:use-module (gnu packages)
- #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+))
+ #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+ psfl))
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system python))
(define-public openldap
(package
@@ -138,3 +139,42 @@ get from @file{/etc} flat files or NIS. It also provides a @dfn{Pluggable
Authentication Module} (PAM) to do identity and authentication management with
an LDAP server.")
(license lgpl2.1+)))
+
+(define-public python-ldap
+ (package
+ (name "python-ldap")
+ (version "3.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-ldap" version))
+ (sha256
+ (base32
+ "1i97nwfnraylyn0myxlf3vciicrf5h6fymrcff9c00k581wmx5s1"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'configure-openldap-locations
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((openldap (assoc-ref inputs "openldap")))
+ (setenv "SLAPD"
+ (string-append openldap
+ "/libexec/slapd"))
+ (setenv "SCHEMA"
+ (string-append openldap
+ "/etc/openldap/schema/")))
+ #t)))))
+ (inputs
+ `(("openldap" ,openldap)
+ ("cyrus-sasl" ,cyrus-sasl)
+ ("mit-krb5" ,mit-krb5)))
+ (propagated-inputs
+ `(("python-pyasn1" ,python-pyasn1)
+ ("python-pyasn1-modules" ,python-pyasn1-modules)))
+ (home-page "https://www.python-ldap.org/")
+ (synopsis "Python modules for implementing LDAP clients")
+ (description
+ "This package provides an object-oriented API to access LDAP directory
+servers from Python programs.")
+ (license psfl)))
--
2.18.0
R
R
Ricardo Wurmus wrote on 31 Jul 2018 14:40
[PATCH 4/4] gnu: Add 389-ds-base.
(address . 32333@debbugs.gnu.org)(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)
20180731124047.17586-4-ricardo.wurmus@mdc-berlin.de
* gnu/packages/openldap.scm (389-ds-base): New variable.
---
gnu/packages/openldap.scm | 156 +++++++++++++++++++++++++++++++++++++-
1 file changed, 155 insertions(+), 1 deletion(-)

Toggle diff (184 lines)
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index a331f06a0..12964e302 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -22,18 +22,31 @@
(define-module (gnu packages openldap)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages documentation)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gnuzilla)
#:use-module (gnu packages groff)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages kerberos)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages networking)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages rsync)
+ #:use-module (gnu packages selinux)
+ #:use-module (gnu packages time)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages web)
#:use-module (gnu packages)
- #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+ psfl))
+ #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+ gpl3+ psfl))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
@@ -178,3 +191,144 @@ an LDAP server.")
"This package provides an object-oriented API to access LDAP directory
servers from Python programs.")
(license psfl)))
+
+(define-public 389-ds-base
+ (package
+ (name "389-ds-base")
+ (version "1.4.0.13")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://releases.pagure.org/389-ds-base/"
+ "389-ds-base-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "01dm3zq3w5ami9pwcjbjz8wfbx9krjxybjrgc4wyhrxlzd90ylzj"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((srfi srfi-1)
+ (guix build gnu-build-system)
+ (guix build utils))
+ #:configure-flags
+ (list (string-append "--with-db="
+ (assoc-ref %build-inputs "bdb"))
+ (string-append "--with-sasl="
+ (assoc-ref %build-inputs "cyrus-sasl"))
+ (string-append "--with-netsnmp="
+ (assoc-ref %build-inputs "net-snmp"))
+ (string-append "--with-pcre="
+ (assoc-ref %build-inputs "pcre"))
+ (string-append "--with-selinux="
+ (assoc-ref %build-inputs "libselinux"))
+ ;; The Perl scripts are being removed in the 1.4.0 release.
+ ;; Building them would require packaging of the outdated Mozilla
+ ;; LDAP SDK (instead of OpenLDAP) and PerLDAP.
+ "--disable-perl")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-install-location-of-python-tools
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (get-python-version
+ ;; FIXME: copied from python-build-system
+ (lambda (python)
+ (let* ((version (last (string-split python #\-)))
+ (components (string-split version #\.))
+ (major+minor (take components 2)))
+ (string-join major+minor "."))))
+ (pythondir (string-append
+ out "/lib/python"
+ (get-python-version (assoc-ref inputs "python"))
+ "/site-packages/")))
+ ;; Install directory must be on PYTHONPATH.
+ (setenv "PYTHONPATH"
+ (string-append (getenv "PYTHONPATH")
+ ":" pythondir))
+ ;; Install directory must exist.
+ (mkdir-p pythondir)
+ (substitute* "src/lib389/setup.py"
+ (("/usr") out))
+ (substitute* "Makefile.am"
+ (("setup.py install --skip-build" m)
+ (string-append m " --prefix=" out
+ " --root=/ --single-version-externally-managed"))))
+ #t))
+ (add-after 'build 'build-python-tools
+ (lambda* (#:key make-flags #:allow-other-keys)
+ ;; Set DETERMINISTIC_BUILD to override the embedded mtime in pyc
+ ;; files.
+ (setenv "DETERMINISTIC_BUILD" "1")
+ ;; Use deterministic hashes for strings, bytes, and datetime
+ ;; objects.
+ (setenv "PYTHONHASHSEED" "0")
+ (apply invoke "make" "lib389" make-flags)
+ #t))
+ (add-after 'install 'install-python-tools
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke "make" "lib389-install" make-flags)
+ #t))
+ (add-after 'install-python-tools 'wrap-python-tools
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (path (getenv "PYTHONPATH")))
+ (for-each (lambda (file)
+ (wrap-program (string-append out file)
+ `("PYTHONPATH" ":" prefix (,path))))
+ '("/sbin/dsconf"
+ "/sbin/dscreate"
+ "/sbin/dsctl"
+ "/sbin/dsidm"
+ "/bin/ds-logpipe.py"
+ "/bin/ds-replcheck"
+ "/bin/readnsstate")))
+ #t)))))
+ (inputs
+ `(("bdb" ,bdb)
+ ("cyrus-sasl" ,cyrus-sasl)
+ ("gnutls" ,gnutls)
+ ("httpd" ,httpd)
+ ("icu4c" ,icu4c)
+ ("libevent" ,libevent)
+ ("libselinux" ,libselinux)
+ ("linux-pam" ,linux-pam)
+ ("mit-krb5" ,mit-krb5)
+ ("net-snmp" ,net-snmp)
+ ("nspr" ,nspr)
+ ("nss" ,nss)
+ ("openldap" ,openldap)
+ ("pcre" ,pcre)
+ ("perl" ,perl)
+ ("python" ,python)
+ ("python-pyasn1" ,python-pyasn1)
+ ("python-pyasn1-modules" ,python-pyasn1-modules)
+ ("python-pytest" ,python-pytest)
+ ("python-dateutil" ,python-dateutil)
+ ("python-six" ,python-six)
+ ("python-argcomplete" ,python-argcomplete)
+ ("python-argparse-manpage" ,python-argparse-manpage)
+ ("python-ldap" ,python-ldap)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("doxygen" ,doxygen)
+ ("gettext" ,gettext-minimal)
+ ("libtool" ,libtool)
+ ("rsync" ,rsync)
+ ("pkg-config" ,pkg-config)))
+ (home-page "https://directory.fedoraproject.org")
+ (synopsis "Enterprise-class LDAP server")
+ (description "389ds is an enterprise-class LDAP server. It is hardened by
+real-world use, is full-featured, and supports multi-master replication.
+
+Other features include:
+
+@enumerate
+@item Online, zero downtime, LDAP-based update of schema, configuration, and
+ management including @dfn{Access Control Information} (ACIs);
+@item Asynchronous Multi-Master Replication, to provide fault tolerance and
+ high write performance;
+@item Extensive documentation;
+@item Secure authentication and transport (TLS, and SASL);
+@item LDAPv3 compliant server.
+@end enumerate\n")
+ ;; GPLv3+ with OpenSSL linking exception.
+ (license gpl3+)))
--
2.18.0
O
O
Oleg Pykhalov wrote on 31 Jul 2018 22:19
Re: [bug#32333] [PATCH 1/4] gnu: Add net-snmp.
(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)(address . 32333@debbugs.gnu.org)
87o9enw43q.fsf@gmail.com
Hello Ricardo,

Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> writes:

Toggle quote (24 lines)
> * gnu/packages/networking.scm (net-snmp): New variable.
> ---
> gnu/packages/networking.scm | 71 ++++++++++++++++++++++++++++++++++++-
> 1 file changed, 70 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
> index 90967b9b1..57055a92e 100644
> --- a/gnu/packages/networking.scm
> +++ b/gnu/packages/networking.scm
> @@ -1,6 +1,6 @@
> ;;; GNU Guix --- Functional package management for GNU
> ;;; Copyright © 2014, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
> -;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
> +;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
> ;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
> ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
> @@ -1965,3 +1965,72 @@ Features:
> @item Destination IP blacklist
> @end itemize")
> (license license:asl2.0))))
> +
> +(define-public net-snmp

[…]

This patch seems like what we want in

Thanks,
Oleg.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEc+OyAXw1EaDPCmAPckbhHGm3lWkFAltgxDkACgkQckbhHGm3
lWlFIw/7BA0SSS/QAT9CG3rsFMmMsXkW5YoBWUcA93JBRtoCHXIhPVwRHQTxDiuj
KFELuQ1kulU3/Qu4Y1j3UsNd4jYnlq5PpHRQDC7cgO1DnMtlm1HYsWfBxZYuHiuB
g6xqdHgdfmgGoCCj+G+5Mjkjew9nrjpjaGEJxDbQOYLETYYdbQEqjAAfUsZsn4Ps
A+MIhs6dp5jaxYlBwExtkegIews2jUGWgWSY76/iwWRCZaaKojpv416HT9hNEqUB
ZnWplS/Il5o6S3naa+JH68K+Cjp2psntYRbxPite3b8//iu/AgcE1Lnby0QCHmuK
kj/gpC50QZf8iQ7nJrJjH0QxRICxhD2TwKfXb6eIXKfhjVEk0G/nha4Ief9+sCXG
E56v40cDsXgcSzb39rXuv4PsWMipDc9LcNZPAxeu5ATy1AUxdWEb7q7jKZI3aI10
L7j2f+U6A+bQQvq6HoQXMXwA4BMxwbXXLjJD71hVVGeFl4q2F54+5uS4yLwjMZ0N
kouh4FfXYS5Dy8lmI8TNQnrskgkal6+ifORRgOzBg0Nn9Iw+OS9cGnrZKyPMm1Bg
9ok2ES4E67TVpjvdq1qTT6qRfgoIX9GouS8YL4jdEYbPSxatcMtqk7IB71Pmr8Ju
EPLq0196v89xulrXDidGWovx3WHfVWNilKArpfFLVNDgwKXNmxs=
=koEY
-----END PGP SIGNATURE-----

R
R
Ricardo Wurmus wrote on 1 Aug 2018 11:31
(name . Oleg Pykhalov)(address . go.wigust@gmail.com)
idjsh3ycu18.fsf@bimsb-sys02.mdc-berlin.net
Hi Oleg and Marius,

Toggle quote (31 lines)
> Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> writes:
>
>> * gnu/packages/networking.scm (net-snmp): New variable.
>> ---
>> gnu/packages/networking.scm | 71 ++++++++++++++++++++++++++++++++++++-
>> 1 file changed, 70 insertions(+), 1 deletion(-)
>>
>> diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
>> index 90967b9b1..57055a92e 100644
>> --- a/gnu/packages/networking.scm
>> +++ b/gnu/packages/networking.scm
>> @@ -1,6 +1,6 @@
>> ;;; GNU Guix --- Functional package management for GNU
>> ;;; Copyright © 2014, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
>> -;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
>> +;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
>> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
>> ;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
>> ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
>> @@ -1965,3 +1965,72 @@ Features:
>> @item Destination IP blacklist
>> @end itemize")
>> (license license:asl2.0))))
>> +
>> +(define-public net-snmp
>
> […]
>
> This patch seems like what we want in
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32268 \o/

Thanks for pointing this out!

I’ll combine this with both your patches and put it in networking.scm.

--
Ricardo
R
R
Ricardo Wurmus wrote on 16 Aug 2018 17:09
Re: [PATCH 4/4] gnu: Add 389-ds-base.
(address . 32333-done@debbugs.gnu.org)
871sayuz4f.fsf@mdc-berlin.de
Toggle quote (3 lines)
> * gnu/packages/openldap.scm (389-ds-base): New variable.
> ---

Pushed to the “master” branch with commit f51d8e4cb70cf1be549337e327bcc61253d4eeb3.

--
Ricardo
Closed
?