(address . guix-patches@gnu.org)
---
gnu/packages/libldm.scm | 70 +++++++++++++++++++++++++++++++++++++++++
gnu/services/libldm.scm | 47 +++++++++++++++++++++++++++
2 files changed, 117 insertions(+)
create mode 100644 gnu/packages/libldm.scm
create mode 100644 gnu/services/libldm.scm
Toggle diff (141 lines)
diff --git a/gnu/packages/libldm.scm b/gnu/packages/libldm.scm
new file mode 100644
index 0000000000..38fb5e218e
--- /dev/null
+++ b/gnu/packages/libldm.scm
@@ -0,0 +1,70 @@
+(define-module (gnu packages libldm)
+ #:use-module (gnu packages)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages docbook)
+ #:use-module (gnu packages gtk)
+ #:use-module (guix git-download))
+
+(define-public libldm
+ (package
+ (name "libldm")
+ (version "0.2.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mdbooth/libldm.git")
+ (commit (string-append "libldm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "08iz3kq4ci79abpyxwwqmzi3bayyk4s29n8h1jqgdgk5yskwgnrn"))))
+ (build-system gnu-build-system)
+ (inputs (list json-glib
+ glib
+ zlib
+ readline
+ lvm2
+ libgudev))
+ (native-inputs (list which
+ m4
+ libtool
+ autoconf-wrapper
+ automake
+ pkg-config
+ `(,glib "bin")
+ gtk-doc
+ libxml2
+ libxslt
+ docbook-xsl))
+ (arguments
+ '(#:tests? #f
+ #:parallel-build? #t
+ #:phases (modify-phases %standard-phases
+ (add-before 'configure 'set-env
+ (lambda _
+ (setenv "CONFIG_SHELL"
+ (which "")) #t))
+ (add-before 'bootstrap 'run-gtkdocize
+ (lambda _
+ (invoke "gtkdocize")))
+ (replace 'bootstrap
+ (lambda _
+ (invoke "autoreconf" "-fiv"))))))
+ (home-page "https://github.com/mdbooth/libldm")
+ (synopsis "Manager for Microsoft Windows dynamic disks")
+ (description
+ "Libldm is a library for managing Microsoft Windows dynamic
disks, which use Microsoft's LDM metadata. It can inspect them, and
also create and remove device-mapper block devices which can be
mounted.")
+ (license license:gpl3)))
diff --git a/gnu/services/libldm.scm b/gnu/services/libldm.scm
new file mode 100644
index 0000000000..00e19540f0
--- /dev/null
+++ b/gnu/services/libldm.scm
@@ -0,0 +1,47 @@
+(define-module (gnu services libldm)
+ #:use-module (guix records)
+ #:use-module (guix gexp)
+ #:use-module (guix diagnostics)
+ #:use-module (guix i18n)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 match)
+ #:use-module (guix gexp)
+ #:use-module (gnu services)
+ #:use-module (guix modules)
+ #:use-module (gnu services base)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu packages libldm)
+ #:export (libldm-configuration libldm-configuration? libldm-service-type))
+
+(define-record-type* <libldm-configuration>
+ libldm-configuration
+ make-libldm-configuration
+ libldm-configuration?
+ (package
+ libldm-configuration-package
+ (default libldm))
+ (action libldm-configuration-action
+ (default '("create" "all"))))
+
+(define (libldm-shepherd-service config)
+ "Return a <shepherd-service> for libldm with CONFIG"
+ (let* ((libldm (libldm-configuration-package config))
+ (action (libldm-configuration-action config)))
+ (list (shepherd-service (documentation
+ "Run ldmtool to create Windows dynamic
disc device nodes at startup.")
+ (provision '(libldmd))
+ (one-shot? #t)
+ (start #~(make-forkexec-constructor
(append (list (string-append #$libldm
+
"/bin/ldmtool"))
+
'(#$@action))))
+ (stop #~(make-kill-destructor))))))
+
+(define libldm-service-type
+ (service-type (name 'libldm)
+ (extensions (list (service-extension
+ shepherd-root-service-type
+ libldm-shepherd-service)))
+ (default-value (libldm-configuration))
+ (description
+ "Run ldmtool to create device nodes for Windows
dynamic discs so they can be mounted")))
base-commit: 41bce2414a286836b4071d90b660fb457ee76e32
--
2.36.1