gnu: Add libselinux.

* gnu/packages/selinux.scm (libselinux): New variable.
master
Ricardo Wurmus 2017-04-14 11:47:32 +02:00
parent 66af08fb5a
commit 4724d7297f
No known key found for this signature in database
GPG Key ID: 197A5888235FACAC
1 changed files with 63 additions and 1 deletions

View File

@ -22,9 +22,14 @@
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex))
#:use-module (gnu packages flex)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages swig))
;; Update the SELinux packages together!
@ -104,3 +109,60 @@ Checkmodule is a program that checks and compiles a SELinux security policy
module into a binary representation.")
;; GPLv2 only
(license license:gpl2)))
(define-public libselinux
(package (inherit libsepol)
(name "libselinux")
(arguments
(substitute-keyword-arguments (package-arguments libsepol)
((#:make-flags flags)
`(cons* "PYTHON=python3"
(string-append "PYSITEDIR="
(assoc-ref %outputs "out")
"/lib/python"
,(version-major+minor (package-version python))
"/site-packages/")
,flags))
((#:phases phases)
`(modify-phases ,phases
(replace 'enter-dir
(lambda _ (chdir ,name) #t))
;; libsepol.a is not located in this package's LIBDIR.
(add-after 'enter-dir 'patch-libsepol-path
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/Makefile"
(("\\$\\(LIBDIR\\)/libsepol.a")
(string-append (assoc-ref inputs "libsepol")
"/lib/libsepol.a")))
#t))
(add-after 'enter-dir 'remove-Werror
(lambda _
;; GCC complains about the fact that the output does not (yet)
;; have an "include" directory, even though it is referenced.
(substitute* '("src/Makefile"
"utils/Makefile")
(("-Werror ") ""))
#t))
(add-after 'build 'pywrap
(lambda* (#:key make-flags #:allow-other-keys)
(zero? (apply system* "make" "pywrap" make-flags))))
(add-after 'install 'install-pywrap
(lambda* (#:key make-flags #:allow-other-keys)
(zero? (apply system* "make" "install-pywrap" make-flags))))))))
(inputs
`(("libsepol" ,libsepol)
("pcre" ,pcre)
;; For pywrap phase
("python" ,python-wrapper)))
;; These inputs are only needed for the pywrap phase.
(native-inputs
`(("swig" ,swig)
("pkg-config" ,pkg-config)))
(synopsis "SELinux core libraries and utilities")
(description
"The libselinux library provides an API for SELinux applications to get
and set process and file security contexts, and to obtain security policy
decisions. It is required for any applications that use the SELinux API, and
used by all applications that are SELinux-aware. This package also includes
the core SELinux management utilities.")
(license license:public-domain)))