diff mbox series

[bug#67755,v2] gnu: Add imhex.

Message ID PAXP251MB0348D5D300F7971E167A2DD0F3D12@PAXP251MB0348.EURP251.PROD.OUTLOOK.COM
State New
Headers show
Series [bug#67755,v2] gnu: Add imhex. | expand

Commit Message

Sergio Pastor PĂ©rez June 29, 2024, 12:15 p.m. UTC
* gnu/packages/hexedit.scm (imhex): New variable.

Change-Id: Iac50937ceecf617ebadf4b81d3321a262e28090b
---
Hello!

I'm updating this patch since ImHex has been updated a few times since.

You will notice that the ImHex repository contains a few submodules, many of the
submodules are libraries which do not include a cmake 'Findxxx.cmake'. For some
libraries, the build system provides the appropriate file, but not for all. We
decided not to un-bundle the libraries for now, the maintainers will consider
adding the appropriate files in the future. Once that's done, we can update the
package and un-bundle the libraries.


 gnu/packages/hexedit.scm | 98 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)


base-commit: d601e953a463669a775ce17138e2b0f0c2e73ad9

Comments

jgart June 30, 2024, 8:33 p.m. UTC | #1
Hi Sergio,

It looks like this patch still needs some work from the TODO comments.

Are you planning on resolving those TODO items soonish?

If you'd like to make this package easily available to others before its
ready for upstream I would recommend creating a channel for it.

all the best,

jgart
diff mbox series

Patch

diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index 668699a28c..e730d160a6 100644
--- a/gnu/packages/hexedit.scm
+++ b/gnu/packages/hexedit.scm
@@ -22,14 +22,30 @@ 
 
 (define-module (gnu packages hexedit)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages man)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages cpp)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages backup)
+  #: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 cmake)
   #:use-module (guix build-system gnu))
 
 (define-public hexedit
@@ -94,6 +110,88 @@  (define-public ht
     (home-page "https://hte.sourceforge.net/")
     (license license:gpl2)))
 
+(define-public imhex
+  (package
+    (name "imhex")
+    (version "1.35.1")
+    (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 "1789hkqh78sg4cic09yq46bsy2vpk5y56b8g4q0r60si5y2vc9lh"))))
+    (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"
+
+                           ;; TODO: remove unneeded submodules.
+                           "-DUSE_SYSTEM_NLOHMANN_JSON=ON"
+                           "-DUSE_SYSTEM_CAPSTONE=ON"
+                           "-DUSE_SYSTEM_CLI11=ON"
+                           "-DUSE_SYSTEM_LLVM=ON"
+                           "-DUSE_SYSTEM_FMT=ON"
+
+                           ;; TODO: package them.
+                           "-DUSE_SYSTEM_MINIAUDIO=OFF"
+                           "-DUSE_SYSTEM_LUNASVG=OFF"
+                           "-DUSE_SYSTEM_JTHREAD=OFF"
+                           "-DUSE_SYSTEM_BOOST=OFF"
+                           "-DUSE_SYSTEM_EDLIB=OFF"
+                           "-DUSE_SYSTEM_YARA=OFF"
+                           "-DUSE_SYSTEM_NFD=OFF")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'fix-gsettings
+                     (lambda* (#:key inputs #:allow-other-keys)
+                       (substitute* "main/gui/source/window/linux_window.cpp"
+                         (("dbus-send")
+                          (search-input-file inputs "/bin/dbus-send")))))
+                   (add-before 'check 'build-tests
+                     (lambda _
+                       (invoke "make" "unit_tests"))))))
+    (native-inputs (list gcc-13
+                         pkg-config
+                         python
+                         python-wrapper
+                         ruby
+                         mbedtls-apache
+
+                         ;; Third party submodules
+                         nlohmann-json
+                         capstone
+                         llvm-17
+                         cli11
+                         fmt))
+    (inputs (list freetype
+                  libarchive
+                  mesa
+                  dbus
+                  curl
+                  glfw
+                  dbus))
+    (home-page "https://github.com/WerWolv/ImHex")
+    (synopsis "Hex Editor to display, decode and analyze binary data")
+    (description "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")