unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#67755] [PATCH] gnu: Add imhex.
@ 2023-12-10 20:06 Sergio Pastor Pérez
  2024-06-29 12:15 ` [bug#67755] [PATCH v2] " Sergio Pastor Pérez
  2024-07-01 16:55 ` [bug#67755] [PATCH v3] " Sergio Pastor Pérez
  0 siblings, 2 replies; 5+ messages in thread
From: Sergio Pastor Pérez @ 2023-12-10 20:06 UTC (permalink / raw)
  To: 67755; +Cc: Sergio Pastor Pérez

* gnu/packages/hexedit.scm (imhex): New variable.

Change-Id: Iac50937ceecf617ebadf4b81d3321a262e28090b
---
Hello.

This package adds ImHex using specifically commit
`ef7898ea8d83d0e3f4897c221f8595112aad9f2d`. This is done since from commit
`eae3cd99eef6202d772e3d2d43298449b7a36233` [1], the offline build enabled with
`-DIMHEX_OFFLINE_BUILD=ON` avoids running networking tests during the check
phase.

Thanks,
Sergio.

[1]: https://github.com/WerWolv/ImHex/commit/eae3cd99eef6202d772e3d2d43298449b7a36233

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

diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index 79c14a2996..b1cb006de3 100644
--- a/gnu/packages/hexedit.scm
+++ b/gnu/packages/hexedit.scm
@@ -21,14 +21,26 @@
 
 (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 glib)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages engineering)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu))
 
 (define-public hexedit
@@ -93,6 +105,59 @@ (define-public ht
     (home-page "https://hte.sourceforge.net/")
     (license license:gpl2)))
 
+(define-public imhex
+  (let ((revision "0")
+        (commit "ef7898ea8d83d0e3f4897c221f8595112aad9f2d"))
+    (package
+      (name "imhex")
+      (version (git-version "1.31.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/WerWolv/ImHex")
+               (commit commit)
+               (recursive? #t)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0mqx9g3hzap1grav0n2fi54ph63kb9b0hx70zxkknq5rqp6mpy5m"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        #:configure-flags ''("-DIMHEX_OFFLINE_BUILD=ON"
+                             "-DCMAKE_BUILD_TYPE=Release"
+                             "-DCMAKE_BUILD_TYPE=Release")
+        #: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))
+      (inputs (list freetype
+                    libglvnd
+                    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")

base-commit: 63e06f30ce20fa846a7e2e814976fefcd9eda7d3
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#67755] [PATCH v2] gnu: Add imhex.
  2023-12-10 20:06 [bug#67755] [PATCH] gnu: Add imhex Sergio Pastor Pérez
@ 2024-06-29 12:15 ` Sergio Pastor Pérez
  2024-06-30 20:33   ` [bug#67755] [PATCH] " jgart via Guix-patches via
  2024-07-01 16:55 ` [bug#67755] [PATCH v3] " Sergio Pastor Pérez
  1 sibling, 1 reply; 5+ messages in thread
From: Sergio Pastor Pérez @ 2024-06-29 12:15 UTC (permalink / raw)
  To: 67755; +Cc: Sergio Pastor Pérez, Sergio Pastor Pérez

* 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(+)

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")

base-commit: d601e953a463669a775ce17138e2b0f0c2e73ad9
-- 
2.45.1





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#67755] [PATCH] gnu: Add imhex.
  2024-06-29 12:15 ` [bug#67755] [PATCH v2] " Sergio Pastor Pérez
@ 2024-06-30 20:33   ` jgart via Guix-patches via
  2024-07-01 17:02     ` Sergio Pastor Pérez
  0 siblings, 1 reply; 5+ messages in thread
From: jgart via Guix-patches via @ 2024-06-30 20:33 UTC (permalink / raw)
  To: 67755; +Cc: Sergio Pastor Pérez


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




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#67755] [PATCH v3] gnu: Add imhex.
  2023-12-10 20:06 [bug#67755] [PATCH] gnu: Add imhex Sergio Pastor Pérez
  2024-06-29 12:15 ` [bug#67755] [PATCH v2] " Sergio Pastor Pérez
@ 2024-07-01 16:55 ` Sergio Pastor Pérez
  1 sibling, 0 replies; 5+ messages in thread
From: Sergio Pastor Pérez @ 2024-07-01 16:55 UTC (permalink / raw)
  To: 67755; +Cc: Sergio Pastor Pérez, Sergio Pastor Pérez, jgart

* gnu/packages/hexedit.scm (imhex): New variable.

Change-Id: Iac50937ceecf617ebadf4b81d3321a262e28090b
---
Updated patch without the TODO comments and the redundant flags.

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

diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index 668699a28c..f5689fd1df 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,77 @@ (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"
+                           "-DUSE_SYSTEM_NLOHMANN_JSON=ON"
+                           "-DUSE_SYSTEM_CAPSTONE=ON"
+                           "-DUSE_SYSTEM_CLI11=ON"
+                           "-DUSE_SYSTEM_LLVM=ON"
+                           "-DUSE_SYSTEM_FMT=ON")
+      #: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")

base-commit: d601e953a463669a775ce17138e2b0f0c2e73ad9
-- 
2.45.1





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#67755] [PATCH] gnu: Add imhex.
  2024-06-30 20:33   ` [bug#67755] [PATCH] " jgart via Guix-patches via
@ 2024-07-01 17:02     ` Sergio Pastor Pérez
  0 siblings, 0 replies; 5+ messages in thread
From: Sergio Pastor Pérez @ 2024-07-01 17:02 UTC (permalink / raw)
  To: jgart, 67755

Hi! Thanks for taking a look.

jgart <jgart@dismail.de> writes:

> Are you planning on resolving those TODO items soonish?

This is what I was explaining on the version 2 of the patch. It's not
something that should be fixed at the package level. I've discussed it
with the maintainers, until they don't implement a proper way of
externalizing the handling of libraries we should be using the
submodules.

Having said that, I think the package is ready, is there any reason why
you don't find it adequate, aside from the bundled libraries? We can
remove the comments if that's what worries you.

As a side note, I tried to un-bundle the libraries and the amount of
patching that it requires is unreasonable, every library requires it's
own CMAKE find file, which is responsibility of the software
developers. This is why I say that this should be done upstream.

I suggest to merge it as it is and I will update the package definition
once ImHex properly supports using system libraries. I don't think the
maintainers have this on their priority list so I don't know how long it
could take.

I will send a v3 of this patch without the comments and without the
redundant flags.

> 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.

I have it already available on my channel.

Thanks for your time!
Have a good evening,
Sergio.




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-07-01 17:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-10 20:06 [bug#67755] [PATCH] gnu: Add imhex Sergio Pastor Pérez
2024-06-29 12:15 ` [bug#67755] [PATCH v2] " Sergio Pastor Pérez
2024-06-30 20:33   ` [bug#67755] [PATCH] " jgart via Guix-patches via
2024-07-01 17:02     ` Sergio Pastor Pérez
2024-07-01 16:55 ` [bug#67755] [PATCH v3] " Sergio Pastor Pérez

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).