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> outlook.es> To: 67755 <at> debbugs.gnu.org Cc: Sergio Pastor Pérez <sergio.pastorperez <at> outlook.es> Subject: [bug#67755] [PATCH v4 8/8] gnu: Add imhex. Date: Tue, 27 Aug 2024 00:01:10 +0200
* gnu/packages/hexedit.scm (imhex): New variable. Change-Id: I114d3a6c0dae32ea434a77a6bd88b8ff6870b70c --- gnu/packages/hexedit.scm | 151 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm index e5f58fcce0..0eb551b54e 100644 --- a/gnu/packages/hexedit.scm +++ b/gnu/packages/hexedit.scm @@ -27,11 +27,24 @@ (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 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 build-system gnu) @@ -166,6 +179,144 @@ (define-public imhex-pattern-language (description "The Pattern Language used by the ImHex Hex Editor.") (license license:lgpl2.1))) +(define-public imhex + (package + (name "imhex") + (version "1.35.4") + (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 "0gi5772w0fzgr1w403ckq2mkwiyvcxv08frs2fjr2hlc8hb6c2p9")) + (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 lunasvg) . "lunasvg") + (#$(package-source xdgpp) . "xdgpp") + (#$(file-append miniaudio "/include/miniaudio.h") + . "miniaudio/include/miniaudio.h")))))))) + (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_OFFLINE_BUILD=ON" + "-DIMHEX_ENABLE_UNIT_TESTS=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_CLI11=ON" + "-DUSE_SYSTEM_LLVM=ON" + "-DUSE_SYSTEM_FMT=ON" + + "-DUSE_SYSTEM_BOOST=ON" + "-DUSE_SYSTEM_EDLIB=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" + "-DUSE_SYSTEM_LUNASVG=OFF" + + ;; TODO: package them. + "-DUSE_SYSTEM_YARA=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") + (("boost::regex") + "Boost::regex")) + (substitute* "lib/libimhex/CMakeLists.txt" + (("boost") + "Boost")))) + (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 boost + capstone + curl + edlib + fmt + glfw + libarchive + libffi + llvm-17 + mbedtls + mesa + nativefiledialog-extended + xz + zlib + freetype)) + (home-page "https://imhex.werwolv.net") + (synopsis "Hex Editor to display, decode and analyze binary data") + (description "@command{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.45.2
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.