(address . guix-patches@gnu.org)
---
gnu/packages/mandoc.scm | 67 +++++++++++++
gnu/packages/prjware.scm | 86 ++++++++++++++++
gnu/packages/skarnet.scm | 205 +++++++++++++++++++++++++++++++++++++--
3 files changed, 350 insertions(+), 8 deletions(-)
create mode 100644 gnu/packages/mandoc.scm
create mode 100644 gnu/packages/prjware.scm
Toggle diff (441 lines)
diff --git a/gnu/packages/mandoc.scm b/gnu/packages/mandoc.scm
new file mode 100644
index 0000000000..04ff18b14d
--- /dev/null
+++ b/gnu/packages/mandoc.scm
@@ -0,0 +1,67 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Dr. Stefan Karrmann <S.Karrmann@web.de>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mandoc)
+ #:use-module (guix packages)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages compression)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build utils)
+ #:use-module (gnu packages gawk))
+
+(define-public mandoc
+ (package
+ (name "mandoc")
+ (version "1.14.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://mandoc.bsd.lv/snapshots/mandoc-"
+ version ".tar.gz"))
+ (sha256 (base32
+ "1xyqllxpjj1kimlipx11pzyywf5c25i4wmv0lqm7ph3gnlnb86c2"))))
+ (native-inputs `(("perl" ,perl)))
+ (inputs `(("zlib" ,zlib)))
+ (build-system gnu-build-system)
+ (arguments '(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (invoke "make" "regress") #t))
+ (delete 'check)
+ (add-before 'configure 'conf-local
+ ; in general chdir subdir unless not sticky
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "configure"
+ (("DEFCFLAGS=\\\"-g") "DEFCFLAGS=\"-O3 -static")
+ (("PREFIX=.*$") (string-append
+ "PREFIX=" (assoc-ref outputs "out") "\n"))
+ (("CC=.*$") "CC=gcc\n"))
+ )))))
+ (synopsis "The mandoc manpage compiler toolset")
+ (description "The mandoc manpage compiler toolset (formerly called \"mdocml\")
+is a suite of tools compiling mdoc(7), the roff(7) macro language
+of choice for BSD manual pages, and man(7), the predominant
+historical language for UNIX manuals.
+
+It includes a man(1) manual viewer and additional tools.
+For general information, see <http://mandoc.bsd.lv/>.")
+ (home-page "https://mandoc.bsd.lv")
+; (license isc bsd-2 bsd-3)))
+ (license (@ (guix licenses) isc))))
diff --git a/gnu/packages/prjware.scm b/gnu/packages/prjware.scm
new file mode 100644
index 0000000000..290ef9435c
--- /dev/null
+++ b/gnu/packages/prjware.scm
@@ -0,0 +1,86 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Dr. Stefan Karrmann <S.Karrmann@web.de>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages prjware)
+ #:use-module (guix packages)
+ #:use-module (gnu packages skarnet)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build utils)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages gawk))
+
+(define-public runwhen
+ (package
+ (name "runwhen")
+ (version "2020.05.04")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://code.dogmap.org/runwhen/releases/runwhen-"
+ version ".tar.bz2"))
+ (sha256
+ (base32 ; guix hash /tmp/<runwhen...>
+ "0jqci0sbg116lrghhrdyvmb4a8haqmk6yb34liy5qbprmznkbmi7"))))
+ (build-system gnu-build-system)
+ (arguments `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'subdir
+ ; in general chdir subdir unless not sticky
+ (lambda _ (chdir (string-append ,name "-" ,version))
+ #t))
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* (find-files "src" "\\.c$")
+ (("pathexec0_run") "exec_e")
+ (("pathexec_env") "env_mexec")
+ (("pathexec\\(") "mexec("))
+ (with-output-to-file "conf-compile/package-home"
+ (lambda _ (display (assoc-ref outputs "out"))))
+ (with-output-to-file "conf-compile/host_link.sh"
+ (lambda _ (display (string-append "gcc "
+ "-L" (assoc-ref inputs "skalibs") "/lib "
+ "-o \"${output?}\" -s ${1+\"$@\"} "
+ ))))
+ (with-output-to-file "conf-compile/host_compile.sh"
+ (lambda _ (display (string-append "gcc -O2 "
+ "-I" (assoc-ref inputs "skalibs") "/include "
+ "${1+\"$@\"} -c \"${input?}\" -o \"${output?}\" "
+ "-Wall -W -Wpointer-arith -Wcast-align "
+ "-Wwrite-strings"))))
+ (with-output-to-file "conf-compile/depend_skalibs_sysdeps"
+ (lambda _ (display (string-append
+ (assoc-ref inputs "skalibs")
+ "/lib/skalibs/sysdeps"))))
+ #t))
+ (replace 'build
+ (lambda _ (invoke "package/build")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append
+ (assoc-ref outputs "out") "/bin")))
+ (copy-recursively "command" bin))))
+ (replace 'check
+ (lambda _ (invoke "package/check")))
+ )))
+ (inputs `(("skalibs" ,skalibs)))
+ ;(native-inputs `(("coreutils" ,coreutils)))
+ (synopsis "Paul Jarc's runwhen package")
+ (description "Programms rw-sleep, -match, -add, -sub, -min, -max, -touch")
+ (home-page "https://code.dogmap.org./runwhen/")
+ (license gpl2)))
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index 51be1a30e8..1e0d754ebe 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2017 Z. Ren <zren@dlut.edu.cn>
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2021 Dr. Stefan Karrmann <S.Karrmann@web.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,22 +23,24 @@
(define-module (gnu packages skarnet)
#:use-module (gnu packages)
+ #:use-module (gnu packages mandoc)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix build-system gnu))
(define-public skalibs
(package
(name "skalibs")
- (version "2.10.0.0")
+ (version "2.10.0.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://skarnet.org/software/skalibs/skalibs-"
version ".tar.gz"))
(sha256
- (base32 "122xipbxh6awsfdfj37mjc8f3g8ndmmmps4gw5s43mya8wgzib61"))))
+ (base32 "1chwjzlh13jbrldk77h3i4qjqv8hjpvvd3papcb8j46mvj7sxysg"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests exist
@@ -50,6 +53,7 @@
(("\\$\\(wildcard src/lib\\*/\\*.c\\)")
"$(sort $(wildcard src/lib*/*.c))"))
#t)))))
+ ; (native-inputs `(("execline" ,execline)))
(home-page "https://skarnet.org/software/skalibs/")
(synopsis "Platform abstraction libraries for skarnet.org software")
(description
@@ -59,6 +63,14 @@ including primitive data types, cryptography, and POSIX concepts like sockets
and file system operations. It is used by all skarnet.org software.")
(license isc)))
+(define-public skalibs-tai
+ (package (inherit skalibs)
+ (name "skalibs-tai")
+ (arguments
+ (append '(#:configure-flags '("--enable-tai-clock"))
+ (package-arguments skalibs)))
+ ))
+
(define-public execline
(package
(name "execline")
@@ -102,16 +114,21 @@ rather than in special syntax, minimizing runtime footprint and
complexity.")))
(define-public s6
+ (let ((commit "7fba356b1378b0d470f746b45797c229e9d882cd")
+ (revision "1"))
(package
(name "s6")
- (version "2.10.0.0")
+ (version (git-version "2.10.0.0" revision commit))
(source
(origin
- (method url-fetch)
- (uri (string-append "https://skarnet.org/software/s6/s6-"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/skarnet/s6")
+ (commit commit)
+ (recursive? #t)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "0xzqrd0m3wjklmw1w3gjw5dcdxnhgvxv2r5wd6m2ismw2jprr9k0"))))
+ (base32 "0mi23zimrbklwlx7qsiv9xb85k833lxj1vpvs4xzjjvw8plly1xd"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)
("execline" ,execline)))
@@ -145,7 +162,7 @@ runit, as well as various operations on processes and daemons. It is meant to
be a toolbox for low-level process and service administration, providing
different sets of independent tools that can be used within or without the
framework, and that can be assembled together to achieve powerful
-functionality with a very small amount of code.")))
+functionality with a very small amount of code."))))
(define-public s6-dns
(package
@@ -368,3 +385,175 @@ all the details.")))
"s6-linux-utils is a set of minimalistic Linux-specific system utilities,
such as @command{mount}, @command{umount}, and @command{chroot} commands,
Linux uevent listeners, a @command{devd} device hotplug daemon, and more.")))
+
+(define-public mdevd
+ (package
+ (name "mdevd")
+ (version "0.1.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://skarnet.org/software/mdevd/mdevd-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "0spvw27xxd0m6j8bl8xysmgsx18fl769smr6dsh25s2d5h3sp2dy"))))
+ (build-system gnu-build-system)
+ (inputs `(("skalibs" ,skalibs)
+ ("execline" ,execline)))
+ (arguments
+ '(#:configure-flags (list
+ (string-append "--with-lib="
+ (assoc-ref %build-inputs "skalibs")
+ "/lib/skalibs")
+ (string-append "--with-sysdeps="
+ (assoc-ref %build-inputs "skalibs")
+ "/lib/skalibs/sysdeps"))
+ #:tests? #f)) ; no tests exist
+ (home-page "https://skarnet.org/software/mdevd")
+ (license isc)
+ (synopsis "A small daemon managing kernel hotplug events, similarly to udevd")
+ (description
+ "It uses the same configuration file as mdev, which is a hotplug
+manager integrated in the Busybox suite of tools. However, mdev needs
+to be registered in /proc/sys/kernel/hotplug, and the kernel forks an
+instance of mdev for every event; by contrast, mdevd is a daemon and
+does not fork.
+
+The point of mdevd is to provide a drop-in replacement to mdev that
+does not fork, so it can handle large influxes of events at boot time
+without a performance drop. mdevd is designed to be entirely
+compatible with advanced mdev usage such as mdev-like-a-boss.")))
+
+(define-public utmps
+ (package
+ (name "utmps")
+ (version "0.1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://skarnet.org/software/utmps/utmps-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "09p0k2sgxr7jlsbrn66fzvzf9zxvpjp85y79xk10hxjglypszyml"))))
+ (build-system gnu-build-system)
+ (inputs `(("skalibs" ,skalibs)
+ ("s6" ,s6)))
+ (arguments
+ '(#:configure-flags (list
+ (string-append "--with-lib="
+ (assoc-ref %build-inputs "skalibs")
+ "/lib/skalibs")
+ (string-append "--with-sysdeps="
+ (assoc-ref %build-inputs "skalibs")
+ "/lib/skalibs/sysdeps"))
+ #:tests? #f)) ; no tests exist
+ (home-page "https://skarnet.org/software/utmps")
+ (license isc)
+ (synopsis "Implementation of the utmpx.h family of functions performing user accounting on Unix systems")
+ (description
+ "Traditionally, utmp functionality is provided by the system's libc.
+However, not all libcs implement utmp: for instance the musl libc, on
+Linux, does not. The main reason for it is that utmp functionality is
+difficult to implement in a secure way; in particular, it is
+impossible to implement without either running a daemon or allowing
+arbitrary programs to tamper with user accounting.
+
+utmps is a secure implementation of user accounting, using a daemon as
+the only authority to manage the utmp and wtmp data; programs running
+utmp functions are just clients to this daemon.")))
+
+(define-public nsss
+ (package
+ (name "nsss")
+ (version "0.1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://skarnet.org/software/nsss/nsss-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "15rxbwf16wm1la079yr2xn4bccjgd7m8dh6r7bpr6s57cj93i2mq"))))
+ (build-system gnu-build-system)
+ (inputs `(("skalibs" ,skalibs)
+ ("s6" ,s6)))
+ (arguments
+ '(#:configure-flags (list
+ (string-append "--with-lib="
+ (assoc-ref %build-inputs "skalibs")
+ "/lib/skalibs")
+ (string-append "--with-sysdeps="
+ (assoc-ref %build-inputs "skalibs")
+ "/lib/skalibs/sysdeps"))
+ #:tests? #f)) ; no tests exist
+ (home-page "https://skarnet.org/software/nsss")
+ (license isc)
+ (synopsis "subset of the pwd.h, group.h and shadow.h family of functions, performing user database access on Unix systems")
+ (description
+ "Usually, user database access via getpwnam() and similar function is
+provided by the system's libc. However, not all libcs implement a
+configurable backend for the user/group database. For instance the
+musl libc, on Linux, only supports the standard /etc/passwd mechanism;
+it also supports the nscd protocol but this is not quite enough:
+
+musl only connects to nscd when it cannot find an answer in its files backend
+The nscd protocol does not support enumeration, so primitives
+such as getpwent() cannot be implemented over nscd.
+
+The mechanism used by glibc, called Name Service Switch
+(abbreviated to nsswitch or NSS), has its own set of issues
+that makes it unsuitable in certain situations.
+
+nsss is a secure implementation of a \"name service switch\":
+configurable user/group/shadow database access, providing
+getpwnam() et al. functionality by communicating over a Unix
+domain socket with a daemon; the daemon can perform lookups in
+any database it chooses.
+
+nsss does not perform dynamic module loading, only adds a
+small footprint to the application's binary, and does not add
+any complex decision engine into the client's address space.
+Applications can be statically linked against the nsss
+library, and still benefit from configurable user database
+access functions.")))
+
+(define-public s6-man-pages
+ (package
+ (name "s6-man-pages")
+ (version "2.10.0.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/flexibeast/s6-man-pages/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32 "00qx3qki5wz28sky782h2hwd82fr3nsqrhchrkph9yq4did3354g"))))
+ (native-inputs `(("mandoc" ,mandoc)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; no tests exist
+ #:phases (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "Makefile"
+ (("^install-mdoc:") "install-mdoc:
+\tmkdir -p $(man1) $(man7)")
+ (("^install-man:") "install-man:
+\tmkdir -p $(man1) $(man7)")
+ (("MANPATH .= /usr/share/man")
+ (string-append "MANPATH ="
+ (assoc-ref outputs "out")
+ "/man")))))
+ (replace 'build
+ (lambda _ (invoke "make" "-j" "1")))
+ (replace 'install
+ (lambda _
+ (invoke "make" "install-man"))))))
+ (home-page "https://github.com/flexibeast/s6-man-pages")
+ (license isc)
+ (synopsis "man pages for s6")
+ (description
+ "Additional man pages for s6")))
--
2.20.1