diff options
Diffstat (limited to 'loft/patching.scm')
-rw-r--r-- | loft/patching.scm | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/loft/patching.scm b/loft/patching.scm new file mode 100644 index 0000000..747dadf --- /dev/null +++ b/loft/patching.scm @@ -0,0 +1,74 @@ +(use-modules (gnu packages compression) + (gnu packages elf) + (gnu packages engineering) + (gnu packages markup) + (gnu packages vim) + (guix build-system gnu) + (guix git-download) + ((guix licenses) #:prefix license:) + (guix packages)) + +(define-public e9patch + (let ((commit "b4e7175abb8bd49ebbb6d09c7057aa43ddacac10") + (revision "0")) + (package + (name "e9patch") + (version (git-version "1.0.0-dev" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/GJDuck/e9patch") + (commit commit))) + (sha256 + (base32 + "0a9s7h43ryyl4bvn0sid0dq78v24bnbcf271smj1a8wvffsih0jy")) + (file-name (git-file-name name version)) + (patches (search-patches + ;; https://github.com/GJDuck/e9patch/pull/94 + "e9patch-devendor.patch" + ;; https://github.com/GJDuck/e9patch/pull/99 + "e9patch-plugin-api-headers.patch" + ;; https://github.com/GJDuck/e9patch/pull/92 + "e9patch-check.patch" + ;; https://github.com/GJDuck/e9patch/pull/95 + "e9patch-check-intel-format.patch" + ;; https://github.com/GJDuck/e9patch/pull/88 + "e9patch-check-mode.patch" + ;; https://github.com/GJDuck/e9patch/pull/93 + "e9patch-check-mov-imm.patch" + ;; https://github.com/GJDuck/e9patch/issues/96 + "e9patch-check-rflags.patch" + ;; https://github.com/GJDuck/e9patch/pull/97 + "e9patch-check-same_op_2.patch")))) + (build-system gnu-build-system) + (arguments (list #:modules `((ice-9 string-fun) ; string-replace-substring + ,@%default-gnu-modules) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-prefix + (lambda _ + (substitute* "Makefile" + ;; https://github.com/GJDuck/e9patch/pull/87 + (("\\\\/usr") + (string-replace-substring #$output "/" "\\/")) + (("/usr") #$output)))) + (delete 'configure)))) + (native-inputs (list markdown xxd)) + (inputs (list elfutils zycore zydis zlib)) + (home-page "https://github.com/GJDuck/e9patch") + (synopsis "Static binary rewriting tool") + (description + "E9Patch is a static binary rewriting tool for x86-64 ELF binaries. +E9Patch is: +@itemize +@item Scalable: E9Patch can reliably rewrite large/complex binaries + including web browsers (>100MB in size). +@item Compatible: The rewritten binary is a drop-in replacement of the original, + with no additional dependencies. +@item Fast: E9Patch can rewrite most binaries in a few seconds. +@item Low Overheads: Both performance and memory. +@item Programmable: E9Patch is designed so that it can be easily integrated + into other projects. +@end itemize") + (license (list license:expat ;src/e9patch/e9loader_*.cpp + license:gpl3+))))) ;rest |