me
/
guix
Archived
1
0
Fork 0

gnu: unicorn: Update to 2.0.1.post1.

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

Co-authored-by: Sören Tempel <soeren@soeren-tempel.net>
Signed-off-by: jgart <jgart@dismail.de>
c4droid 2024-07-11 20:00:55 +02:00 committed by jgart
parent a1e6ac72fd
commit 8f12ed2c0f
No known key found for this signature in database
GPG Key ID: A52AA2B477B6DD35
1 changed files with 19 additions and 99 deletions

View File

@ -61,6 +61,7 @@
#: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 @@
#: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 @@ graphic filters. Some of its features include:
(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