summaryrefslogtreecommitdiff
path: root/fedora-android-build-setup.md
diff options
context:
space:
mode:
authorClaude Sonnet 5 <noreply@anthropic.com>2026-09-23 22:52:38 -1000
committerClaude Sonnet 5 <noreply@anthropic.com>2026-09-23 22:52:38 -1000
commita58e975d08a29500dd394a91208f471855135662 (patch)
tree915ce215665e84b8612c6bdc642f9540f68f0432 /fedora-android-build-setup.md
Fedora laptop's -workspace memory: listen/feedreader/podkit context
Adds workspace-layout.md, listen-handover-2026-09-21.md, and fedora-android-build-setup.md -- built on the fedora laptop, no filename overlap with tungsten's existing -workspace memory (doot/claudomator/ feedreader-on-tungsten/marine-cert scope). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sj3CoWEedM56bebByKgNxA
Diffstat (limited to 'fedora-android-build-setup.md')
-rw-r--r--fedora-android-build-setup.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/fedora-android-build-setup.md b/fedora-android-build-setup.md
new file mode 100644
index 0000000..6489ac5
--- /dev/null
+++ b/fedora-android-build-setup.md
@@ -0,0 +1,20 @@
+---
+name: fedora-android-build-setup
+description: "How Android builds (Listen, FeeDreader) were made to work on Peter's Fedora 44 laptop — JDK and SDK location, and two stale-state traps"
+metadata:
+ node_type: memory
+ type: project
+ originSessionId: 0e4bffd6-5847-4b40-9037-6bfb9055e654
+ modified: 2026-09-21T21:30:50.235Z
+---
+
+As of 2026-09-21, on Peter's Fedora 44 laptop, building either `listen` or `feedreader` needed setup beyond the CLI's own Node/npm install:
+
+- **Fedora 44's repos have no `java-21-openjdk-devel`** (only `java-25-openjdk*` and a `java-latest` 27 EA build) — `sudo dnf install java-21-openjdk-devel` fails with "No match for argument". Worse, Java 25 itself can't run Gradle 8.14.3 (the version this repo is pinned to for Chaquopy compatibility, per `listen/CLAUDE.md`): the bundled Kotlin compiler's `JavaVersion.parse` throws `IllegalArgumentException: 25.0.4.1` — a parser bug, not a real incompatibility Gradle could work around.
+- **Fix applied**: downloaded Temurin JDK 21 as a portable tarball from Adoptium (`https://api.adoptium.net/v3/binary/latest/21/ga/linux/x64/jdk/hotspot/normal/eclipse`) into `~/.jdks/jdk-21.0.12.1+1` (no sudo needed), and set `org.gradle.java.home=/home/terst/.jdks/jdk-21.0.12.1+1` in `~/.gradle/gradle.properties` (user-global, untracked — applies to every Gradle project for this user, not just Listen).
+- **No system Android SDK either**: `/opt` isn't writable without sudo, and `/opt/android-sdk` (what both repos' `local.properties` pointed at, a stale value from a previous machine) doesn't exist here. Fix: installed SDK cmdline-tools into `~/Android/Sdk` (Google's `commandlinetools-linux-13114758_latest.zip`), ran `sdkmanager --licenses`, and installed `platform-tools`, `platforms;android-36`, `build-tools;36.0.0`, `ndk;27.2.12479018`. `local.properties` (gitignored, per-machine by design) was updated to `sdk.dir=/home/terst/Android/Sdk`.
+- **Stale `app/build/` from the old machine**: Chaquopy's `extractDebugPythonBuildPackages` failed following a symlink to `/usr/bin/python3.12`, which doesn't exist on this machine (it has 3.14). `app/build/` is gitignored, pure build output — `rm -rf app/build build` and rebuilding resolved it. If this recurs after a repo copy/sync from another machine, the fix is the same: delete the build directory, don't debug the symlink.
+
+**Why this matters**: none of this is written into either repo's CLAUDE.md (correctly — it's machine-specific, not project-specific), so it's easy to silently re-hit and waste a session rediscovering it. If `feedreader` build/test is attempted on this machine and hits the same JDK/SDK/stale-build issues, the fixes above apply identically — check `~/.jdks`, `~/Android/Sdk`, and `~/.gradle/gradle.properties` before reinstalling anything.
+
+**How to apply:** before debugging a Gradle failure on this laptop that looks like a JDK, SDK-location, or Python-symlink problem, check whether this setup is still in place first (`~/.jdks`, `~/Android/Sdk`, `~/.gradle/gradle.properties`) rather than re-deriving the fix from scratch.