summary refs log tree commit diff
path: root/gnu/packages/android.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/android.scm')
-rw-r--r--gnu/packages/android.scm231
1 files changed, 225 insertions, 6 deletions
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 3bd3be6685..9f00303811 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Sergey Trofimov <sarg@sarg.org.ru>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,6 +46,7 @@
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages golang)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pcre)
@@ -54,7 +56,9 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages selinux)
   #:use-module (gnu packages serialization)
+  #:use-module (gnu packages sphinx)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages virtualization)
@@ -190,6 +194,28 @@ use their packages mostly unmodified in our Android NDK build system.")
      (base32
       checksum))))
 
+(define (android-platform-development version)
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://android.googlesource.com/platform/development")
+          (commit (string-append "android-" version))))
+    (file-name (string-append "android-platform-development-"
+                              version "-checkout"))
+    (sha256
+     (base32 "0s92961yycg8wsga40i7fvbfmf1a5i6j2gk64j2jiy7s0hfd4rc3"))))
+
+(define (android-platform-frameworks-native version)
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://android.googlesource.com/platform/frameworks/native")
+          (commit (string-append "android-" version))))
+    (file-name (string-append "android-platform-frameworks-native-"
+                              version "-checkout"))
+    (sha256
+     (base32 "00dgx27wma7wzivniy8zyw2443fi2xx8gyxii081m0fwamqd3jrm"))))
+
 (define-public android-liblog
   (package
     (name "android-liblog")
@@ -728,6 +754,132 @@ it.
 to be passed to the @code{udev} service.")
     (license license:gpl3+)))
 
+(define-public android-platform-frameworks-native-headers
+  (package
+    (name "android-platform-frameworks-native-headers")
+    (version (android-platform-version))
+    (source (android-platform-frameworks-native version))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (include (string-append %output "/include/android")))
+           (mkdir-p include)
+           (copy-recursively (string-append source "/include/android")
+                             (string-append include)) ; "/android"))
+           ))))
+    (home-page "https://android.googlesource.com/platform/frameworks/native/")
+    (synopsis "Headers for Android development from
+android-platform-frameworks-native")
+    (description "This package contains headers used for developing software
+for Android.  More precicely the headers from include/android in
+platform/frameworks/native.")
+    (license license:asl2.0)))
+
+(define-public libetc1
+  (package
+    (name "libetc1")
+    (version (android-platform-version))
+    (source (android-platform-frameworks-native version))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'create-Makefile
+           (lambda _
+             ;; No useful makefile is shipped, so we create one.
+             (with-output-to-file "Makefile"
+               (lambda _
+                 (display
+                  (string-append
+                   "NAME = libETC1\n"
+                   "SOURCES = opengl/libs/ETC1/etc1.cpp\n"
+                   "CXXFLAGS += -fPIC\n"
+                   "CPPFLAGS += -Iopengl/include\n"
+                   "LDFLAGS += -shared -Wl,-soname,$(NAME).so.0\n"
+                   "$(NAME).so.0: $(SOURCES)\n"
+                   "	$(CXX) $^ -o $@ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)\n"
+                   "build: $(NAME).so.0"))
+                 #t))))
+         (add-after 'unpack 'remove-unused-stuff-to-reduce-warnings
+           (lambda _
+             (delete-file-recursively "opengl/libs/tools")))
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib"))
+                    (include (string-append out "/include")))
+               (install-file "libETC1.so.0" lib)
+               (with-directory-excursion lib
+                 (symlink "libETC1.so.0" "libETC1.so"))
+               (copy-recursively "opengl/include/ETC1"
+                                 (string-append include "/ETC1"))))))))
+    (home-page "https://android.googlesource.com/platform/frameworks/native/")
+    (synopsis "ETC1 compression library")
+    (description "Ericsson Texture Compression (ETC) is a lossy texture
+compression technique developed in collaboration with Ericsson Research in
+early 2005.  libETC1 provides the encoding and decoding of ETC1 compression
+algorithm.")
+    (license license:asl2.0)))
+
+(define-public etc1tool
+  (package
+    (name "etc1tool")
+    (version (android-platform-version))
+    (source (android-platform-development version))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'create-Makefile
+           (lambda _
+             ;; No useful makefile is shipped, so we create one.
+             (with-output-to-file "Makefile"
+               (lambda _
+                 (display
+                  (string-append
+                   "NAME = etc1tool\n"
+                   "SOURCES = tools/etc1tool/etc1tool.cpp\n"
+                   "CPPFLAGS += -Iinclude\n"
+                   "LDFLAGS += -lpng -lETC1\n"
+                   "$(NAME): $(SOURCES)\n"
+                   "	$(CXX) $^ -o $@ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)\n"
+                   "build: $(NAME)"))
+                 #t))))
+         (add-before 'build 'fix-typos-in-help
+           (lambda _
+             (substitute* "tools/etc1tool/etc1tool.cpp"
+               ((" apropriate ") " appropriate "))
+             #t))
+         ;; TODO: Add man-page from Debian
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (install-file "etc1tool" bin)))))))
+    (inputs
+     `(("libetc1" ,libetc1)
+       ("libpng" ,libpng)))
+    (home-page "https://developer.android.com/studio/command-line/etc1tool.html")
+    (synopsis "Encode and decode PNG images to resp. from the ETC1 compression
+standard.")
+    (description
+     "@command{etc1} is a command line utility that lets you encode PNG images
+to the ETC1 compression standard and decode ETC1 compressed images back to
+PNG.  This tool is part of the Android SDK for working with media files for
+game apps.
+
+The standard for the ETC1 texture format can be found at
+@uref{http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt}.")
+    (license license:asl2.0)))
+
 (define-public git-repo
   (package
     (name "git-repo")
@@ -904,17 +1056,84 @@ safest way, on a file image.")
 useful for reverse engineering, analysis of Android applications and more.")
     (license license:asl2.0)))
 
+(define-public python-android-backup
+  (package
+    (name "python-android-backup")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "android_backup" version))
+       (sha256
+        (base32
+         "15wb2lyjj2fpf7bhvmgpqn0mglsjj11zfvbjycx7mnidisgnljw6"))))
+    (build-system python-build-system)
+    (propagated-inputs (list python-pycrypto))
+    (home-page "https://github.com/bluec0re/android-backup-tools")
+    (synopsis "Unpack and repack android backups")
+    (description "This package allows you to unpack and repack Android
+backups.  It supports encrypted archives.")
+    (license license:asl2.0)))
+
+(define-public python-miio
+  (package
+    (name "python-miio")
+    (version "0.5.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-miio" version))
+       (sha256
+        (base32
+         "0a4f5ybjvibawwxcjm3r9nnrzf1yff6wwgy05yzyk0bb3rmc99fp"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest" "miio")))))))
+    (native-inputs
+     (list python-pytest
+           python-pytest-mock
+           python-sphinx
+           python-sphinx-click
+           python-sphinx-rtd-theme
+           python-sphinxcontrib-apidoc))
+    (propagated-inputs
+     (list python-android-backup
+           python-appdirs
+           python-attrs
+           python-click
+           python-construct
+           python-croniter
+           python-cryptography
+           python-defusedxml
+           python-importlib-metadata
+           python-netifaces
+           python-pytz
+           python-pyyaml
+           python-tqdm
+           python-zeroconf))
+    (home-page "https://github.com/rytilahti/python-miio")
+    (synopsis "Control Xiaomi smart appliances")
+    (description "This package provides library and command line interface
+for communicating with Xiaomi smart appliances over miIO and MIoT protocols.")
+    (license license:gpl3+)))
+
 (define-public fdroidserver
   (package
     (name "fdroidserver")
     (version "1.1.9")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "fdroidserver" version))
-        (sha256
-         (base32
-          "0m07f791z45w7r2dzx4yb6s54b3c3wykm3w9hn25p2jcyax082a2"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "fdroidserver" version))
+       (sha256
+        (base32
+         "0m07f791z45w7r2dzx4yb6s54b3c3wykm3w9hn25p2jcyax082a2"))))
     (build-system python-build-system)
     (arguments
      `(#:phases