diff mbox series

[bug#57133] gnu: Add rizin.

Message ID 20220811063749.8293-1-iyzsong@envs.net
State Accepted
Headers show
Series [bug#57133] gnu: Add rizin. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

iyzsong--- via Guix-patches via Aug. 11, 2022, 6:37 a.m. UTC
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/engineering.scm (rizin): New variable.
---
 gnu/packages/engineering.scm | 68 ++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

Comments

Jean Pierre De Jesus DIAZ Aug. 11, 2022, 12:44 p.m. UTC | #1
Hello, 

>+          (add-after 'unpack 'prepare-testbins
>+            (lambda _
>+              (copy-recursively
>+               #$(origin
>+                   (method git-fetch)
>+                   (uri (git-reference
>+                         (url "https://github.com/rizinorg/rizin-testbins")
>+                         (commit "7d0c31ac7711de9c4d37f5047200dc5a407ff713")))
>+                   (sha256
>+                    (base32
>+                     "00cmc7pws9m4hcm0bpdjm6n4agl5mqgczc4ccswfhywyzzvr7sqh")))
>+               "test/bins")))

Could this instead be replaced with a package? The repository also says that
the binaries could be regenerated and it's worth a look looking into if it
can be done so the built binaries can be removed (through snippets for example)
and re-compiled from sources, of course, those that can be re-generated should
be left as is. If the binaries can't be regenerated feel free to ignore this
comment :).

—
Jean-Pierre De Jesus DIAZ
M Aug. 11, 2022, 7:07 p.m. UTC | #2
On 11-08-2022 08:37, iyzsong--- via Guix-patches via wrote:
> +               #$(origin
> +                   (method git-fetch)
> +                   (uri (git-reference
> +                         (url"https://github.com/rizinorg/rizin-testbins")
> +                         (commit "7d0c31ac7711de9c4d37f5047200dc5a407ff713")))
> +                   (sha256
> +                    (base32
> +                     "00cmc7pws9m4hcm0bpdjm6n4agl5mqgczc4ccswfhywyzzvr7sqh")))
> +               "test/bins")))

What's the license for those binaries? I doubt all of them are gpl3+.

I'm seeing a copy of libstdc++.so.6 in there. IIRC, it has a license of 
the GPL family, which requires providing the source, so we need the 
source code of it as well because of the licensing terms (the source 
code of that particular variant of libstdc++, which might differ from 
the version currently in Guix). Likewise for the other binaries.

Personally, I think it would be more practical to ignore rizin-testbins, 
even if that requires skipping some of the tests (hopefully not all of 
them).
> + ;; Most files are under LGPL-3.0-only, other are under: Apache-2.0,
> + ;; BSD-2-Clause, BSD-3-Clause, CC0-1.0, CC-BY-SA-4.0, GPL-1.0-or-later,
> + ;; GPL-2.0-only, GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.0-or-later,
> + ;; LGPL-2.1-only, LGPL-2.1-or-later, LGPL-3.0-only, MIT, NCSA.
> + (license license:gpl3+))) 

You can put multiple licenses in the license field, using (license (list 
this that foo bar ...)).

Greetings,
Maxime.
宋文武 Aug. 15, 2022, 1:36 a.m. UTC | #3
Jean Pierre De Jesus DIAZ <me@jeandudey.tech> writes:

> Hello, 
>
>>+          (add-after 'unpack 'prepare-testbins
>>+            (lambda _
>>+              (copy-recursively
>>+               #$(origin
>>+                   (method git-fetch)
>>+                   (uri (git-reference
>>+                         (url "https://github.com/rizinorg/rizin-testbins")
>>+                         (commit "7d0c31ac7711de9c4d37f5047200dc5a407ff713")))
>>+                   (sha256
>>+                    (base32
>>+                     "00cmc7pws9m4hcm0bpdjm6n4agl5mqgczc4ccswfhywyzzvr7sqh")))
>>+               "test/bins")))
>
> Could this instead be replaced with a package? The repository also says that
> the binaries could be regenerated and it's worth a look looking into if it
> can be done so the built binaries can be removed (through snippets for example)
> and re-compiled from sources, of course, those that can be re-generated should
> be left as is. If the binaries can't be regenerated feel free to ignore this
> comment :).

Well I find no way to regenerate those binaries, so I'd remove it and
skip integration tests as suggested by Maxime Devos.  Thanks for the
comment!
diff mbox series

Patch

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index ed87cd8d6a..7752e92f09 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -67,6 +67,7 @@  (define-module (gnu packages engineering)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system emacs)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt)
   #:use-module (gnu packages)
@@ -88,6 +89,7 @@  (define-module (gnu packages engineering)
   #:use-module (gnu packages digest)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages fpga)
@@ -142,6 +144,7 @@  (define-module (gnu packages engineering)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages text-editors)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages version-control)
@@ -3757,3 +3760,68 @@  (define-public candle
 @item Visualizing G-code files.
 @end itemize")
       (license license:gpl3+))))
+
+(define-public rizin
+  (package
+    (name "rizin")
+    (version "0.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/rizinorg/rizin/releases/download/v"
+                    version "/rizin-src-v" version ".tar.xz"))
+              (sha256
+               (base32
+                "0nkb6v9lks25w5sv5s6p2ghgqnnnsf39md8nlx1cy4z89xlaisq9"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "-Dpackager=guix"
+              (string-append "-Dpackager_version=" #$version)
+              "-Duse_sys_capstone=enabled"
+              "-Duse_sys_magic=enabled"
+              "-Duse_sys_libzip=enabled"
+              "-Duse_sys_zlib=enabled"
+              "-Duse_sys_lz4=enabled"
+              "-Duse_sys_xxhash=enabled"
+              "-Duse_sys_openssl=enabled"
+              "-Duse_sys_tree_sitter=enabled"
+              "-Duse_sys_libuv=enabled"
+              "-Duse_gpl=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'prepare-testbins
+            (lambda _
+              (copy-recursively
+               #$(origin
+                   (method git-fetch)
+                   (uri (git-reference
+                         (url "https://github.com/rizinorg/rizin-testbins")
+                         (commit "7d0c31ac7711de9c4d37f5047200dc5a407ff713")))
+                   (sha256
+                    (base32
+                     "00cmc7pws9m4hcm0bpdjm6n4agl5mqgczc4ccswfhywyzzvr7sqh")))
+               "test/bins")))
+          (add-before 'configure 'skip-failing-tests
+            (lambda _
+              ;; Skip 2 failing tests, reported upstream:
+              ;; <https://github.com/rizinorg/rizin/issues/2905>.
+              (substitute* "test/integration/meson.build"
+                (("'analysis_global_var'") "#")
+                (("'sign_integration'") "#")))))))
+    (native-inputs (list pkg-config))
+    (inputs
+     (list capstone file libuv libzip lz4 openssl tree-sitter xxhash zlib))
+    (home-page "https://rizin.re")
+    (synopsis "Disasm, debug, analyze and manipulate binary files")
+    (description
+     "Rizin is a reverse engineering framework and a set of small command-line
+utilities, providing a complete binary analysis experience with features like
+disassembler, hexadecimal editor, emulation, binary inspection, debugger, and
+more.")
+    ;; Most files are under LGPL-3.0-only, other are under: Apache-2.0,
+    ;; BSD-2-Clause, BSD-3-Clause, CC0-1.0, CC-BY-SA-4.0, GPL-1.0-or-later,
+    ;; GPL-2.0-only, GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.0-or-later,
+    ;; LGPL-2.1-only, LGPL-2.1-or-later, LGPL-3.0-only, MIT, NCSA.
+    (license license:gpl3+)))