Emacs packaging

Hello. I struggled might and main to locate an email or snail mail address by which to contact the F-Droid packagers responsible for Emacs, to no avail, so I’m posting here in the hope that it will come by the right people.

Lately some controversy has surfaced on the Emacs mailing list and on diverse other forums regarding the Emacs packaging process currently employed by F-Droid, to wit: it appears to omit a number of dependencies that are critical for many applications, such as GnuTLS, librsvg, libpng/libjpeg/libgif/libtiff, and so forth, and there are no arrangements for sharing a UID namespace with Termux, which many users would like to invoke from Emacs. It has also been noted that the app listing is rather impoverished, featuring no screenshots or advice for new installations, and there has been some discussion around AndroidManifest.xml not providing sufficient metadata for automatic packaging. In my capacity as the developer of this port, I should be more than glad to provide screenshots and the like metadata for its listing, and assist with building dependencies or with Termux integration. I also wish to submit my sincere and abject apologies for no sooner proposing to package Emacs two years ago on IRC than hastily leaving you in the dark and occasioning so much confusion for you.

What is more, please do not hesitate to report bugs to bug-gnu-emacs@gnu.org or approach emacs-devel@gnu.org with feedback on Android compilation/packaging. We are interested in rendering packaging as painless a process as conveniently may be.

2 Likes

About | F-Droid - Free and Open Source Android App Repository has this… but the Forum is a great place too :slight_smile:

lol wut? You want to send a postcard? :slight_smile:

I’m a packager, you are a packager, everyone is a packager, that’s how FOSS works

Great, feel free to add them: metadata/org.gnu.emacs.yml · master · F-Droid / Data · GitLab

The app was added 2 years ago thanks to a contributor, New App: GNU Emacs (!12518) · Merge requests · F-Droid / Data · GitLab plenty of time for interested people to comtribute… if any…

I would not sign with the same key as Termux, at most, you’d make a fork of Termux, specifically for emacs and we can share that UID for it, yes

Sure, just add a Fastlane (Fastlane file structure ($1895688) · Snippets · GitLab) or Triple-T (Triple-T file structure ($1901490) · Snippets · GitLab) folder structure with txt, pics, icon in the app source code repository

again, if you want to have an Android app, just add Android things where they are needed, not something related to F-Droid directly

Great to hear this, see what needs to be done above.

Never too late :slight_smile:

Oh, and by the way, can you trim the permission list to the minimum? See Request to remove emacs package (#3334) · Issues · F-Droid / Data · GitLab

Thank you for responding so promptly.

Great, feel free to add them:

I see. Will you accept patches posted to this thread? I am loath to register a GitLab account, for obvious reasons.

I would not sign with the same key as Termux, at most, you’d make a fork of Termux, specifically for emacs and we can share that UID for it, yes

Could we reach an understanding with Termux developers agreeing to our sharing a UID with regular Termux and its numerous extensions?

Sure, just add a Fastlane folder structure with txt, pics, icon in the app source code repository

It would be much more convenient if the Fastlane metadata were to be provided separately from the app source code repository. Would this be possible?

again, if you want to have an Android app, just add Android things where they are needed, not something related to F-Droid directly

We are already doing so, but in

Re: The Android port and the Emacs web page

it was said that the version number information in AndroidManifest.xml was insufficient to enable F-Droid to detect updates. We don’t intend ever to increment `versionCode’ in the future, in order to permit downgrading from newer releases packaged by ourselves. Any adjustments here would be unnecessary if F-Droid could scan configure.ac rather than the app manifest, though.

Never too late :slight_smile:

Oh, and by the way, can you trim the permission list to the minimum?

Personally I wouldn’t be so leery of a manifest full of optional permissions which are not enabled except at the express request of the user, but I am alright with introducing a build variant declaring fewer permissions. Still, before doing so, I want to understand why it is desirable, when the lion’s share of permissions currently being declared are not granted without the user’s express say-so.

Yes, you can send your patch here.

Could we reach an understanding with Termux developers agreeing to our sharing a UID with regular Termux and its numerous extensions?

We need to change the signature anyway and the users can’t update emacs. And this is a deprecated feature.

We can patch the version code as long as there is an increment number in your repo.

Here is what I suggest. I’ll look into providing Fastlane metadata some other day (but hopefully quite soon). Disclaimer: these recipes were tested with a local mirror substituted for my SourceForge repository, and I cannot be 100% certain that the URLs they specify are available or will last.

diff --git a/metadata/org.gnu.emacs.yml b/metadata/org.gnu.emacs.yml
index 5a1dba966a..7123456cb1 100644
--- a/metadata/org.gnu.emacs.yml
+++ b/metadata/org.gnu.emacs.yml
@@ -6,7 +6,7 @@ AuthorName: GNU Project
 WebSite: https://www.gnu.org/software/emacs/
 SourceCode: https://git.savannah.gnu.org/cgit/emacs.git/tree/
 IssueTracker: https://debbugs.gnu.org/
-Changelog: https://git.savannah.gnu.org/cgit/emacs.git/tree/ChangeLog.android?h=feature/android
+Changelog: https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-30
 Donate: https://my.fsf.org/donate/
 
 Description: |-
@@ -25,13 +25,16 @@ Description: |-
   * A wide range of functionality beyond text editing, including a project planner, mail and news reader, debugger interface, calendar, IRC client, and more;
   * A packaging system for downloading and installing extensions.
 
-  Android notes:
-  * System keyboard can be invoked by tapping on a non read-only buffer;
-  * Permissions are not granted by default, they must be explicitly enabled in system settings menu;
-  * Android version of emacs is built without GNUTLS support;
+  Notes regarding Android support:
+
+  * The on-screen keyboard is automatically invoked when a non read-only buffer is tapped, and the user option `touch-screen-display-keyboard' arranges for it always to be displayed.
+  * `modifier-bar-mode' may be enabled to display a panel of modifier keys beside the tool bar.
+  * Permissions are not granted by default, but must be explicitly enabled in system settings menu.
+  * External storage permissions may be granted by observing the instructions in the banner that is displayed on the splash screen if they are denied.
+  * Answers to other questions probably exist in the Android appendix to the bundled Emacs manual.  Read it!
 
 RepoType: git
-Repo: git://git.savannah.gnu.org/emacs.git
+Repo: https://git.savannah.gnu.org/git/emacs.git
 
 Builds:
   - versionName: 30.0.50
@@ -570,6 +573,253 @@ Builds:
       - make all
     ndk: r25c
 
+  - versionName: 30.0.93
+    versionCode: 300093010
+    commit: 68bcabf58afddb377d172857ce7648ad3ff09618
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git nasm
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/giflib-5.2.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libjpeg-turbo-3.0.2-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libpng-1.6.41-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libxml2-2.12.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gmp-6.3.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/nettle-3.8-emacs.tar.gz | tar xfvz -
+      - curl -OL https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gnutls-3.8.5-emacs-armv7a.tar.gz
+      - tar xfvz gnutls-3.8.5-emacs-armv7a.tar.gz
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/p11-kit-0.24.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libtasn1-4.19.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libselinux-3.6-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tree-sitter-0.20.7-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/harfbuzz-7.1.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tiff-4.5.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gdk-pixbuf-2.22.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/glib-2.33.14-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libcroco-0.6.13-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/rsvg-2.40.21-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/cairo-1.16.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libiconv-1.17-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pango-1.38.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pixman-0.38.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libffi-3.4.5-emacs.tar.gz | tar xfvz -
+      - git clone https://android.googlesource.com/platform/external/sqlite -b android-7.1.2_r39
+      - git clone https://android.googlesource.com/platform/external/pcre -b android-7.1.2_r39
+      - git clone https://chromium.googlesource.com/webm/libwebp -b v1.5.0
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="$deps/giflib-5.2.1 $deps/libjpeg-turbo-3.0.2 $deps/libpng-1.6.41 $deps/libxml2-2.12.4 $deps/sqlite/dist $deps/libwebp $deps/gmp-6.3.0 $deps/nettle-3.8 $deps/gnutls-3.8.5-armv7a $deps/p11-kit-0.24.1 $deps/libtasn1-4.19.0 $deps/libselinux-3.6 $deps/tree-sitter-0.20.7 $deps/harfbuzz-7.1.0 $deps/tiff-4.5.1 $deps/gdk-pixbuf-2.22.1 $deps/glib-2.33.14 $deps/libcroco-0.6.13 $deps/librsvg-2.40.21 $deps/cairo-1.16.0 $deps/libiconv-1.17 $deps/pango-1.38.1 $deps/pixman-0.38.4 $deps/libffi-3.4.5 $deps/pcre" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093011
+    commit: 68bcabf58afddb377d172857ce7648ad3ff09618
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/giflib-5.2.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libjpeg-turbo-3.0.2-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libpng-1.6.41-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libxml2-2.12.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gmp-6.3.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/nettle-3.8-emacs.tar.gz | tar xfvz -
+      - curl -OL https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gnutls-3.8.5-emacs-armv7a.tar.gz
+      - tar xfvz gnutls-3.8.5-emacs-armv7a.tar.gz
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/p11-kit-0.24.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libtasn1-4.19.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libselinux-3.6-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tree-sitter-0.20.7-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/harfbuzz-7.1.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tiff-4.5.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gdk-pixbuf-2.22.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/glib-2.33.14-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libcroco-0.6.13-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/rsvg-2.40.21-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/cairo-1.16.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libiconv-1.17-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pango-1.38.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pixman-0.38.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libffi-3.4.5-emacs.tar.gz | tar xfvz -
+      - git clone https://android.googlesource.com/platform/external/sqlite -b android-7.1.2_r39
+      - git clone https://android.googlesource.com/platform/external/pcre -b android-7.1.2_r39
+      - git clone https://chromium.googlesource.com/webm/libwebp -b v1.5.0
+      - sed -i -e 's/NEON := c.neon/NEON := c/g'
+        -e '/WEBP_CFLAGS *+=/s/-DHAVE_CPU_FEATURES_H//g'
+        -e 's/USE_CPUFEATURES *.*=.*$/USE_CPUFEATURES := no/g' libwebp/Android.mk 
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="$deps/giflib-5.2.1 $deps/libjpeg-turbo-3.0.2 $deps/libpng-1.6.41 $deps/libxml2-2.12.4 $deps/sqlite/dist $deps/libwebp $deps/gmp-6.3.0 $deps/nettle-3.8 $deps/gnutls-3.8.5-armv7a $deps/p11-kit-0.24.1 $deps/libtasn1-4.19.0 $deps/libselinux-3.6 $deps/tree-sitter-0.20.7 $deps/harfbuzz-7.1.0 $deps/tiff-4.5.1 $deps/gdk-pixbuf-2.22.1 $deps/glib-2.33.14 $deps/libcroco-0.6.13 $deps/librsvg-2.40.21 $deps/cairo-1.16.0 $deps/libiconv-1.17 $deps/pango-1.38.1 $deps/pixman-0.38.4 $deps/libffi-3.4.5 $deps/pcre" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093012
+    commit: 68bcabf58afddb377d172857ce7648ad3ff09618
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git nasm
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/giflib-5.2.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libjpeg-turbo-3.0.2-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libpng-1.6.41-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libxml2-2.12.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gmp-6.3.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/nettle-3.8-emacs.tar.gz | tar xfvz -
+      - curl -OL https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gnutls-3.8.5-emacs.tar.gz
+      - tar xfvz gnutls-3.8.5-emacs.tar.gz
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/p11-kit-0.24.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libtasn1-4.19.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libselinux-3.6-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tree-sitter-0.20.7-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/harfbuzz-7.1.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tiff-4.5.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gdk-pixbuf-2.22.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/glib-2.33.14-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libcroco-0.6.13-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/rsvg-2.40.21-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/cairo-1.16.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libiconv-1.17-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pango-1.38.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pixman-0.38.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libffi-3.4.5-emacs.tar.gz | tar xfvz -
+      - git clone https://android.googlesource.com/platform/external/sqlite -b android-7.1.2_r39
+      - git clone https://android.googlesource.com/platform/external/pcre -b android-7.1.2_r39
+      - git clone https://chromium.googlesource.com/webm/libwebp -b v1.5.0
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="$deps/giflib-5.2.1 $deps/libjpeg-turbo-3.0.2 $deps/libpng-1.6.41 $deps/libxml2-2.12.4 $deps/sqlite/dist $deps/libwebp $deps/gmp-6.3.0 $deps/nettle-3.8 $deps/gnutls-3.8.5 $deps/p11-kit-0.24.1 $deps/libtasn1-4.19.0 $deps/libselinux-3.6 $deps/tree-sitter-0.20.7 $deps/harfbuzz-7.1.0 $deps/tiff-4.5.1 $deps/gdk-pixbuf-2.22.1 $deps/glib-2.33.14 $deps/libcroco-0.6.13 $deps/librsvg-2.40.21 $deps/cairo-1.16.0 $deps/libiconv-1.17 $deps/pango-1.38.1 $deps/pixman-0.38.4 $deps/libffi-3.4.5 $deps/pcre" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093013
+    commit: 68bcabf58afddb377d172857ce7648ad3ff09618
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/giflib-5.2.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libjpeg-turbo-3.0.2-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libpng-1.6.41-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libxml2-2.12.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gmp-6.3.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/nettle-3.8-emacs.tar.gz | tar xfvz -
+      - curl -OL https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gnutls-3.8.5-emacs.tar.gz
+      - tar xfvz gnutls-3.8.5-emacs.tar.gz
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/p11-kit-0.24.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libtasn1-4.19.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libselinux-3.6-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tree-sitter-0.20.7-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/harfbuzz-7.1.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/tiff-4.5.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/gdk-pixbuf-2.22.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/glib-2.33.14-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libcroco-0.6.13-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/rsvg-2.40.21-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/cairo-1.16.0-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libiconv-1.17-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pango-1.38.1-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/pixman-0.38.4-emacs.tar.gz | tar xfvz -
+      - curl -L https://master.dl.sourceforge.net/project/android-ports-for-gnu-emacs/libffi-3.4.5-emacs.tar.gz | tar xfvz -
+      - git clone https://android.googlesource.com/platform/external/sqlite -b android-7.1.2_r39
+      - git clone https://android.googlesource.com/platform/external/pcre -b android-7.1.2_r39
+      - git clone https://chromium.googlesource.com/webm/libwebp -b v1.5.0
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="$deps/giflib-5.2.1 $deps/libjpeg-turbo-3.0.2 $deps/libpng-1.6.41 $deps/libxml2-2.12.4 $deps/sqlite/dist $deps/libwebp $deps/gmp-6.3.0 $deps/nettle-3.8 $deps/gnutls-3.8.5 $deps/p11-kit-0.24.1 $deps/libtasn1-4.19.0 $deps/libselinux-3.6 $deps/tree-sitter-0.20.7 $deps/harfbuzz-7.1.0 $deps/tiff-4.5.1 $deps/gdk-pixbuf-2.22.1 $deps/glib-2.33.14 $deps/libcroco-0.6.13 $deps/librsvg-2.40.21 $deps/cairo-1.16.0 $deps/libiconv-1.17 $deps/pango-1.38.1 $deps/pixman-0.38.4 $deps/libffi-3.4.5 $deps/pcre" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
 MaintainerNotes: |-
   Build instructions can be found at:
   https://git.savannah.gnu.org/cgit/emacs.git/tree/java/INSTALL

Are those deps different from upstream? And it would be a pain to maintain those versions in the metadata. Can you maintain them as git submodules?

Those dependencies were modified to support the Android.mk build system and some of them were also patched to compile on Android. Unfortunately we can’t provide them as Git submodules out of copyright assignment considerations, among others.

some hash verification would be needed for all those archives…

Does fdroidserver already provide facilities for this or must I implement it myself?

Can you manage these tarballs in a build script like gdk/tools/builddeps.sh at master · Blockstream/gdk · GitHub?

Sure. No problem.

I propose this:

diff --git a/metadata/org.gnu.emacs.yml b/metadata/org.gnu.emacs.yml
index 5a1dba966a..c9e46b1ffd 100644
--- a/metadata/org.gnu.emacs.yml
+++ b/metadata/org.gnu.emacs.yml
@@ -6,7 +6,7 @@ AuthorName: GNU Project
 WebSite: https://www.gnu.org/software/emacs/
 SourceCode: https://git.savannah.gnu.org/cgit/emacs.git/tree/
 IssueTracker: https://debbugs.gnu.org/
-Changelog: https://git.savannah.gnu.org/cgit/emacs.git/tree/ChangeLog.android?h=feature/android
+Changelog: https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-30
 Donate: https://my.fsf.org/donate/
 
 Description: |-
@@ -25,13 +25,16 @@ Description: |-
   * A wide range of functionality beyond text editing, including a project planner, mail and news reader, debugger interface, calendar, IRC client, and more;
   * A packaging system for downloading and installing extensions.
 
-  Android notes:
-  * System keyboard can be invoked by tapping on a non read-only buffer;
-  * Permissions are not granted by default, they must be explicitly enabled in system settings menu;
-  * Android version of emacs is built without GNUTLS support;
+  Notes regarding Android support:
+
+  * The on-screen keyboard is automatically invoked when a non read-only buffer is tapped, and the user option `touch-screen-display-keyboard' arranges for it always to be displayed.
+  * `modifier-bar-mode' may be enabled to display a panel of modifier keys beside the tool bar.
+  * Permissions are not granted by default, but must be explicitly enabled in system settings menu.
+  * External storage permissions may be granted by observing the instructions in the banner that is displayed on the splash screen if they are denied.
+  * Answers to other questions probably exist in the Android appendix to the bundled Emacs manual.  Read it!
 
 RepoType: git
-Repo: git://git.savannah.gnu.org/emacs.git
+Repo: https://git.savannah.gnu.org/git/emacs.git
 
 Builds:
   - versionName: 30.0.50
@@ -570,6 +573,150 @@ Builds:
       - make all
     ndk: r25c
 
+  - versionName: 30.0.93
+    versionCode: 300093010
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git nasm
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 32
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-androideabi22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093011
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 32
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093012
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git nasm
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 64
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093013
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 64
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
 MaintainerNotes: |-
   Build instructions can be found at:
   https://git.savannah.gnu.org/cgit/emacs.git/tree/java/INSTALL

remove the blank line above builds

the build is run non-interactively, not sure tic -o ../ ./eterm-color.ti helps with anything

`tic’ recompiles the eterm-color terminfo definitions that are otherwise provided as prebuilts. And done.

diff --git a/metadata/org.gnu.emacs.yml b/metadata/org.gnu.emacs.yml
index 5a1dba966a..8ca63b401b 100644
--- a/metadata/org.gnu.emacs.yml
+++ b/metadata/org.gnu.emacs.yml
@@ -6,7 +6,7 @@ AuthorName: GNU Project
 WebSite: https://www.gnu.org/software/emacs/
 SourceCode: https://git.savannah.gnu.org/cgit/emacs.git/tree/
 IssueTracker: https://debbugs.gnu.org/
-Changelog: https://git.savannah.gnu.org/cgit/emacs.git/tree/ChangeLog.android?h=feature/android
+Changelog: https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-30
 Donate: https://my.fsf.org/donate/
 
 Description: |-
@@ -25,13 +25,16 @@ Description: |-
   * A wide range of functionality beyond text editing, including a project planner, mail and news reader, debugger interface, calendar, IRC client, and more;
   * A packaging system for downloading and installing extensions.
 
-  Android notes:
-  * System keyboard can be invoked by tapping on a non read-only buffer;
-  * Permissions are not granted by default, they must be explicitly enabled in system settings menu;
-  * Android version of emacs is built without GNUTLS support;
+  Notes regarding Android support:
+
+  * The on-screen keyboard is automatically invoked when a non read-only buffer is tapped, and the user option `touch-screen-display-keyboard' arranges for it always to be displayed.
+  * `modifier-bar-mode' may be enabled to display a panel of modifier keys beside the tool bar.
+  * Permissions are not granted by default, but must be explicitly enabled in system settings menu.
+  * External storage permissions may be granted by observing the instructions in the banner that is displayed on the splash screen if they are denied.
+  * Answers to other questions probably exist in the Android appendix to the bundled Emacs manual.  Read it!
 
 RepoType: git
-Repo: git://git.savannah.gnu.org/emacs.git
+Repo: https://git.savannah.gnu.org/git/emacs.git
 
 Builds:
   - versionName: 30.0.50
@@ -570,6 +573,147 @@ Builds:
       - make all
     ndk: r25c
 
+  - versionName: 30.0.93
+    versionCode: 300093010
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git nasm
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 64
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-androideabi22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093011
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 64
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093012
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git nasm
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 64
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
+  - versionName: 30.0.93
+    versionCode: 300093013
+    commit: ea3a937176fbf038a6f6f5cc7b47fb8cecdd894a
+    timeout: 15000
+    sudo:
+      - apt-get update
+      - apt-get install -y make gcc m4 libncurses-dev autoconf texinfo g++ git
+    output: java/emacs-*.apk
+    prebuild:
+      - sdkmanager 'platforms;android-34' 'build-tools;34.0.0' 'ndk;26.3.11579264'
+      - sed -i 's/android:versionCode="[^"]*"/android:versionCode="$$VERCODE$$"/'
+        java/AndroidManifest.xml.in
+    scanignore:
+      - admin/charsets/glibc/*.gz
+      - build-aux/dir_top
+    scandelete:
+      - test
+      - etc/e
+    build:
+      - cd etc/e
+      - tic -o ../ ./eterm-color.ti
+      - cd -
+      - mkdir emacs_deps
+      - cd emacs_deps
+      - /bin/bash ../admin/download-android-deps.sh 64
+      - cd ..
+      - ./autogen.sh
+      - export deps=`pwd`/emacs_deps
+      - ./configure --with-android=$$SDK$$/platforms/android-34/android.jar
+         ANDROID_CC=$$NDK$$/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android22-clang
+         SDK_BUILD_TOOLS=$$SDK$$/build-tools/34.0.0 --without-android-debug
+         --with-ndk-path="`cat $deps/search-path.txt`" --with-gif --with-xml2 --with-jpeg --with-png --with-sqlite3 --with-webp --with-gnutls --with-tiff --with-selinux --with-tree-sitter --with-harfbuzz
+      - make all
+    ndk: 26.3.11579264
+
 MaintainerNotes: |-
   Build instructions can be found at:
   https://git.savannah.gnu.org/cgit/emacs.git/tree/java/INSTALL

Where can we get the version code?

configure.ac:

AC_INIT([GNU Emacs], [31.0.50], [bug-gnu-emacs@gnu.org], [],
  [https://www.gnu.org/software/emacs/])
sed -n 's/^AC_INIT(\[GNU Emacs],[	 ]*\[\([^]]*\).*/\1/p' <configure.ac

should extract it.

that’s versionName, we need versionCode too eg. 300093010

In our builds, versionCode is always 30 in order to facilitate unrestricted downgrading between packages of different releases, but the conventions set forth in the maintainer notes provide an easy means of deriving version codes from the version name.

fdroid build (#9116044670) · Jobs · linsui / Data · GitLab The build failed. Any idea?