From bf121e07a459783f163966434504afe827ee0009 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 13 Apr 2024 10:51:02 -0400 Subject: [PATCH 1/4] workflows: Correct build reproducibility - REPRODUCIBLE_BUILD needs to be a string - Fetch all history to generate versionCode correctly --- .forgejo/workflows/build-debug.yml | 1 + .forgejo/workflows/release.yml | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/build-debug.yml b/.forgejo/workflows/build-debug.yml index 80b0d8e..1dcc692 100644 --- a/.forgejo/workflows/build-debug.yml +++ b/.forgejo/workflows/build-debug.yml @@ -14,6 +14,7 @@ jobs: uses: https://gitea.angry.im/actions/checkout@v3 with: submodules: recursive + fetch-depth: 0 - name: Decode Secret Signing Configuration uses: https://gitea.angry.im/actions/base64-to-file@v1 diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index 529a6d8..e89323a 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -4,7 +4,7 @@ on: env: # Enable reproducibility-related build system workarounds - REPRODUCIBLE_BUILD: true + REPRODUCIBLE_BUILD: 'true' jobs: release: @@ -17,6 +17,7 @@ jobs: uses: https://gitea.angry.im/actions/checkout@v3 with: submodules: recursive + fetch-depth: 0 - name: Decode Secret Signing Configuration uses: https://gitea.angry.im/actions/base64-to-file@v1 From 03e63805704d728c29484d401ce0bbf423b243af Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 13 Apr 2024 11:33:00 -0400 Subject: [PATCH 2/4] Ditch REPRODUCIBLE_BUILD flag and set all prefix maps unconditionally --- .forgejo/workflows/release.yml | 4 ---- libs/lpac-jni/build.gradle.kts | 11 +++++------ 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index e89323a..650e95b 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -2,10 +2,6 @@ on: push: tags: '*' -env: - # Enable reproducibility-related build system workarounds - REPRODUCIBLE_BUILD: 'true' - jobs: release: runs-on: [docker, android-app-certs] diff --git a/libs/lpac-jni/build.gradle.kts b/libs/lpac-jni/build.gradle.kts index 313bf5b..b50a953 100644 --- a/libs/lpac-jni/build.gradle.kts +++ b/libs/lpac-jni/build.gradle.kts @@ -15,12 +15,11 @@ android { externalNativeBuild { ndkBuild { - if (System.getenv("REPRODUCIBLE_BUILD") != "true") { - arguments("-j4") - } else { - arguments("-j1") - cFlags("-fmacro-prefix-map=${project.projectDir.toString()}=/fake/path/") - } + cFlags( + "-fmacro-prefix-map=${project.projectDir.toString()}=/fake/path/", + "-fdebug-prefix-map=${project.projectDir.toString()}=/fake/path/", + "-ffile-prefix-map=${project.projectDir.toString()}=/fake/path/" + ) } } } From 1f6bad422274c48ec9ddcf7eaff905557244f95b Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 13 Apr 2024 15:05:34 -0400 Subject: [PATCH 3/4] app-unpriv: Set ndkVersion as well for stripping Otherwise, the stripping step always fails in CI builds. This breaks reproducibility as debug info contains path to NDK. --- app-unpriv/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/app-unpriv/build.gradle.kts b/app-unpriv/build.gradle.kts index b664808..f1aa79d 100644 --- a/app-unpriv/build.gradle.kts +++ b/app-unpriv/build.gradle.kts @@ -18,6 +18,7 @@ apply { android { namespace = "im.angry.easyeuicc" compileSdk = 34 + ndkVersion = "26.1.10909125" defaultConfig { applicationId = "im.angry.easyeuicc" From 0f655f1f1fd4a722a52e5445f1fdffed1ed9744f Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 13 Apr 2024 15:15:20 -0400 Subject: [PATCH 4/4] workflows: Save debug symbols for releases --- .forgejo/workflows/release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index 650e95b..f35393d 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -34,6 +34,9 @@ jobs: - name: Build Release APK (Unprivileged / EasyEUICC only) run: ./gradlew --no-daemon :app-unpriv:assembleRelease + - name: Copy Debug Symbols to Release Path + run: cp app-unpriv/build/outputs/native-debug-symbols/jmpRelease/native-debug-symbols.zip app-unpriv/build/outputs/apk/jmp/release/ + - name: Create Release uses: https://gitea.angry.im/actions/forgejo-release@v1 with: