diff options
author | Raghav Gururajan <rg@raghavgururajan.name> | 2021-10-01 17:59:00 -0400 |
---|---|---|
committer | Raghav Gururajan <rg@raghavgururajan.name> | 2021-10-01 18:10:34 -0400 |
commit | 66df86a2733f763532b1569c48bf92c98835c4af (patch) | |
tree | 0acc697ff7c7decf2a166ec935df8e5c23e27f84 | |
parent | 8e70421a88dbf0e95c1052156a173ff8b126a2db (diff) | |
download | guix-66df86a2733f763532b1569c48bf92c98835c4af.tar.gz |
gnu: Add libx86emu.
* gnu/packages/virtualization.scm (libx86emu): New variable. Co-authored-by: Petr Hodina <phodina@protonmail.com> Co-authored-by: Vincent Legoll <vincent.legoll@gmail.com>
-rw-r--r-- | gnu/packages/virtualization.scm | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index f3b91cd83a..8a9da55e5f 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -21,6 +21,9 @@ ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2021 Dion Mendel <guix@dm9.info> ;;; Copyright © 2021 Andrew Whatson <whatson@gmail.com> +;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> +;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -437,6 +440,74 @@ server and embedded PowerPC, and S390 guests.") ((arch kernel) arch) (_ system)))))) +(define-public libx86emu + (package + (name "libx86emu") + (version "3.1") + (home-page "https://github.com/wfeldt/libx86emu") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (modules + '((guix build utils))) + (snippet + `(begin + ;; Remove git2log program file. + (delete-file "git2log") + ;; Remove variables that depends on git2log. + (substitute* "Makefile" + (("GIT2LOG.*=.*$") "") + (("GITDEPS.*=.*$") "") + (("BRANCH.*=.*$") "")) + #t)) + (sha256 + (base32 "104xqc6nj9rpi7knl3dfqvasf087hlz2n5yndb1iycw35a6j509b")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (include (string-append out "/include")) + (lib (string-append out "/lib"))) + ;; Correct the values of version and install directories. + (substitute* "Makefile" + (("VERSION.*=.*$") + (string-append "VERSION := " + ,version "\n")) + (("PREFIX.*=.*$") + (string-append "PREFIX := " out "\n")) + (("MAJOR_VERSION.*=.*$") + (string-append "MAJOR_VERSION := " + ,(version-major version) "\n")) + (("LIBDIR.*=.*$") + (string-append "LIBDIR = " lib "\n")) + (("/usr/include") include))))) + (delete 'configure)))) ; no configure script + (native-inputs + `(("nasm" ,nasm) + ("perl" ,perl))) + (synopsis "Library for x86 emulation") + (description "Libx86emu is a small library to emulate x86 instructions. The +focus here is not a complete emulation but to cover enough for typical +firmware blobs. You can +@enumerate +@item intercept any memory access or directly map real memory ranges +@item intercept any i/o access, map real i/o ports, or block any real i/o +@item intercept any interrupt +@item add a hook to run after each instruction +@item recognize a special x86 instruction that can trigger logging +@item use integrated logging +@end enumerate") + (license license:x11-style))) + (define-public ganeti (package (name "ganeti") |