@@ -15,6 +15,7 @@
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -47,6 +48,8 @@
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages gperf)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
@@ -68,6 +71,7 @@
#:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages version-control)
#:use-module (gnu packages virtualization)
#:use-module (gnu packages web-browsers)
#:use-module (gnu packages xml)
@@ -2831,6 +2835,106 @@ writing to these structures, and they are accessed via the Bigarray module.")
(description "Hex is a minimal library providing hexadecimal converters.")
(license license:isc)))
+(define-public ocaml-hivex
+ (package
+ (name "ocaml-hivex")
+ ;; Make sure to update the gnulib input to the commit upstream uses when
+ ;; updating this package
+ (version "1.3.19")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libguestfs/hivex")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1gw59ac6z4fbg0flajnsh6d25h75pnk4605d5rw9rv0bvhfvway5"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(;; XXX: I'm not sure why runpath validation doesn't work
+ #:validate-runpath? #f
+ #:configure-flags
+ (list (string-append "CONFIG_SHELL="
+ (assoc-ref %build-inputs "bash") "/bin/bash")
+ (string-append "SHELL="
+ (assoc-ref %build-inputs "bash") "/bin/bash"))
+ #:test-target "check"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-gnulib
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((gnulib (assoc-ref inputs "gnulib")))
+ ;; Upstream gnulib is cloned into this directory as a submodule
+ (copy-recursively gnulib ".gnulib")
+ #t)))
+ ;; Autogen calls bootstrap and then generates a configure script
+ (add-before 'configure 'autogen
+ (lambda _
+ (chmod "configure.ac" #o644)
+ (invoke "./autogen.sh")
+ #t))
+ (add-before 'autogen 'fix-bootstrap
+ (lambda _
+ ;; Stop bootstrap from cloning gnulib
+ (substitute* "bootstrap"
+ (("^git.*$") ""))
+ #t))
+ (add-before 'autogen 'fix-autogen.sh
+ (lambda _
+ (substitute* "autogen.sh"
+ ;; Forces bootstrap to run
+ (("git submodule status") "echo false")
+ ;; Don't run configure yet
+ (("^.*configure.*$") "echo\n"))
+ #t))
+ (add-after 'autogen 'patch-configure-and-build-aux
+ (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
+ (patch-shebang "configure")
+ ;; Hard code paths to ld and file in the configure script
+ (substitute* "configure"
+ (("/usr/bin/ld")
+ (string-append (assoc-ref inputs "ld-wrapper") "/bin/ld"))
+ (("/usr/bin/file")
+ (string-append (assoc-ref inputs "file") "/bin/file")))
+ #t))
+ (add-before 'install 'patch-ocaml-installdir
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; Force ocaml installdir to be correct
+ (substitute* "ocaml/Makefile"
+ (("\\$\\(DESTDIR\\)\\$\\(OCAMLLIB\\)")
+ (string-append
+ out "/lib/ocaml/site-lib"))))
+ #t)))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("gperg" ,gperf)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("gnulib"
+ ;; This is the commit upstream uses
+ ,(let ((commit "5e50baa16ef90204d9048a9e2f23c5a538955121"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://git.savannah.gnu.org/gnulib.git")
+ (commit commit)))
+ (sha256
+ (base32 "0clx0gq6mmm4dkzp5pqh02cbzggnc3ba491qb79brpxcrjri1pnd"))
+ (file-name (git-file-name "gnulib" commit)))))))
+ (inputs
+ `(("perl" ,perl)
+ ("sed" ,sed)
+ ("gettext" ,gettext-minimal)))
+ (home-page "https://github.com/libguestfs/hivex")
+ (synopsis "Library for reading and writing Windows Registry \"hive\"
+binary files")
+ (description "This library reads Windows NT registry files (ie. not
+Windows 3.1 or Windows 95/98/ME).")
+ (license license:lgpl2.1)))
+
(define-public ocaml4.07-ezjsonm
(package
(name "ocaml4.07-ezjsonm")
From: Morgan Smith <Morgan.J.Smith@outlook.com> * gnu/packages/ocaml.scm (ocaml-hivex): New variable. --- gnu/packages/ocaml.scm | 104 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+)