Package: guix-patches;
Reported by: Sergio Pastor Pérez <sergio.pastorperez <at> outlook.es>
Date: Sun, 10 Dec 2023 20:20:02 UTC
Severity: normal
Tags: patch
Done: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Sergio Pastor Pérez <sergio.pastorperez <at> gmail.com> To: 67755 <at> debbugs.gnu.org Cc: Sergio Pastor Pérez <sergio.pastorperez <at> outlook.es>, Sergio Pastor Pérez <sergio.pastorperez <at> outlook.es>, jgart <jgart <at> dismail.de> Subject: [bug#67755] [PATCH v5 9/9] gnu: Add imhex. Date: Tue, 11 Mar 2025 20:15:25 +0100
From: Sergio Pastor Pérez <sergio.pastorperez <at> outlook.es> * gnu/packages/hexedit.scm (imhex): New variable. Change-Id: I114d3a6c0dae32ea434a77a6bd88b8ff6870b70c --- gnu/packages/hexedit.scm | 169 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm index 2eab13e239..e9b9698c22 100644 --- a/gnu/packages/hexedit.scm +++ b/gnu/packages/hexedit.scm @@ -28,11 +28,25 @@ (define-module (gnu packages hexedit) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages compression) + #:use-module (gnu packages gl) #:use-module (gnu packages man) #:use-module (gnu packages cpp) #:use-module (gnu packages gcc) + #:use-module (gnu packages tls) + #:use-module (gnu packages curl) + #:use-module (gnu packages llvm) + #:use-module (gnu packages ruby) + #:use-module (gnu packages glib) + #:use-module (gnu packages boost) + #:use-module (gnu packages backup) #:use-module (gnu packages python) + #:use-module (gnu packages libffi) #:use-module (gnu packages ncurses) + #:use-module (gnu packages antivirus) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages engineering) + #:use-module (gnu packages pretty-print) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix gexp) @@ -209,6 +223,161 @@ (define-public imhex-pattern-language (description "The Pattern Language used by the ImHex Hex Editor.") (license license:lgpl2.1))) +(define-public imhex + ;; NOTE: imhex-patterns does not support using `imhex-pattern-language' + ;; system package. Until it does, there is no point in making it a package. + (let ((version "1.37.4")) + (define-public imhex-patterns + (let ((name "imhex-patterns")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/WerWolv/ImHex-Patterns") + (commit (string-append "ImHex-v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0m9g93fzmj2rsgaq25y4mmfigjh1xxyh41zjs6lp5ydsl5hhrn6q"))))) + (package + (name "imhex") + (version version) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/WerWolv/ImHex") + (commit (string-append "v" version)) + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l3fpizkz2ykdirbn9alddnnsg75w6kwpp92nvmird13l80z1sdr")) + (snippet + #~(begin + (use-modules (guix build utils)) + (define (delete-files-from-list-recursively . args) + (for-each (lambda (path) + (delete-file-recursively path)) + args)) + + (define (replace-files-from-list-recursively lst) + (for-each + (lambda (elt) + (delete-file-recursively (cdr elt)) + (copy-recursively (car elt) (cdr elt))) + lst)) + + ;; NOTE: `libwolf' does not have an install target. Until the + ;; maintainers create one, it will remain bundled. + ;; NOTE: `libromfs' it's meant to be bundled and cannot be + ;; compiled independently. Until the maintainers support + ;; building it independently, it will remain bundled. + ;; NOTE: `imhex-pattern-language' it's meant to be bundled and + ;; cannot be linked independently. Until the maintainers support + ;; linking it independently, it's source will be replaced + ;; in-tree. + (replace-files-from-list-recursively + `((#$(package-source imhex-pattern-language) + . "lib/external/pattern_language"))) + ;; NOTE: `hashlibplus' has been left as a submodule since it's a + ;; fork which only makes sense within ImHex. + (with-directory-excursion "lib/third_party" + (delete-files-from-list-recursively + "nlohmann_json" "capstone" "llvm-demangle" + "fmt" "nativefiledialog" + ;; NOTE: for versions above c++20 it is not required. + "jthread/jthread") + (replace-files-from-list-recursively + `((#$(package-source xdgpp) . "xdgpp") + (#$(file-append miniaudio "/include/miniaudio.h") + . "miniaudio/include/miniaudio.h")))) + + ;; Drop `imhex-patters' in the source tree. + (copy-recursively #$imhex-patterns "ImHex-Patterns"))))) + (build-system cmake-build-system) + (arguments + (list + ;; NOTE: there is an issue with the way the test library is linked + ;; with the output binaries. Tests are intrusive and should not be + ;; shipped with the release, when the issue is fixed we could add a + ;; phase which builds the package with the tests and runs the + ;; testsuite and a second build phase which prepares the output + ;; binary. + #:configure-flags + ''("-DIMHEX_ENABLE_UNIT_TESTS=ON" + "-DIMHEX_OFFLINE_BUILD=ON" + ;; NOTE: required for the `validate-runpath' phase. + ;; If OFF, the pluggings won't be able to find `libimhex.so'. + "-DIMHEX_PLUGIN_ADD_INSTALL_PREFIX_TO_RPATH=ON" + + "-DUSE_SYSTEM_NLOHMANN_JSON=ON" + "-DUSE_SYSTEM_CAPSTONE=ON" + "-DUSE_SYSTEM_LUNASVG=ON" + "-DUSE_SYSTEM_CLI11=ON" + "-DUSE_SYSTEM_BOOST=ON" + "-DUSE_SYSTEM_EDLIB=ON" + "-DUSE_SYSTEM_YARA=ON" + "-DUSE_SYSTEM_LLVM=ON" + "-DUSE_SYSTEM_FMT=ON" + "-DUSE_SYSTEM_NFD=ON" + + ;; NOTE: the build system doesn't correctly support + ;; locating these system libraries. Until fixed + ;; upstream, drop the sources where they are + ;; expected, this is done in the `<origin>' snippet. + "-DUSE_SYSTEM_MINIAUDIO=OFF") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda _ + (substitute* "main/gui/source/window/linux_window.cpp" + (("dbus-send") + #$(file-append dbus "/bin/dbus-send"))) + (substitute* "cmake/build_helpers.cmake" + (("Boost REQUIRED") + "Boost COMPONENTS regex REQUIRED")))) + (add-before 'check 'build-tests + (lambda _ + (invoke "make" "unit_tests")))))) + (native-inputs + (list cli11 + nlohmann-json + pkg-config + python + python-wrapper + ruby + gcc-14)) + (inputs + (list yara + boost + capstone + curl + edlib + fmt + glfw + libarchive + libffi + llvm-17 + lunasvg + plutovg + mbedtls + mesa + nativefiledialog-extended + xz + fontconfig + lz4 + `(,zstd "lib") + zlib + freetype)) + (home-page "https://imhex.werwolv.net") + (synopsis "Hex Editor to display, decode and analyze binary data") + (description "ImHex is a hex editor with many advanced features that can +often only be found in paid applications. Such features are a completely +custom binary template and pattern language to decode and highlight structures +in the data, a graphical node-based data processor to pre-process values +before they're displayed, a disassembler, diffing support, bookmarks and much +much more.") + (license license:gpl2)))) + (define-public bvi (package (name "bvi") -- 2.48.1
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.