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

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