The issue only manifests when:
The mobile Makefile exports CC=clangWrap.sh (via EnvVariables.mk)
clangWrap.sh has the echo to stdout
Go's linker discovers ar via CombinedOutput() which captures both stdout and stderr
When invoked through the mobile Makefile, CC=clangWrap.sh leaks into the Go build's environment (despite the shell-level CC="$(xcrun ...)" override in the status-go recipe). Go's linker then runs clangWrap.sh --print-prog-name ar, and the echo output to stdout gets combined with clang's actual output, corrupting the ar path.
Removing the echo fixed the issue.
- `mobile/Makefile` -> Added `apk-fdroid` build target, used by
`fdroid/build-app.sh`. F-Droid requires an unsigned APK without Google
Play services.
- `mobile/android/qt6/build.gradle` -> Added F-Droid gradle build
flavor, used during `apk-fdroid` target. Separates F-Droid builds from
Play Store builds and no signing configuration since it's supposed to be
unsigned.
- `mobile/scripts/buildApp.sh` -> Updated to copy F-Droid APK instead
of usual locations from Jenkins build.
- `mobile/scripts/buildOpenSSL.sh` -> Moved from iOS dir, shared
between iOS and F-Droid builds. Reusing the OpenSSL build logic that was
previously iOS-only but is now needed for F-Droid's from-source
requirement.
- `mobile/scripts/Common.mk` -> Updated path to `buildOpenSSL.sh`
which is no longer inside iOS dir.
- `mobile/scripts/openssl-patch.diff` -> Moved from iOS dir, applied
by `buildOpenSSL.sh`, so that the patch is co-located with the script
that uses it.
- `ci/Jenkinsfile.fdroid` -> Had to make a new pipeline script because
integrating this into `ci/Jenkinsfile.android` was causing issues with
the generated `AppImage` and steps had to be fully sequential, so I
figured it's good to separate them out.
- `fdroid/entrypoint-fdroid.sh` -> Docker entrypoint, used by
`fdroid/Dockerfile`. Sets up the container user/permissions before the
F-Droid build starts.
- `fdroid/Dockerfile` -> A minimalistic Docker image for the F-Droid
Jenkins build environment, used by `ci/Jenkinsfile.fdroid`. I didn't add
to existing Qt Android `Dockerfile` because this one only needs a
minimal environment with Docker-in-Docker to run the `fdroidserver` VM.
- `fdroid/build-app.sh` -> Called by `fdroiddata` metadata build step.
Sets up Qt and Android NDK environment, detects `JAVA_HOME`, configures
`Go`/`Nim` env vars, and runs the `make` targets for the F-Droid APK.
- `fdroid/build-openssl.sh` -> F-Droid requires OpenSSL to be built
from source rather than using prebuilt binaries.
- `fdroid/build-qt-android.sh` -> F-Droid requires Qt to be built from
source; this handles the Android cross-compilation.
- `fdroid/build-qt-host.sh` -> Qt's cross-compilation requires host
tools (`moc`, `rcc`, etc.) to be built first.
- `fdroid/cleanup-binaries.sh` -> Removes binaries flagged by `fdroid`
scanner, called by `fdroiddata` metadata `prebuild` step. F-Droid's
scanner rejects repos containing prebuilt binaries in test/vendor
directories.
- `fdroid/cleanup-fdroiddata.sh` -> Removes stale `fdroiddata` clones,
called by `ci/Jenkinsfile.fdroid`. Prevents disk space issues from
accumulating `fdroiddata` clones across builds.
- `fdroid/fdroid-container-build.sh` -> Runs `fdroid build` inside
Docker container, called by `scripts/fdroid-local-build.sh`. Isolates
the build in a container to match F-Droid's official build environment.
- `scripts/fdroid-local-build.sh` -> A handy script to build F-Droid
locally, also called by `ci/Jenkinsfile.fdroid`. Manages the full
lifecycle of cloning `fdroiddata`, launching the `fdroidserver`, and
extracting the output APK.
- `fdroid/generate-keystore.sh` -> Generates a single-use keystore for
signing the F-Droid APK. Sourced by `buildApp.sh` to export signing
credentials into the build environment.
fixes: https://github.com/status-im/status-app/issues/19741
GlobalPlatform crypto needs the legacy providers. While it will potentially work OOTB with android since we're using dynamic linking, for IOS we need to compile with `no-module`. This will bundle the providers in the lib.
- points to `fix-ios-signing-with-fastlane` branch of
`status-jenkins-lib` which provides development certs for PR builds and
distribution certs for release builds.
- adds nix flake to provide ruby dependencies for `fastlane`
- adds config for new build identifier for PRs: `app.status.mobile.pr`
- swaps testflight script with fastlane action
- adds job to build iOS in release
- updates status-go to use nim-sds from
https://github.com/logos-messaging/nim-sds/pull/41
- update status-jenkins-lib to v1.9.30 which provides iOS provisioning
profile and appstore certs.
- builds signed iOS app and pushes to testflight.
- updates testflight metadata with PR link and commit sha it was built
from
- adds `scripts/testflight-changelog.mjs` script used by CI to update PR
metadata.
- set `ITSAppUsesNonExemptEncryption` to `false`
1. Adding AndroidManifest.xml with app icons and splash screen
2. Renaming IOS-build to Status-tablet
3. Update androiddeployqt to run on android-31
4. Adding app icons to IOS
5. Fixing makefile clean, makefile nim_status_client dependencies, makefile DOtherSide lib name
6. Update README.md with latest changes