gnu: Add hivex.

* gnu/packages/virtualization.scm (hivex): New variable.

Change-Id: I9828d267d5c6f24dc5039ea3b1849248cd9d23fb
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Giacomo Leidi 2024-10-05 00:31:42 +02:00 committed by Ludovic Courtès
parent 923fac07db
commit 5fd8d9dc06
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -37,6 +37,7 @@
;;; Copyright © 2024 jgart <jgart@dismail.de> ;;; Copyright © 2024 jgart <jgart@dismail.de>
;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se> ;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
;;; Copyright © 2024 Jakob Kirsch <jakob.kirsch@web.de> ;;; Copyright © 2024 Jakob Kirsch <jakob.kirsch@web.de>
;;; Copyright © 2024 Giacomo Leidi <goodoldpaul@autistici.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -114,6 +115,7 @@ (define-module (gnu packages virtualization)
#:use-module (gnu packages nettle) #:use-module (gnu packages nettle)
#:use-module (gnu packages networking) #:use-module (gnu packages networking)
#:use-module (gnu packages ninja) #:use-module (gnu packages ninja)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages onc-rpc) #:use-module (gnu packages onc-rpc)
#:use-module (gnu packages package-management) #:use-module (gnu packages package-management)
#:use-module (gnu packages pciutils) #:use-module (gnu packages pciutils)
@ -2900,3 +2902,112 @@ (define-public riscv-pk
supervisor execution environment for tethered RISC-V systems. It is designed supervisor execution environment for tethered RISC-V systems. It is designed
to host the RISC-V Linux port.") to host the RISC-V Linux port.")
(license license:bsd-3))) (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)))