From 5fd8d9dc06573bd3ddc0224e8c2d5078c04b22eb Mon Sep 17 00:00:00 2001 From: Giacomo Leidi Date: Sat, 5 Oct 2024 00:31:42 +0200 Subject: gnu: Add hivex. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/virtualization.scm (hivex): New variable. Change-Id: I9828d267d5c6f24dc5039ea3b1849248cd9d23fb Signed-off-by: Ludovic Courtès --- gnu/packages/virtualization.scm | 111 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 59137eb2d4..4ad94ea8e5 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -37,6 +37,7 @@ ;;; Copyright © 2024 jgart ;;; Copyright © 2024 Ashish SHUKLA ;;; Copyright © 2024 Jakob Kirsch +;;; Copyright © 2024 Giacomo Leidi ;;; ;;; This file is part of GNU Guix. ;;; @@ -114,6 +115,7 @@ #:use-module (gnu packages nettle) #:use-module (gnu packages networking) #:use-module (gnu packages ninja) + #:use-module (gnu packages ocaml) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages package-management) #:use-module (gnu packages pciutils) @@ -2900,3 +2902,112 @@ This package also contains the Berkeley Boot Loader, @command{bbl}, which is a supervisor execution environment for tethered RISC-V systems. It is designed to host the RISC-V Linux port.") (license license:bsd-3))) + +(define-public hivex + (package + (name "hivex") + (version "1.3.24") + (source (origin + (method url-fetch) + (uri (string-append "https://libguestfs.org/download/" + name "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "0g0rib62qg81fda8lxsaa7a1ykqy4rl5sq185pdqm9y9xifa8bx5")))) + (build-system gnu-build-system) + (native-inputs (list automake + autoconf + gettext-minimal + libtool + ocaml + pkg-config + perl-io-stringy + python-wrapper + ruby + ruby-rake + ruby-rdoc)) + (inputs + (list bash-minimal + libxml2 + perl + readline)) + (arguments + (list + #:configure-flags + #~(list "--disable-static" "--with-readline" "--disable-rpath" + (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-makefiles + (lambda _ + (let* ((current-system (or #$(%current-target-system) + #$(%current-system))) + (ocamllib + (string-append #$output "/lib/ocaml/" + #$(package-version + (this-package-native-input "ocaml")) "/site-lib")) + (python-installdir + (string-append #$output "/lib/python" + #$(version-major+minor + (package-version + (this-package-native-input + "python-wrapper"))) + "/site-packages")) + (ruby-version + #$(package-version + (this-package-native-input "ruby"))) + (ruby-libdir + (string-append #$output + "/lib/ruby/site_ruby/" + ruby-version)) + (ruby-archdir + (string-append ruby-libdir "/" current-system))) + (substitute* "lib/Makefile.am" + (((string-append "\\$\\(VERSION_SCRIPT_FLAGS\\)" + "\\$\\(srcdir\\)/hivex\\.syms")) + "")) + (substitute* "python/Makefile.am" + (("\\$\\(PYTHON_INSTALLDIR\\)") + python-installdir)) + (substitute* "ocaml/Makefile.am" + (("\\$\\(DESTDIR\\)\\$\\(OCAMLLIB\\)") + ocamllib)) + (substitute* "ruby/Makefile.am" + (("\\$\\(DESTDIR\\)\\$\\(RUBY_ARCHDIR\\)") + ruby-archdir) + (("\\$\\(DESTDIR\\)\\$\\(RUBY_LIBDIR\\)") + ruby-libdir)) + ;; The ‘validate-runpath’ phase fails to find libhivex.so.0. + (substitute* "perl/Makefile.PL.in" + (("CCFLAGS => \\$Config\\{ccflags\\} \\. ' @CFLAGS@',") + (string-append "CCFLAGS => $Config{ccflags} . ' @CFLAGS@', + LDDLFLAGS => $Config{lddlflags} . ' -Wl,-rpath," #$output "/lib',"))) + (substitute* "ruby/ext/hivex/extconf.rb" + (("create_header") + (string-append " +$LDFLAGS += \" -Wl,-rpath=" #$output "/lib \" +create_header")))))) + (add-after 'install 'wrap-binaries + (lambda _ + (let ((hivexregedit + (string-append #$output "/bin/hivexregedit")) + (hivexml + (string-append #$output "/bin/hivexml"))) + (wrap-program hivexregedit + `("PERL5LIB" ":" prefix + (,(string-append #$output "/lib/perl5/site_perl"))) + `("PATH" ":" prefix + (,(string-append #$output "/bin")))) + (wrap-program hivexml + `("PATH" ":" prefix + (,(string-append #$output "/bin")))))))))) + (home-page "https://github.com/libguestfs/hivex") + (synopsis "Windows registry hive extraction library") + (description + "This package provides a self-contained library for reading and writing +Windows Registry \"hive\" binary files. Unlike many other tools in this area, +it doesn't use the textual @code{.REG} format for output, because parsing that +is as much trouble as parsing the original binary format. Instead it makes the +file available through a C API, or through a separate program to export the +hive as XML.") + (license license:lgpl2.1))) -- cgit v1.2.3