unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#63442] [PATCH] gnu: unicorn: Update to 2.0.1.post1.
@ 2023-05-11  9:39 c4droid
  2023-10-24 15:38 ` Sören Tempel
  2024-07-11 18:00 ` soeren
  0 siblings, 2 replies; 5+ messages in thread
From: c4droid @ 2023-05-11  9:39 UTC (permalink / raw)
  To: 63442

[-- Attachment #1: Type: text/plain, Size: 167 bytes --]

Hi, Guix!

I noticed unicorn is using pyproject now, so I update the unicorn definition in my guix fork,
I tested it on my local machine it can be built successfully.

[-- Attachment #2: update-unicorn.patch --]
[-- Type: text/plain, Size: 6398 bytes --]

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 13b60223..cc33c107 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -59,6 +59,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages build-tools)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages curl)
@@ -111,7 +112,8 @@ (define-module (gnu packages emulators)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
-  #:use-module (guix build-system python))
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system pyproject))
 
 (define-public vice
   (package
@@ -2170,106 +2172,24 @@ (define-public bsnes
 performance, features, and ease of use.")
     (license license:gpl3)))
 
-;; python-pwntools requires a -rc release of unicorn
 (define-public unicorn
-  (let ((unless-x86
-          (lambda (code)
-            (if (member (%current-system) '("x86_64-linux" "i686-linux"))
-              '()
-              code))))
-    (package
-      (name "unicorn")
-      (version "1.0.2-rc4")
-      ;; NOTE: unicorn ships a bundled QEMU, but with a lot of custom modifications.
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/unicorn-engine/unicorn")
-               (commit version)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "17nyccgk7hpc4hab24yn57f1xnmr7kq4px98zbp2bkwcrxny8gwy"))))
-      (outputs '("out" "python"))
-      ;; The main library is not written in Python, but the build process has
-      ;; little in common with any defined build system, so we might as well
-      ;; build on top of python-build-system and make use of all
-      ;; the Python-specific phases that can be reused.
-      (build-system python-build-system)
-      (arguments
-       `(#:modules ((srfi srfi-26)
-                    (guix build python-build-system)
-                    (guix build utils))
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'build 'build-library
-             (lambda* (#:key inputs #:allow-other-keys)
-               (invoke "make"
-                       "-j" (number->string (parallel-job-count))
-                       "UNICORN_STATIC=no"
-                       "CC=gcc")))
-           (add-after 'build-library 'install-library
-             (lambda* (#:key outputs #:allow-other-keys)
-               (invoke "make" "install"
-                       "UNICORN_STATIC=no"
-                       (string-append
-                        "PREFIX="
-                        (assoc-ref outputs "out")))))
-           (add-before 'build 'prepare-bindings
-             (lambda* (#:key outputs #:allow-other-keys)
-               (chdir "bindings/python")
-               ;; Set this environment variable so that the Python bindings
-               ;; don't build their own copy of the shared object, but use
-               ;; a dummy value such that the bindings test suite uses the
-               ;; same mechanism for loading the library as any other user.
-               (setenv "LIBUNICORN_PATH" "1")
-               (substitute* "unicorn/unicorn.py"
-                 (("_path_list = \\[.*")
-                  (string-append
-                   "_path_list = [\""
-                   (assoc-ref outputs "out")
-                   ;; eat the rest of the list
-                   "/lib\"] + 0*[")))
-               #t))
-           (add-before 'check 'check-library
-             (lambda* (#:key outputs #:allow-other-keys)
-               (for-each
-                 (lambda (suite)
-                   (with-directory-excursion
-                     (string-append "../../tests/" suite)
-                     (invoke "make" "test" "CC=gcc"
-                             ,@(unless-x86
-                                '("AS=i686-unknown-linux-gnu-as"
-                                  "OBJCOPY=i686-unknown-linux-gnu-objcopy")))))
-                 '("unit" "regress"))
-               #t))
-           (add-after 'install 'install-samples
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((python-samples (find-files "." "sample_.*"))
-                      (c-samples (find-files "../../samples" ".*\\.c"))
-                      (python-docdir
-                        (string-append (assoc-ref outputs "python")
-                                       "/share/doc/unicorn/samples"))
-                      (c-docdir
-                        (string-append (assoc-ref outputs "out")
-                                       "/share/doc/unicorn/samples")))
-                 (for-each (cut install-file <> c-docdir) c-samples)
-                 (for-each (cut install-file <> python-docdir) python-samples)
-                 #t))))))
-      (native-inputs
-       ;; NOTE: cross-binutils needs to be wrapped with unless-x86, as otherwise
-       ;; the linker provided by the package will be used, circumventing the ld-wrapper.
-       `(,@(unless-x86
-            `(("assembler-for-tests" ,(cross-binutils "i686-unknown-linux-gnu"))))
-         ("cmocka" ,cmocka)
-         ("hexdump-for-tests" ,util-linux)))
-      (home-page "https://www.unicorn-engine.org")
-      (synopsis "Unicorn CPU emulator framework")
-      (description
-       "Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator
+  (package
+    (name "unicorn")
+    (version "2.0.1.post1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri name version))
+              (sha256
+               (base32
+                 "0mlfs8qfi0clyncfkbxp6in0cpl747510i6bqymwid43xcirbikz"))))
+    ;; NOTE: Unicorn 2 using pyproject to build
+    (build-system pyproject-build-system)
+    (native-inputs (list cmake pkg-config))
+    (home-page "http://www.unicorn-engine.org")
+    (synopsis "Unicorn CPU emulator framework")
+    (description "Uniforn is a lightweight, multi-platform, multi-architecture CPU emulator
 framework based on QEMU.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public ppsspp
   (package

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

* [bug#63442] [PATCH] gnu: unicorn: Update to 2.0.1.post1
  2023-05-11  9:39 [bug#63442] [PATCH] gnu: unicorn: Update to 2.0.1.post1 c4droid
@ 2023-10-24 15:38 ` Sören Tempel
  2024-07-10 15:42   ` jgart via Guix-patches via
  2024-07-11 18:00 ` soeren
  1 sibling, 1 reply; 5+ messages in thread
From: Sören Tempel @ 2023-10-24 15:38 UTC (permalink / raw)
  To: 63442
  Cc: c4droid, paren, Christopher Baines, Ludovic Courtès,
	Mathieu Othacehe, Raghav Gururajan, Ricardo Wurmus,
	Simon Tournier, Tobias Geerinckx-Rice, jgart

Hi,

I can confirm that this patch builds locally. I can also confirm that
the Python bindings work as intended. The Unicorn version presently
shipped by Guix is very ancient and doesn't build at the moment (fails
test). As such, it would be cool if this patch could be merged.

I am currently working on a Guix package for angr <https://angr.io/> and
need Unicorn 2.X for this (with the patch my angr Guix package works as
intended). I would also be willing to revise the patch in case OP isn't
active any more.

Let me know if any changes are needed (CC'd the mentors, hope that's ok).

Greetings,
Sören Tempel




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

* [bug#63442] [PATCH] gnu: unicorn: Update to 2.0.1.post1.
  2023-10-24 15:38 ` Sören Tempel
@ 2024-07-10 15:42   ` jgart via Guix-patches via
  0 siblings, 0 replies; 5+ messages in thread
From: jgart via Guix-patches via @ 2024-07-10 15:42 UTC (permalink / raw)
  To: 63442; +Cc: c4droid, Sören Tempel


> I can confirm that this patch builds locally. I can also confirm that

Can you send an updated patch as a v2?

The update-unicorn.patch no longer applies.

I tried to wiggle it but no luck:

https://toys.whereis.みんな/?search=wiggle
-- 
all the best,
jgart




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

* [bug#63442] [PATCH] gnu: unicorn: Update to 2.0.1.post1.
  2023-05-11  9:39 [bug#63442] [PATCH] gnu: unicorn: Update to 2.0.1.post1 c4droid
  2023-10-24 15:38 ` Sören Tempel
@ 2024-07-11 18:00 ` soeren
  2024-07-11 20:17   ` bug#63442: " jgart via Guix-patches via
  1 sibling, 1 reply; 5+ messages in thread
From: soeren @ 2024-07-11 18:00 UTC (permalink / raw)
  To: 63442; +Cc: jgart

From: c4droid <c4droid@foxmail.com>

* gnu/packages/emulators.scm (unicorn) Update to 2.0.1.post1.

Co-authored-by: Sören Tempel <soeren@soeren-tempel.net>
---
 gnu/packages/emulators.scm | 118 ++++++-------------------------------
 1 file changed, 19 insertions(+), 99 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 4471de9040..5979294ef2 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -61,6 +61,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages containers)
   #:use-module (gnu packages cross-base)
@@ -113,6 +114,7 @@ (define-module (gnu packages emulators)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system pyproject)
   #:use-module (guix build-system qt))
 
 (define-public vice
@@ -2296,106 +2298,24 @@ (define-public zsnes
     (license license:gpl2+)
     (supported-systems (list "x86_64-linux"))))
 
-;; python-pwntools requires a -rc release of unicorn
 (define-public unicorn
-  (let ((unless-x86
-          (lambda (code)
-            (if (member (%current-system) '("x86_64-linux" "i686-linux"))
-              '()
-              code))))
-    (package
-      (name "unicorn")
-      (version "1.0.2-rc4")
-      ;; NOTE: unicorn ships a bundled QEMU, but with a lot of custom modifications.
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/unicorn-engine/unicorn")
-               (commit version)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "17nyccgk7hpc4hab24yn57f1xnmr7kq4px98zbp2bkwcrxny8gwy"))))
-      (outputs '("out" "python"))
-      ;; The main library is not written in Python, but the build process has
-      ;; little in common with any defined build system, so we might as well
-      ;; build on top of python-build-system and make use of all
-      ;; the Python-specific phases that can be reused.
-      (build-system python-build-system)
-      (arguments
-       `(#:modules ((srfi srfi-26)
-                    (guix build python-build-system)
-                    (guix build utils))
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'build 'build-library
-             (lambda* (#:key inputs #:allow-other-keys)
-               (invoke "make"
-                       "-j" (number->string (parallel-job-count))
-                       "UNICORN_STATIC=no"
-                       "CC=gcc")))
-           (add-after 'build-library 'install-library
-             (lambda* (#:key outputs #:allow-other-keys)
-               (invoke "make" "install"
-                       "UNICORN_STATIC=no"
-                       (string-append
-                        "PREFIX="
-                        (assoc-ref outputs "out")))))
-           (add-before 'build 'prepare-bindings
-             (lambda* (#:key outputs #:allow-other-keys)
-               (chdir "bindings/python")
-               ;; Set this environment variable so that the Python bindings
-               ;; don't build their own copy of the shared object, but use
-               ;; a dummy value such that the bindings test suite uses the
-               ;; same mechanism for loading the library as any other user.
-               (setenv "LIBUNICORN_PATH" "1")
-               (substitute* "unicorn/unicorn.py"
-                 (("_path_list = \\[.*")
-                  (string-append
-                   "_path_list = [\""
-                   (assoc-ref outputs "out")
-                   ;; eat the rest of the list
-                   "/lib\"] + 0*[")))
-               #t))
-           (add-before 'check 'check-library
-             (lambda* (#:key outputs #:allow-other-keys)
-               (for-each
-                 (lambda (suite)
-                   (with-directory-excursion
-                     (string-append "../../tests/" suite)
-                     (invoke "make" "test" "CC=gcc"
-                             ,@(unless-x86
-                                '("AS=i686-unknown-linux-gnu-as"
-                                  "OBJCOPY=i686-unknown-linux-gnu-objcopy")))))
-                 '("unit" "regress"))
-               #t))
-           (add-after 'install 'install-samples
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((python-samples (find-files "." "sample_.*"))
-                      (c-samples (find-files "../../samples" ".*\\.c"))
-                      (python-docdir
-                        (string-append (assoc-ref outputs "python")
-                                       "/share/doc/unicorn/samples"))
-                      (c-docdir
-                        (string-append (assoc-ref outputs "out")
-                                       "/share/doc/unicorn/samples")))
-                 (for-each (cut install-file <> c-docdir) c-samples)
-                 (for-each (cut install-file <> python-docdir) python-samples)
-                 #t))))))
-      (native-inputs
-       ;; NOTE: cross-binutils needs to be wrapped with unless-x86, as otherwise
-       ;; the linker provided by the package will be used, circumventing the ld-wrapper.
-       `(,@(unless-x86
-            `(("assembler-for-tests" ,(cross-binutils "i686-unknown-linux-gnu"))))
-         ("cmocka" ,cmocka)
-         ("hexdump-for-tests" ,util-linux)))
-      (home-page "https://www.unicorn-engine.org")
-      (synopsis "Unicorn CPU emulator framework")
-      (description
-       "Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator
-framework based on QEMU.")
-      (license license:gpl2+))))
+  (package
+    (name "unicorn")
+    (version "2.0.1.post1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri name version))
+       (sha256
+        (base32 "0mlfs8qfi0clyncfkbxp6in0cpl747510i6bqymwid43xcirbikz"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list cmake pkg-config))
+    (home-page "https://www.unicorn-engine.org")
+    (synopsis "Generic CPU emulator framework")
+    (description
+     "Uniforn is a lightweight, multi-platform, multi-architecture CPU
+emulator framework based on QEMU.")
+    (license license:gpl2+)))
 
 (define-public ppsspp
   (package

base-commit: 437f8f19ac74c85b80432881d9df2b0d80943bca




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

* bug#63442: [PATCH] gnu: unicorn: Update to 2.0.1.post1.
  2024-07-11 18:00 ` soeren
@ 2024-07-11 20:17   ` jgart via Guix-patches via
  0 siblings, 0 replies; 5+ messages in thread
From: jgart via Guix-patches via @ 2024-07-11 20:17 UTC (permalink / raw)
  To: 63442-done; +Cc: jgart, c4droid, soeren


Applied, thanks!
-- 
all the best,
jgart




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

end of thread, other threads:[~2024-07-11 20:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-11  9:39 [bug#63442] [PATCH] gnu: unicorn: Update to 2.0.1.post1 c4droid
2023-10-24 15:38 ` Sören Tempel
2024-07-10 15:42   ` jgart via Guix-patches via
2024-07-11 18:00 ` soeren
2024-07-11 20:17   ` bug#63442: " jgart via Guix-patches via

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