From: "Sergio Pastor Pérez" <sergio.pastorperez@outlook.es>
To: 67755@debbugs.gnu.org
Cc: "Sergio Pastor Pérez" <sergio.pastorperez@outlook.es>
Subject: [bug#67755] [PATCH v4 8/8] gnu: Add imhex.
Date: Tue, 27 Aug 2024 00:01:10 +0200 [thread overview]
Message-ID: <PAXP251MB034892752BCA35913841773EF38B2@PAXP251MB0348.EURP251.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <01e5d15a71a605dd55df3cac5b7d30e15520f8ea.1724709670.git.sergio.pastorperez@outlook.es>
* 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
prev parent reply other threads:[~2024-08-26 22:06 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <01e5d15a71a605dd55df3cac5b7d30e15520f8ea.1724709670.git.sergio.pastorperez@outlook.es>
2024-08-26 22:01 ` [bug#67755] [PATCH v4 2/8] gnu: Add jthread Sergio Pastor Pérez
2024-08-26 22:01 ` [bug#67755] [PATCH v4 3/8] gnu: Add lunasvg Sergio Pastor Pérez
2024-08-26 22:01 ` [bug#67755] [PATCH v4 4/8] gnu: Add miniaudio Sergio Pastor Pérez
2024-08-26 22:01 ` [bug#67755] [PATCH v4 5/8] gnu: Add nativefiledialog-extended Sergio Pastor Pérez
2024-08-26 22:01 ` [bug#67755] [PATCH v4 6/8] gnu: Add xdgpp Sergio Pastor Pérez
2024-08-26 22:01 ` [bug#67755] [PATCH v4 7/8] gnu: Add imhex-pattern-language Sergio Pastor Pérez
2024-08-26 22:01 ` Sergio Pastor Pérez [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=PAXP251MB034892752BCA35913841773EF38B2@PAXP251MB0348.EURP251.PROD.OUTLOOK.COM \
--to=sergio.pastorperez@outlook.es \
--cc=67755@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).