diff --git a/gnu/local.mk b/gnu/local.mk index 1062bdcafe..ad85894ebe 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -796,6 +796,7 @@ dist_patch_DATA = \ %D%/packages/patches/emacs-undohist-ignored.patch \ %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \ %D%/packages/patches/emacs-zones-called-interactively.patch \ + %D%/packages/patches/enjarify-setup-py.patch \ %D%/packages/patches/enlightenment-fix-setuid-path.patch \ %D%/packages/patches/erlang-man-path.patch \ %D%/packages/patches/eudev-rules-directory.patch \ diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm index 56d5edaa75..8eb5182f51 100644 --- a/gnu/packages/android.scm +++ b/gnu/packages/android.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages docker) #:use-module (gnu packages gnupg) + #:use-module (gnu packages java) #:use-module (gnu packages linux) #:use-module (gnu packages pcre) #:use-module (gnu packages python) @@ -934,3 +935,60 @@ these same tools to create your own additional or alternative repository for publishing, or to assist in creating, testing and submitting metadata to the main repository.") (license license:agpl3+))) + +(define-public enjarify + (package + (name "enjarify") + (version "1.0.3") + (home-page "https://github.com/Storyyeller/enjarify") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (patches + (search-patches "enjarify-setup-py.patch")) + (sha256 + (base32 + "1nam7h1g4f1h6jla4qcjjagnyvd24dv6d5445w04q8hx07nxdapk")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'enjarify-wrapper-inherit-pythonpath + ;; enjarify sets PYTHONPATH from a shell script, overwriting + ;; PYTHONPATH set from guix. Comment out this line. + (lambda _ + (substitute* "enjarify.sh" + (("export PYTHONPATH") "# export PYTHONPATH")) + #t)) + (add-before 'check 'fixup-expected-test-results + ;; Upstream adjusted this test in commit: + ;; 3ae884a6485af82d300515813f537685b08dd800 + (lambda _ + (substitute* "tests/test2/expected.txt" + (("^20") "0")) + #t)) + (add-before 'check 'drop-java-xss-argument + ;; Upstream removed this argument in order to support 32-bit + ;; architectures. commit: 4be0111d879aa95fdc0d9f24fe529f8c664d4093 + (lambda _ + (substitute* "enjarify/runtests.py" + (("java -Xss515m") "java ")) + #t)) + (add-after 'install 'install-enjarify-wrapper + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/bin/")) + (copy-file "enjarify.sh" (string-append out "/bin/enjarify")) + #t)))))) + (native-inputs `(("openjdk:jdk" ,openjdk12 "jdk"))) + (synopsis "Translate Dalvik bytecode to equivalent Java bytecode") + (description "Android applications are Java programs that run on a +customized virtual machine, which is part of the Android operating system, the +Dalvik VM. Their bytecode differs from the bytecode of normal Java +applications. Enjarify can translate the Dalvik bytecode back to equivalent +Java bytecode, which simplifies the analysis of Android applications.") + (license license:asl2.0))) diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm index fff331ac13..8df5a9cc0e 100644 --- a/gnu/packages/diffoscope.scm +++ b/gnu/packages/diffoscope.scm @@ -92,6 +92,9 @@ ;; Patch in support for known tools (add-after 'unpack 'add-known-tools (lambda _ + (substitute* "diffoscope/external_tools.py" + (("'arch': 'enjarify'},") + "'arch': 'enjarify', 'guix': 'enjarify'},")) (substitute* "diffoscope/external_tools.py" (("'arch': 'python-jsbeautifier'},") "'arch': 'python-jsbeautifier', 'guix': 'python-jsbeautifier'},")) @@ -172,6 +175,7 @@ ("docx2txt" ,docx2txt) ("dtc" ,dtc) ("e2fsprogs" ,e2fsprogs) + ("enjarify" ,enjarify) ("ffmpeg" ,ffmpeg) ("gettext" ,gettext-minimal) ("ghc" ,ghc) diff --git a/gnu/packages/patches/enjarify-setup-py.patch b/gnu/packages/patches/enjarify-setup-py.patch new file mode 100644 index 0000000000..4b382ca320 --- /dev/null +++ b/gnu/packages/patches/enjarify-setup-py.patch @@ -0,0 +1,19 @@ +Author: Reiner Herrmann +Origin: https://salsa.debian.org/android-tools-team/enjarify/blob/master/debian/patches/setup_py.patch +Description: provides a minimal setup.py to build/install the package + +Index: enjarify/setup.py +=================================================================== +--- /dev/null ++++ enjarify/setup.py +@@ -0,0 +1,10 @@ ++#!/usr/bin/env python3 ++ ++from setuptools import setup, find_packages ++ ++setup(name='enjarify', ++ version='1.0.3', ++ url='https://github.com/google/enjarify', ++ packages=find_packages(), ++ ) ++