summary refs log tree commit diff
path: root/gnu/packages/linux.scm
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2019-03-05 16:56:41 +0100
committerTobias Geerinckx-Rice <me@tobias.gr>2019-03-05 17:01:53 +0100
commit908a3f361480f39819c712d62a5e0b685e823c54 (patch)
treeacf5fbf365401253eadd698e8c0db963f46b6219 /gnu/packages/linux.scm
parent9a3d176ee1b49d4b6d8a7cf0a80512cfa61c0e61 (diff)
downloadguix-908a3f361480f39819c712d62a5e0b685e823c54.tar.gz
gnu: thinkfan: Let the build system handle rcscripts/.
This moves them from /share/thinkfan to their conventional locations
in /etc and /lib; the former was an arbitrary Guixism anyway.

* gnu/packages/linux.scm (thinkfan)[arguments]:
Re-write 'install-rc-scripts' as 'create-init-scripts' and move it after
the 'unpack' phase.
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r--gnu/packages/linux.scm28
1 files changed, 16 insertions, 12 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 9f83f97cef..dd9e19aa37 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -3507,19 +3507,23 @@ feature, and a laptop with an accelerometer.  It has no effect on SSDs.")
        `("-DUSE_ATASMART:BOOL=ON")
        #:phases
        (modify-phases %standard-phases
-         ;; Install scripts for various foreign init systems. Also fix
-         ;; hard-coded path for daemon.
-         (add-after 'install 'install-rc-scripts
+         (add-after 'unpack 'create-init-scripts
+           ;; CMakeLists.txt relies on build-time symptoms of OpenRC and
+           ;; systemd to patch and install their service files.  Fake their
+           ;; presence rather than duplicating the build system below.  Leave
+           ;; things like ‘/bin/kill’ because they're not worth a dependency.
+           ;; The sysvinit needs manual patching, but since upstream doesn't
+           ;; even provide the option to install it: don't.
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (files (find-files "../source/rcscripts" ".*")))
-               (substitute* files
-                 (("/usr/sbin/(\\$NAME|thinkfan)" _ name)
-                  (string-append out "/sbin/" name)))
-               (for-each (cute install-file <>
-                               (string-append out "/share/thinkfan"))
-                         files))
-             #t)))))
+             (let* ((out   (assoc-ref outputs "out"))
+                    (share (string-append out "/share/" ,name)))
+               (substitute* "CMakeLists.txt"
+                 (("pkg_check_modules\\((OPENRC|SYSTEMD) .*" _ package)
+                  (format "option(~a_FOUND \"Faked\" ON)\n" package))
+                 ;; That was easy!  Now we just need to fix the destinations.
+                 (("/etc" directory)
+                  (string-append out directory)))
+               #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs