samotari / crypto-terminal

CryptoTerminal is an open-source terminal application with which merchants can accept in-person cryptocurrency payments.
https://samotari.github.io/cryptoterminal.eu/
GNU Affero General Public License v3.0
93 stars 57 forks source link

Build failures, how to build APK inside linux container? #356

Open emanuelb opened 2 years ago

emanuelb commented 2 years ago

Tried to build the latest commit and check if the build is reproducible (compare to app downloaded from google-play or github release https://github.com/samotari/crypto-terminal/releases/download/v1.6.0/cryptoterminal-v1_6_0.apk ) & if not what the diff are, but failed to build the app with steps:

Compile with: podman build --rm -t cryptoterminal_build_apk_deb -f Containerfile

FROM debian:sid-slim

RUN set -ex; \
    mkdir -p /usr/share/man/man1/; \
    apt-get update; \
    DEBIAN_FRONTEND=noninteractive apt-get install --yes -o APT::Install-Suggests=false --no-install-recommends \
        npm \
        git \
        g++ \
        make \
        node-gyp \
        openjdk-8-jdk ; \
    rm -rf /var/lib/apt/lists/*; \
    useradd -ms /bin/bash appuser;

USER appuser

ENV NODE_ENV="development" \
    ANDROID_SDK_ROOT="/home/appuser/app/sdk/" \
    ANDROID_HOME="/home/appuser/app/sdk/" \
    JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"

RUN set -ex; \
    mkdir -p "/home/appuser/app/sdk/licenses" "/home/appuser/app/"; \
    printf "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" > "/home/appuser/app/sdk/licenses/android-sdk-license"; \
    cd /home/appuser/app/; \
    git clone https://github.com/samotari/crypto-terminal/;

WORKDIR /home/appuser/app/crypto-terminal/

RUN set -ex; \
    git checkout 73a42c10551f6e5c558404a62038ce15682b9ad8; \    
    npm install; \
    ./node_modules/.bin/cordova telemetry off; \
    npm run build;

Run: podman run --rm --name cryptoterminal_build_apk_deb -ti cryptoterminal_build_apk_deb

in container run:

npm run prepare:android;
npm run android-generate-signing-key;
npm run build:prod;
npm run build:apk; 

which fail with errors:

Discovered saved plugin "cz.blocshop.socketsforcordova". Adding it to the project
Failed to restore plugin "cz.blocshop.socketsforcordova" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin https://github.com/chill117/sockets-for-cordova.git via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.

Failed to restore plugin "cz.blocshop.socketsforcordova" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin https://github.com/chill117/sockets-for-cordova.git via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: npm: Command failed with exit code 235 Error output:
npm ERR! code EISDIR
npm ERR! syscall copyfile
npm ERR! path /home/appuser/app/crypto-terminal/node_modules/sockets-for-cordova
npm ERR! dest /home/appuser/app/crypto-terminal/node_modules/.sockets-for-cordova-jpdlnUaz
npm ERR! errno -21
npm ERR! EISDIR: illegal operation on a directory, copyfile '/home/appuser/app/crypto-terminal/node_modules/sockets-for-cordova' -> '/home/appuser/app/crypto-terminal/node_modules/.sockets-for-cordova-jpdlnUaz'