chore: add reproducible build verification script - #1684
Conversation
|
@claude review this PR |
|
Claude finished @BullishNode's task in 53s —— View job Reviewing PR #1684
Review SummaryThis PR adds a comprehensive reproducible build verification script. The implementation is well-structured and follows WalletScrutiny's standards. Below are my findings: ✅ Strengths
|
|
Getting the actual |
@i5hi Rather than publishing the dotenv, because we may need to have some hidden values in the future anyway, we could get rid of the dotenv and replace it by migrating the values to the secure storage or even to an encrypted sqlite |
| # Create Dockerfile | ||
| # ================= | ||
|
|
||
| create_dockerfile() { |
There was a problem hiding this comment.
Creating the Dockerfile from a concatenated string is hard to maintain; we should update the existing Dockerfile in the repository instead.
7248aaa to
69a516c
Compare
|
Converting it to draft, so that I can check the latest changes I am about to push before marking it ready for review |
08db1d0 to
fcf43fd
Compare
|
@claude any suggestions on this PR ? |
|
@claude review once now, some things have been updated |
|
Claude finished @basantagoswami's task in 1m 18s —— View job Reviewing PR #1684 (Updated)
Review SummaryThe PR has improved significantly since the last review. Key improvements include:
✅ Addressed Issues from Previous Review
|
|
@claude please review again. things have changed again |
|
Claude finished @basantagoswami's task in 1m 23s —— View job Reviewing PR #1684 (Third Review)
Review SummaryExcellent progress! The PR has been substantially improved since the last review. The script is now much cleaner (~464 lines vs 1000+), and all major issues from previous reviews have been addressed. Addressed Issues from Previous Reviews
New Improvements
Remaining Minor Items1. TODO for SHA256 checksums (
|
- Remove sudo entirely; all privileged setup done as root before USER switch - Consolidate all apt installs into a single RUN block including openjdk-21-jdk - Remove unused packages: zip, software-properties-common - Replace wget with curl throughout - Rename USER to APP_USER to avoid shadowing the standard Linux variable - Move all ENV declarations to the top; derive HOME from APP_USER - Fix RUSTFLAGS hardcoded /home/docker path to use $HOME - Merge Rust install, verification, and rustup target adds into one RUN - Merge Android SDK setup and sdkmanager calls into one RUN - Copy directly into /app instead of staging directory - Remove redundant fvm flutter clean on fresh clone - Add ENV_SOURCE arg to control .env origin (template or local) - Add FAKE_KEYSTORE arg with secret mount support for production signing - Update makefile docker-build to expose all build args as overridable variables
…ator and add .rustup remap
…ld timestamp OpenSSL embeds a wall-clock build timestamp in compiled binaries, causing .so differences between Docker builds run at different times. Setting SOURCE_DATE_EPOCH to the latest git commit timestamp fixes this in both the Dockerfile and the makefile build target.
… Dockerfile Root Dockerfile - Remove SOURCE/VERSION args; always build from local source - Fix ENV_SOURCE=local branch which was a no-op (cp file to itself) reproducibility/Dockerfile - Add --platform=linux/amd64; upgrade Java 17 -> 21 - Replace wget with curl; drop wget from apt installs - Remove apksigner and Android SDK setup — only used for informational output that never affected the verdict - Merge apktool and bundletool RUN layers reproducibility/verify_build.sh - Move all validation (args, git tag check, required tools) before any work - Add --yes flag to skip interactive prompts for CI/automation - Replace wget with curl; replace grep -c "^" with wc -l - Use container_name consistently; get commit hash from local git instead of spinning up a container - Write RESULTS.md to workspace with verdict, metadata, and full diff
…en --apk is provided, skip tag check for local APK verification
2428d55 to
3aa3424
Compare
I'm trying to upgrade Mac to 26+ in order to see if it fixes the podman bug. Switching to arm64 will fail because flutter does not embed some binary for arm64 Linux logs: Mac logs: |
Adds a reproducibility testing script to the reproducibility directory. I took the script developed by xrviv for testing v6.2.3 from walletscrutiny.com/android/com.bullbitcoin.mobile, and did some modifications
etc
#1390 mentions an issue related to obfuscation, which has been fixed in a previous PR, and Rust binaries were already built deterministically. This script should give you complete reproducibility of the app found on Google Play