aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/admin.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/admin.scm')
-rw-r--r--gnu/packages/admin.scm287
1 files changed, 237 insertions, 50 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 082f3d3130..8d6ae9eb1f 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
-;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright © 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
@@ -29,7 +29,7 @@
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
@@ -43,6 +43,8 @@
;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -135,11 +137,14 @@
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
+ #:use-module (gnu packages selinux)
#:use-module (gnu packages serialization)
+ #:use-module (gnu packages ssh)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages tcl)
#:use-module (gnu packages terminals)
#:use-module (gnu packages texinfo)
+ #:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
@@ -834,6 +839,17 @@ hostname.")
#:phases
(modify-phases %standard-phases
+ ,@(if (%current-target-system)
+ '((add-before 'configure 'set-runtime-shell
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((shell (string-append
+ (assoc-ref inputs "bash")
+ "/bin/bash")))
+ (setenv "RUNTIME_SHELL" shell)
+ (substitute* "configure.ac"
+ (("\\$SHELL")
+ "$RUNTIME_SHELL"))))))
+ '())
(add-before 'build 'set-nscd-file-name
(lambda* (#:key inputs #:allow-other-keys)
;; Use the right file name for nscd.
@@ -858,7 +874,10 @@ hostname.")
(inputs
`(,@(if (hurd-target?)
'()
- `(("linux-pam" ,linux-pam)))))
+ `(("linux-pam" ,linux-pam)))
+ ,@(if (%current-target-system)
+ `(("bash" ,bash-minimal))
+ '())))
(home-page "https://github.com/shadow-maint/shadow")
(synopsis "Authentication-related tools such as passwd, su, and login")
(description
@@ -1248,7 +1267,11 @@ connection alive.")
"--owner=root:0"
"--group=root:0")))))
(add-after 'install 'post-install
- (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; TODO(core-updates): native-inputs isn't required anymore.
+ (lambda* (#:key ,@(if (%current-target-system)
+ '(native-inputs)
+ '())
+ inputs outputs #:allow-other-keys)
;; Install the dhclient script for GNU/Linux and make sure
;; if finds all the programs it needs.
(let* ((out (assoc-ref outputs "out"))
@@ -1272,6 +1295,19 @@ connection alive.")
(string-append dir "/bin:"
dir "/sbin"))
(list inetutils net-tools coreutils sed))))
+ ;; TODO(core-updates): should not be required anymore,
+ ;; once <https://issues.guix.gnu.org/49290> has been merged.
+ ,@(if (%current-target-system)
+ '((for-each
+ (lambda (file)
+ (substitute* file
+ (((assoc-ref native-inputs "bash"))
+ (assoc-ref inputs "bash"))))
+ (list (string-append libexec
+ "/dhclient-script")
+ (string-append libexec
+ "/.dhclient-script-real"))))
+ '())
#t))))))
(native-inputs
@@ -1279,6 +1315,11 @@ connection alive.")
("file" ,file)))
(inputs `(("inetutils" ,inetutils)
+ ;; TODO(core-updates): simply make this unconditional
+ ,@(if (%current-target-system)
+ ;; for wrap-program
+ `(("bash" ,(canonical-package bash-minimal)))
+ '())
,@(if (hurd-target?) '()
`(("net-tools" ,net-tools)
("iproute" ,iproute)))
@@ -2477,40 +2518,29 @@ Statsd, Librato and InfluxDB. Graphios can emit Nagios metrics to any number
of supported upstream metrics systems simultaneously.")
(license license:gpl2+)))
-(define-public ansible
+(define-public ansible-core
(package
- (name "ansible")
- (version "2.9.18")
+ (name "ansible-core")
+ (version "2.11.4")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "ansible" version))
+ (uri (pypi-uri "ansible-core" version))
(sha256
- (base32 "0g6rsnh02zq5nizamgakl2wvgz7hk1lpnjn9akldrcpa55vygzjm"))))
+ (base32
+ "0jgahcv2pyc5ky0wir55a1h9q9d6rgqj60rqmvlpbj76vz1agsi2"))))
(build-system python-build-system)
- (native-inputs
- `(("python-bcrypt" ,python-bcrypt)
- ("python-pynacl" ,python-pynacl)
- ("python-httplib2" ,python-httplib2)
- ("python-passlib" ,python-passlib)
- ("python-nose" ,python-nose)
- ("python-mock" ,python-mock)
- ("python-jinja2" ,python-jinja2)
- ("python-pyyaml" ,python-pyyaml)
- ("python-paramiko" ,python-paramiko)))
- (inputs
- `(("python-cryptography" ,python-cryptography)
- ("python-jinja2" ,python-jinja2)
- ("python-pyyaml" ,python-pyyaml)
- ("python-paramiko" ,python-paramiko)))
(arguments
- `(#:phases
+ `(#:modules ((guix build python-build-system)
+ (guix build utils)
+ (ice-9 ftw))
+ #:phases
(modify-phases %standard-phases
;; Several ansible commands (ansible-config, ansible-console, etc.)
- ;; are just symlinks to a single ansible executable. The ansible
- ;; executable behaves differently based on the value of
- ;; sys.argv[0]. This does not work well with our wrap phase, and
- ;; therefore the following two phases are required as a workaround.
+ ;; are just symlinks to a single ansible executable. The ansible
+ ;; executable behaves differently based on the value of sys.argv[0].
+ ;; This does not work well with our wrap phase, and therefore the
+ ;; following two phases are required as a workaround.
(add-after 'unpack 'hide-wrapping
(lambda _
;; Overwrite sys.argv[0] to hide the wrapper script from it.
@@ -2519,27 +2549,138 @@ of supported upstream metrics systems simultaneously.")
(string-append all "
import re
sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0])
-")))
- #t))
+")))))
(add-after 'install 'replace-symlinks
(lambda* (#:key outputs #:allow-other-keys)
;; Replace symlinks with duplicate copies of the ansible
- ;; executable.
- (let ((out (assoc-ref outputs "out")))
+ ;; executable so that sys.argv[0] has the correct value.
+ (define bin (string-append (assoc-ref outputs "out") "/bin"))
+ (with-directory-excursion bin
(for-each
- (lambda (subprogram)
- (delete-file (string-append out "/bin/ansible-" subprogram))
- (copy-file (string-append out "/bin/ansible")
- (string-append out "/bin/ansible-" subprogram)))
- (list "config" "console" "doc" "galaxy"
- "inventory" "playbook" "pull" "vault")))
- #t)))))
+ (lambda (ansible-symlink)
+ (delete-file ansible-symlink)
+ (copy-file "ansible" ansible-symlink))
+ (scandir "." (lambda (x)
+ (and (eq? 'symlink (stat:type (lstat x)))
+ (string-prefix? "ansible-" x)
+ (string=? "ansible" (readlink x)))))))))
+ (add-after 'unpack 'preserve-pythonpath
+ (lambda _
+ (substitute* "test/lib/ansible_test/_internal/ansible_util.py"
+ (("PYTHONPATH=get_ansible_python_path\\(args\\)" all)
+ (string-append all "+ ':' + os.environ['PYTHONPATH']")))))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "lib/ansible/module_utils/compat/selinux.py"
+ (("libselinux.so.1" name)
+ (string-append (assoc-ref inputs "libselinux")
+ "/lib/" name)))
+ (substitute* "test/units/modules/test_async_wrapper.py"
+ (("/usr/bin/python")
+ (which "python")))))
+ (replace 'check
+ ;; The environment for the test suite can be tricky to get right.
+ ;; The environment used for Ansible's CI defined in the following
+ ;; Dockerfile can be used as a reference:
+ ;; https://raw.githubusercontent.com/ansible/
+ ;; default-test-container/master/Dockerfile.
+ (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+ (when tests?
+ ;; Otherwise Ansible fails to create its config directory.
+ (setenv "HOME" "/tmp")
+ (setenv "PATH" (string-append (getenv "PATH") ":"
+ (assoc-ref outputs "out") "/bin"))
+ (add-installed-pythonpath inputs outputs)
+ ;; This test module messes up with sys.path and causes many
+ ;; test failures.
+ (delete-file "test/units/_vendor/test_vendor.py")
+ ;; The test fails when run in the container, for reasons
+ ;; unknown.
+ (delete-file "test/units/utils/test_display.py")
+ ;; This test fail for reasons unknown.
+ (delete-file "test/units/cli/test_adhoc.py")
+ ;; The test suite needs to be run with 'ansible-test', which
+ ;; does some extra environment setup. Taken from
+ ;; https://raw.githubusercontent.com/ansible/ansible/\
+ ;; devel/test/utils/shippable/shippable.sh.
+ (invoke "ansible-test" "units" "-v")))))))
+ (native-inputs
+ `(("openssh" ,openssh)
+ ("openssl" ,openssl)
+ ("python-mock" ,python-mock)
+ ("python-pycrypto" ,python-pycrypto)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-forked" ,python-pytest-forked)
+ ("python-pytest-mock" ,python-pytest-mock)
+ ("python-pytest-xdist" ,python-pytest-xdist)
+ ("python-pytz" ,python-pytz)))
+ (inputs ;optional dependencies captured in wrap scripts
+ `(("libselinux" ,libselinux)
+ ("python-paramiko" ,python-paramiko)
+ ("python-passlib" ,python-passlib)
+ ("python-pexpect" ,python-pexpect)
+ ("sshpass" ,sshpass)))
+ (propagated-inputs ;core dependencies listed in egg-info/requires.txt
+ `(("python-cryptography" ,python-cryptography)
+ ("python-jinja2" ,python-jinja2)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-packaging" ,python-packaging) ;for version number parsing
+ ("python-resolvelib" ,python-resolvelib-0.5)))
(home-page "https://www.ansible.com/")
(synopsis "Radically simple IT automation")
- (description "Ansible is a radically simple IT automation system. It
-handles configuration management, application deployment, cloud provisioning,
-ad hoc task execution, and multinode orchestration---including trivializing
-things like zero-downtime rolling updates with load balancers.")
+ (description "Ansible aims to be a radically simple IT automation system.
+It handles configuration management, application deployment, cloud
+provisioning, ad-hoc task execution, network automation, and multi-node
+orchestration. Ansible facilitates complex changes like zero-downtime rolling
+updates with load balancers. This package is the core of Ansible, which
+provides the following commands:
+@itemize
+@item ansible
+@item ansible-config
+@item ansible-connection
+@item ansible-console
+@item ansible-doc
+@item ansible-galaxy
+@item ansible-inventory
+@item ansible-playbook
+@item ansible-pull
+@item ansible-test
+@item ansible-vault
+@end itemize")
+ (license license:gpl3+)))
+
+(define-public ansible
+ (package
+ (name "ansible")
+ (version "4.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ansible" version))
+ (sha256
+ (base32 "031n22j0lsmh69x6i6gkva81j68b4yzh1pbg3q2h4bknl85q46ag"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("ansible-core" ,ansible-core)))
+ ;; The Ansible collections are found by ansible-core via PYTHONPATH; the
+ ;; following search path ensures that they are found even when Python is
+ ;; not present in the profile.
+ (native-search-paths
+ ;; XXX: Attempting to use (package-native-search-paths python)
+ ;; here would cause an error about python being an unbound
+ ;; variable in the tests/cpan.scm test.
+ (list (search-path-specification
+ (variable "PYTHONPATH")
+ (files (list "lib/python3.8/site-packages")))))
+ (home-page "https://www.ansible.com/")
+ (synopsis "Radically simple IT automation")
+ (description "Ansible aims to be a radically simple IT automation system.
+It handles configuration management, application deployment, cloud
+provisioning, ad-hoc task execution, network automation, and multi-node
+orchestration. Ansible facilitates complex changes like zero-downtime rolling
+updates with load balancers. This package provides a curated set of
+community-maintained Ansible collections, which contain playbooks, roles,
+modules and plugins that extend Ansible.")
(license license:gpl3+)))
(define-public debops
@@ -3401,7 +3542,7 @@ buffers.")
(define-public igt-gpu-tools
(package
(name "igt-gpu-tools")
- (version "1.25")
+ (version "1.26")
(source
(origin
(method git-fetch)
@@ -3410,7 +3551,7 @@ buffers.")
(commit (string-append "igt-gpu-tools-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1lvhkdhilw0fn4nzkpfwvrhiv8d92h811qs2v6ac3p5w7v86a9zm"))))
+ (base32 "0m124pqv7zna25jnvk566c4kk628jr0w8mgnp8mr5xqz9cprgczm"))))
(build-system meson-build-system)
(arguments
`(#:tests? #f)) ; many of the tests try to load kernel modules
@@ -3846,7 +3987,7 @@ Python loading in HPC environments.")
(let ((real-name "inxi"))
(package
(name "inxi-minimal")
- (version "3.3.04-1")
+ (version "3.3.06-1")
(source
(origin
(method git-fetch)
@@ -3855,7 +3996,7 @@ Python loading in HPC environments.")
(commit version)))
(file-name (git-file-name real-name version))
(sha256
- (base32 "1rrhycp8i43yf9wi80n4pq2hkfhvb2rg1srz8if28bh6fhhasjzw"))))
+ (base32 "1qk40iyrdp52vmbiqwxicvlcycm2v2bf1gg4lzq0b4619sd6d1m7"))))
(build-system trivial-build-system)
(inputs
`(("bash" ,bash-minimal)
@@ -4427,14 +4568,14 @@ Netgear devices.")
(define-public atop
(package
(name "atop")
- (version "2.5.0")
+ (version "2.6.0")
(source (origin
(method url-fetch)
(uri (string-append "https://www.atoptool.nl/download/atop-"
version ".tar.gz"))
(sha256
(base32
- "0crzz4i2nabyh7d6xg7fvl65qls87nbca5ihidp3nijhrrbi14ab"))))
+ "0wlg0n0h9vwpjp2dcb623jvvqck422jrjpq9mbpzg4hnawxcmhly"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite
@@ -4626,3 +4767,49 @@ the XMODEM/YMODEM/ZMODEM file transfer protocols.")
setup, maintenance, supervision, or any long-running processes.")
(home-page "https://github.com/leahneukirchen/nq")
(license license:public-domain)))
+
+(define-public lsofgraph
+ (let ((commit "1d414bdc727c00a8c6cbfffc3c43128c60d6f0de")
+ (revision "1"))
+ (package
+ (name "lsofgraph")
+ (version (git-version "0.0.1" revision commit)) ;no upstream release
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zevv/lsofgraph")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "058x04yp6bc77hbl3qchqm7pa8f9vqfl9jryr88m8pzl7kvpif54"))))
+ (build-system trivial-build-system)
+ (inputs
+ `(("lua" ,lua)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ ;; copy source
+ (copy-recursively (assoc-ref %build-inputs "source") ".")
+ ;; patch-shebang phase
+ (setenv "PATH"
+ (string-append (assoc-ref %build-inputs "lua") "/bin"
+ ":" (getenv "PATH")))
+ (substitute* "lsofgraph"
+ (("#!/usr/bin/env lua")
+ (string-append "#!" (which "lua"))))
+ ;; install phase
+ (install-file "lsofgraph" (string-append %output "/bin"))
+ (let ((doc (string-append
+ %output "/share/doc/" ,name "-" ,version)))
+ (mkdir-p doc)
+ (install-file "LICENSE" doc)
+ (install-file "README.md" doc))
+ #t)))
+ (home-page "https://github.com/zevv/lsofgraph")
+ (synopsis "Convert @code{lsof} output to @code{graphviz}")
+ (description "Utility to convert @code{lsof} output to a graph showing
+FIFO and UNIX interprocess communication.")
+ (license license:bsd-2))))