summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2022-12-03 09:13:50 +0100
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2023-02-12 08:45:35 +0100
commit98b9f3a4bda072c55d8f94fcf17fc3357fce5b15 (patch)
treec24e2d3202533a246d3854792802c5a0f93cdfb9
parent629a5936a6dfa0fe2cc2a3092ec51920b216b652 (diff)
gnu: openscenegraph: Add output for plugins.
This makes it so that other packages can find plugins via pkg-config and link to them in the usual manner. * gnu/packages/graphics.scm (openscenegraph)[outputs]: Add “pluginlib”. [properties]: Add output synopsis for “pluginlib”. [arguments]<#:modules>: Use (ice-9 regex). <#:phases>: Add ‘copy-plugins’. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
-rw-r--r--gnu/packages/graphics.scm39
1 files changed, 37 insertions, 2 deletions
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 90e9259540..6f117f69a2 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -1351,8 +1351,10 @@ visual effects work for film.")
(base32 "00i14h82qg3xzcyd8p02wrarnmby3aiwmz0z43l50byc9f8i05n1"))
(file-name (git-file-name name version))))
(properties
- `((upstream-name . "OpenSceneGraph")))
+ `((upstream-name . "OpenSceneGraph")
+ (output-synopsis "pluginlib" "Plugins as shared libraries")))
(build-system cmake-build-system)
+ (outputs (list "out" "pluginlib"))
(arguments
(list
#:tests? #f ; no test target available
@@ -1362,7 +1364,40 @@ visual effects work for film.")
#:configure-flags
#~(list (string-append "-DCMAKE_INSTALL_RPATH="
#$output "/lib:"
- #$output "/lib64"))))
+ #$output "/lib64"))
+ #:modules `((guix build cmake-build-system)
+ (guix build utils)
+ (ice-9 regex))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'copy-plugins
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (pluginlib (assoc-ref outputs "pluginlib")))
+ (mkdir-p (string-append pluginlib "/lib/pkgconfig"))
+ (with-directory-excursion (string-append out "/lib/osgPlugins-"
+ #$version)
+ (for-each
+ (lambda (lib)
+ (let ((blib (basename lib))
+ (m (string-match "([^/]*)\\.so$" lib)))
+ (symlink (canonicalize-path lib)
+ (string-append pluginlib "/lib/lib" blib))
+ (call-with-output-file (string-append
+ pluginlib
+ "/lib/pkgconfig/"
+ (match:substring m 1) ".pc")
+ (lambda (port)
+ (format port "libdir=~a/lib~%" pluginlib)
+ (newline port)
+ (format port "Name: ~a~%" (match:substring m 1))
+ (format port "Version: ~a~%" #$version)
+ (display "Description: A plugin for openscenegraph\n"
+ port)
+ (display "Requires: openscenegraph\n" port)
+ (format port "Libs: -L${libdir} -l~a~%"
+ (match:substring m 1))))))
+ (find-files "." "\\.so")))))))))
(native-inputs
(list pkg-config unzip))
(inputs