aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjgart <jgart@dismail.de>2024-10-02 07:20:24 +0000
committerjgart <jgart@dismail.de>2024-10-02 20:23:20 +0000
commit3048b6f20440c17f3d8fb045646095faad615da9 (patch)
tree8f97845c81fba206239dc8b637135686813f87fd
parent25c8178a73ce5d58d9d6409c82030e6d34e231e6 (diff)
downloadguix-3048b6f20440c17f3d8fb045646095faad615da9.tar
guix-3048b6f20440c17f3d8fb045646095faad615da9.tar.gz
guix-3048b6f20440c17f3d8fb045646095faad615da9.tar.bz2
guix-3048b6f20440c17f3d8fb045646095faad615da9.tar.lz
guix-3048b6f20440c17f3d8fb045646095faad615da9.tar.xz
guix-3048b6f20440c17f3d8fb045646095faad615da9.tar.zst
guix-3048b6f20440c17f3d8fb045646095faad615da9.zip
gnu: lem: Build included shared library.
* gnu/packages/text-editors.scm (lem): Build shared library. [source]: Delete precompiled binaries. [arguments]: Patch libvterm and build shared library. [inputs]: Add libvterm. Change-Id: I296f139f93032ccbb380e112c9c1e4fd681ae1a7
-rw-r--r--gnu/packages/text-editors.scm32
1 files changed, 30 insertions, 2 deletions
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index afc6caffbe..1851440ffd 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -165,25 +165,53 @@ extensions over the standard utility.")
(snippet
#~(begin
(use-modules (guix build utils))
- (delete-file-recursively "roswell")))))
+ (delete-file-recursively "roswell")
+ ;; Delete precompiled shared object files.
+ (delete-file-recursively "extensions/terminal/lib")))))
(build-system asdf-build-system/sbcl)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-shared-object-files
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((libvterm-lib (assoc-ref inputs "libvterm"))
+ (lib-dir (string-append libvterm-lib "/lib"))
+ (shared-lib-dir (string-append (assoc-ref outputs "out")
+ "/lib"))
+ (shared-lib (string-append shared-lib-dir
+ "/terminal.so")))
+
+ (substitute* "extensions/terminal/ffi.lisp"
+ (("terminal.so") shared-lib)))))
(add-after 'create-asdf-configuration 'build-program
(lambda* (#:key outputs #:allow-other-keys)
(build-program
(string-append (assoc-ref outputs "out") "/bin/lem")
outputs
#:dependencies '("lem-ncurses" "lem-sdl2")
- #:entry-program '((lem:main) 0)))))))
+ #:entry-program '((lem:main) 0))))
+ (add-after 'build 'build-terminal-library
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((libvterm-lib (assoc-ref inputs "libvterm"))
+ (lib-dir (string-append libvterm-lib "/lib"))
+ (shared-lib-dir (string-append (assoc-ref outputs "out")
+ "/lib"))
+ (shared-lib (string-append shared-lib-dir
+ "/terminal.so")))
+ (mkdir-p shared-lib-dir)
+ (invoke "gcc" "extensions/terminal/terminal.c"
+ "-L" lib-dir "-lvterm"
+ "-Wl,-Bdynamic"
+ "-o" shared-lib
+ "-fPIC" "-shared")))))))
(native-inputs
(list sbcl-cl-ansi-text
sbcl-rove
sbcl-trivial-package-local-nicknames))
(inputs
(list
+ libvterm
sbcl-alexandria
sbcl-trivia
sbcl-trivial-gray-streams