package simplification

This commit is contained in:
Yann Dupont 2021-10-18 18:14:21 +02:00
parent ad1359fdad
commit 1cfba51d04

View file

@ -1224,6 +1224,7 @@ in the @code{debug} output), and binutils.")))
(define-public ceph-15 (define-public ceph-15
(package (package
(inherit ceph)
(name "ceph-15") (name "ceph-15")
(version "15.2.14") (version "15.2.14")
(source (origin (source (origin
@ -1233,8 +1234,6 @@ in the @code{debug} output), and binutils.")))
(sha256 (sha256
(base32 (base32
"12cz10aascr2h7xbxp9ba5207pn9qv6m50xp5f8ns80vj6lzi6d3")) "12cz10aascr2h7xbxp9ba5207pn9qv6m50xp5f8ns80vj6lzi6d3"))
; (patches
; (search-patches "ceph-disable-cpu-optimizations.patch"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -1255,120 +1254,6 @@ in the @code{debug} output), and binutils.")))
"src/rocksdb" "src/rocksdb"
"src/boost")) "src/boost"))
#t)))) #t))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
(let* ((out (assoc-ref %outputs "out"))
(lib (assoc-ref %outputs "lib"))
(libdir (string-append lib "/lib")))
(list (string-append "-DCMAKE_INSTALL_PREFIX=" out)
(string-append "-DCMAKE_INSTALL_LIBDIR=" libdir)
(string-append "-DCMAKE_INSTALL_INCLUDEDIR="
lib "/include")
;; We need both libdir and libdir/ceph in RUNPATH.
(string-append "-DCMAKE_INSTALL_RPATH="
libdir ";" libdir "/ceph")
(string-append "-DCMAKE_INSTALL_SYSCONFDIR=" out "/etc")
(string-append "-DCMAKE_INSTALL_DATADIR=" lib "/share")
(string-append "-DCMAKE_INSTALL_MANDIR=" out "/share/man")
(string-append "-DCMAKE_INSTALL_DOCDIR=" out "/share/ceph/doc")
(string-append "-DCMAKE_INSTALL_LIBEXECDIR=" out "/libexec")
(string-append "-DKEYUTILS_INCLUDE_DIR="
(assoc-ref %build-inputs "keyutils") "/include")
(string-append "-DXFS_INCLUDE_DIR="
(assoc-ref %build-inputs "xfsprogs") "/include")
"-DCMAKE_INSTALL_LOCALSTATEDIR=/var"
"-DBUILD_SHARED_LIBS=ON"
"-DWITH_SYSTEM_ROCKSDB=ON"
"-DWITH_SYSTEM_BOOST=ON"
"-DWITH_PYTHON3=ON"
;; TODO: Enable these when available in Guix.
"-DWITH_MGR_DASHBOARD_FRONTEND=OFF" ;requires node + nodeenv
"-DWITH_BABELTRACE=OFF"
"-DWITH_LTTNG=OFF"
"-DWITH_SPDK=OFF"
"-DWITH_RADOSGW_AMQP_ENDPOINT=OFF"
;; Use jemalloc instead of tcmalloc.
"-DALLOCATOR=jemalloc"
;; Do not bother building the tests; we are not currently running
;; them, and they do not build with system googletest as of 14.2.5.
"-DWITH_TESTS=OFF"))
;; FIXME: Some of the tests leak Btrfs subvolumes on Btrfs. See
;; <https://bugs.gnu.org/29674> for details. Disable tests until
;; resolved.
#:tests? #f
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-source
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(lib (assoc-ref outputs "lib")))
(substitute* "cmake/modules/Distutils.cmake"
;; Prevent creation of Python eggs.
(("setup.py install")
"setup.py install --single-version-externally-managed --root=/"))
(substitute* (find-files "src/pybind" "^setup\\.py$")
;; Here we inject an extra line to the `setup.py' of the
;; Python C libraries so RUNPATH gets set up correctly.
; (("^([[:blank:]]+)extra_compile_args=(.*)$" _ indent args)
; (string-append indent "extra_compile_args=" args
; indent "extra_link_args=['-Wl,-rpath="
; lib "/lib'],\n")))
(("^([[:blank:]]+)extra_link_args=(.*)$" _ indent args)
(string-append indent "extra_link_args=(['-Wl,-rpath=" lib "/lib'] + distutils.sysconfig.get_config_var('LDFLAGS').split() + \n")))
;; Statically link libcrc32 because it does not get installed,
;; yet several libraries end up referring to it.
(substitute* "src/common/CMakeLists.txt"
(("add_library\\(crc32")
"add_library(crc32 STATIC"))
(substitute* "udev/50-rbd.rules"
(("/usr/bin/ceph-rbdnamer")
(string-append out "/bin/ceph-rbdnamer")))
#t)))
(add-before 'install 'set-install-environment
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(py3sitedir
(string-append out "/lib/python"
,(version-major+minor
(package-version python))
"/site-packages")))
;; The Python install scripts refuses to function if
;; the install directory is not on PYTHONPATH.
(setenv "PYTHONPATH"
(string-append py3sitedir ":"
(getenv "PYTHONPATH")))
#t)))
(add-after 'install 'wrap-python-scripts
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(scripts '("ceph" "ceph-mgr" "ceph-volume"))
(prettytable (assoc-ref inputs "python-prettytable"))
(six (assoc-ref inputs "python-six"))
(sitedir (lambda (package)
(string-append package
"/lib/python"
,(version-major+minor
(package-version python))
"/site-packages")))
(PYTHONPATH (string-append
(sitedir out) ":"
(sitedir six) ":"
(sitedir prettytable))))
(for-each (lambda (executable)
(wrap-program (string-append out "/bin/" executable)
`("PYTHONPATH" ":" prefix (,PYTHONPATH))))
scripts)
#t))))))
(outputs (outputs
'("out" "lib")) '("out" "lib"))
(native-inputs (native-inputs