Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RC] 0.9.2: Docker support, minor fixes, and update coin assets/icons #162

Open
wants to merge 22 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1a84d81
Update coins to SSL config
CharlVS May 3, 2024
2ea0013
Rename references to SSL coin config
CharlVS May 3, 2024
6d0a85d
Prefer SSL, but fall back to TCP if not available.
CharlVS May 3, 2024
d3058fd
Sync latest TCP file from coins repo
CharlVS May 3, 2024
0b01aac
bump target SDK
ca333 May 4, 2024
465c1df
Merge branch 'dev' into fix/coins-ssl-migration
CharlVS May 12, 2024
c6d8697
Bump app build
CharlVS May 12, 2024
28790c0
Merge pull request #136 from KomodoPlatform/fix/coins-ssl-migration
ca333 May 13, 2024
fe814ae
Docker build image and devcontainer config (#147)
takenagain Jul 13, 2024
8ea3586
Feature: allow copy amount on tx details (#158)
DeckerSU Sep 27, 2024
719d59f
Fix orderbook minimum volume calculation (#153)
takenagain Sep 27, 2024
76c57a8
chore(coins): sync coin assets 83794c9 (#159)
takenagain Sep 27, 2024
0b21ebf
Squashed commit of the following: (Sync `master` to `dev`)
CharlVS Dec 19, 2024
b5ef21e
iOS build fixes
CharlVS Dec 19, 2024
b6090d3
Merge branch 'master' into dev
CharlVS Dec 19, 2024
51962fe
improve password validation handling (#152)
mdmohsin7 Dec 19, 2024
e2034d9
improve welcome screen ui (#151)
mdmohsin7 Dec 19, 2024
f549293
Update KDF and coins (#163)
CharlVS Dec 20, 2024
a609f20
limit max_connected to 1 for electrum activation (#164)
takenagain Dec 24, 2024
db3adda
chore: disable trading features (#166)
takenagain Jan 23, 2025
de9db9c
ci(Devcontainers&Codespaces): rename mm2 to kdf (#156)
takenagain Jan 23, 2025
e1fa54a
fix(dex): disable swap slide action and hide orderbooks tab (#167)
takenagain Jan 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
170 changes: 170 additions & 0 deletions .devcontainer/android-dev.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
FROM docker.io/ubuntu:22.04

ARG KDF_BRANCH=main
ENV KDF_DIR=/kdf

# Libz is distributed in the android ndk, but for some unknown reason it is not
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-clang \
CARGO_TARGET_X86_64_LINUX_ANDROID_RUNNER="qemu-x86_64 -cpu qemu64,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt" \
CC_x86_64_linux_android=x86_64-linux-android-clang \
CXX_x86_64_linux_android=x86_64-linux-android-clang++ \
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi21-clang \
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_RUNNER=qemu-arm \
CC_armv7_linux_androideabi=armv7a-linux-androideabi21-clang \
CXX_armv7_linux_androideabi=armv7a-linux-androideabi21-clang++ \
CC_aarch64_linux_android=aarch64-linux-android21-clang \
CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android21-clang \
CC_armv7_linux_androideabi=armv7a-linux-androideabi21-clang \
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi21-clang \
DEP_Z_INCLUDE=/android-ndk/sysroot/usr/include/ \
OPENSSL_STATIC=1 \
OPENSSL_DIR=/openssl \
OPENSSL_INCLUDE_DIR=/openssl/include \
OPENSSL_LIB_DIR=/openssl/lib \
RUST_TEST_THREADS=1 \
HOME=/home/komodo/ \
TMPDIR=/tmp/ \
ANDROID_DATA=/ \
ANDROID_DNS_MODE=local \
ANDROID_ROOT=/system

ENV FLUTTER_VERSION="2.8.1"
ENV FLUTTER_HOME "/home/komodo/.flutter-sdk"
ENV USER="komodo"
ENV USER_ID=1000
ENV PATH $PATH:$FLUTTER_HOME/bin
ENV AR=/usr/bin/llvm-ar-16
ENV CC=/usr/bin/clang-16
ENV PATH="$HOME/.cargo/bin:$PATH"
ENV PATH=$PATH:/android-ndk/bin
ENV ANDROID_HOME=/opt/android-sdk-linux \
LANG=en_US.UTF-8 \
LC_ALL=en_US.UTF-8 \
LANGUAGE=en_US:en

ENV ANDROID_SDK_ROOT=$ANDROID_HOME \
PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator

# comes from https://developer.android.com/studio/#command-tools
ENV ANDROID_SDK_TOOLS_VERSION=11076708

# https://developer.android.com/studio/releases/build-tools
ENV ANDROID_PLATFORM_VERSION=34
ENV ANDROID_BUILD_TOOLS_VERSION=34.0.0

# https://developer.android.com/ndk/downloads
ENV ANDROID_NDK_VERSION=26.3.11579264

RUN apt update && apt install -y sudo && \
useradd -u $USER_ID -m $USER && \
usermod -aG sudo $USER && \
echo "$USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

USER $USER

RUN sudo apt-get update -y && \
sudo apt-get install -y --no-install-recommends \
ca-certificates \
build-essential \
libssl-dev \
cmake \
llvm-dev \
libclang-dev \
lld \
gcc \
libc6-dev \
jq \
make \
pkg-config \
git \
automake \
libtool \
m4 \
autoconf \
make \
file \
curl \
wget \
gnupg \
software-properties-common \
lsb-release \
libudev-dev \
zip unzip \
binutils && \
sudo apt-get clean

RUN sudo ln -s /usr/bin/python3 /bin/python &&\
sudo curl --output llvm.sh https://apt.llvm.org/llvm.sh && \
sudo chmod +x llvm.sh && \
sudo ./llvm.sh 16 && \
sudo rm ./llvm.sh && \
sudo ln -s /usr/bin/clang-16 /usr/bin/clang && \
PROTOC_ZIP=protoc-25.3-linux-x86_64.zip && \
sudo curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v25.3/$PROTOC_ZIP && \
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc && \
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*' && \
sudo rm -f $PROTOC_ZIP && \
sudo mkdir $KDF_DIR && \
sudo chown -R $USER:$USER $KDF_DIR

RUN PATH="$HOME/.cargo/bin:$PATH" && \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \
export PATH="$HOME/.cargo/bin:$PATH" && \
sudo chown -R $USER:$USER $HOME/.cargo && \
rustup toolchain install nightly-2023-06-01 --no-self-update --profile=minimal && \
rustup default nightly-2023-06-01 && \
rustup target add aarch64-linux-android && \
rustup target add armv7-linux-androideabi && \
sudo apt install -y python3 python3-pip git curl nodejs python3-venv sudo && \
git clone https://github.com/KomodoPlatform/komodo-defi-framework.git $KDF_DIR && \
cd $KDF_DIR && \
git fetch --all && \
git checkout origin/$KDF_BRANCH && \
if [ "$(uname -m)" = "x86_64" ]; then \
bash ./scripts/ci/android-ndk.sh x86 23; \
elif [ "$(uname -m)" = "aarch64" ]; then \
bash ./scripts/ci/android-ndk.sh arm64 23; \
else \
echo "Unsupported architecture"; \
exit 1; \
fi

RUN set -e -o xtrace \
&& cd /opt \
&& sudo chown -R $USER:$USER /opt \
&& sudo apt-get update \
&& sudo apt-get install -y jq \
openjdk-17-jdk \
wget zip unzip git openssh-client curl bc software-properties-common build-essential \
ruby-full ruby-bundler libstdc++6 libpulse0 libglu1-mesa locales lcov \
libsqlite3-dev --no-install-recommends \
# for x86 emulators
libxtst6 libnss3-dev libnspr4 libxss1 libatk-bridge2.0-0 libgtk-3-0 libgdk-pixbuf2.0-0 \
&& sudo rm -rf /var/lib/apt/lists/* \
&& sudo sh -c 'echo "en_US.UTF-8 UTF-8" > /etc/locale.gen' \
&& sudo locale-gen \
&& sudo update-locale LANG=en_US.UTF-8 \
&& wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip -O android-sdk-tools.zip \
&& mkdir -p ${ANDROID_HOME}/cmdline-tools/ \
&& unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
&& mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
&& sudo chown -R $USER:$USER $ANDROID_HOME \
&& rm android-sdk-tools.zip \
&& yes | sdkmanager --licenses \
&& sdkmanager platform-tools \
&& git config --global user.email "[email protected]" \
&& git config --global user.name "Komodo Platform" \
&& yes | sdkmanager \
"platforms;android-$ANDROID_PLATFORM_VERSION" \
"build-tools;$ANDROID_BUILD_TOOLS_VERSION"

RUN git clone https://github.com/flutter/flutter.git ${FLUTTER_HOME} \
&& cd ${FLUTTER_HOME} \
&& git fetch \
&& git checkout tags/${FLUTTER_VERSION} \
&& flutter config --no-analytics \
&& flutter precache \
&& yes "y" | flutter doctor --android-licenses \
&& flutter doctor \
&& flutter update-packages
24 changes: 24 additions & 0 deletions .devcontainer/dev-setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

set -e

sudo git config core.fileMode false
sudo chmod -R u+rwx /home/komodo/workspace
sudo chown -R komodo:komodo /home/komodo/workspace
flutter pub get

curl -o assets/coins.json https://raw.githubusercontent.com/KomodoPlatform/coins/master/coins
curl -o assets/coins_config_tcp.json https://raw.githubusercontent.com/KomodoPlatform/coins/master/utils/coins_config_tcp.json
mkdir -p android/app/src/main/cpp/libs/armeabi-v7a
mkdir -p android/app/src/main/cpp/libs/arm64-v8a

cd /kdf
export PATH="$HOME/.cargo/bin:$PATH"
export PATH=$PATH:/android-ndk/bin
CC_aarch64_linux_android=aarch64-linux-android21-clang CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android21-clang cargo rustc --target=aarch64-linux-android --lib --release --crate-type=staticlib --package mm2_bin_lib
CC_armv7_linux_androideabi=armv7a-linux-androideabi21-clang CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi21-clang cargo rustc --target=armv7-linux-androideabi --lib --release --crate-type=staticlib --package mm2_bin_lib
mv target/aarch64-linux-android/release/libkdflib.a target/aarch64-linux-android/release/libmm2.a
mv target/armv7-linux-androideabi/release/libkdflib.a target/armv7-linux-androideabi/release/libmm2.a

mv /kdf/target/aarch64-linux-android/release/libmm2.a /home/komodo/workspace/android/app/src/main/cpp/libs/arm64-v8a/libmm2.a
mv /kdf/target/armv7-linux-androideabi/release/libmm2.a /home/komodo/workspace/android/app/src/main/cpp/libs/armeabi-v7a/libmm2.a
17 changes: 17 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "flutter_docker",
"context": "..",
"dockerFile": "android-dev.dockerfile",
"remoteUser": "komodo",
"postAttachCommand": "sh .devcontainer/dev-setup.sh",
"runArgs": [
"--privileged"
],
"workspaceMount": "source=${localWorkspaceFolder},target=/home/komodo/workspace,type=bind,consistency=delegated",
"workspaceFolder": "/home/komodo/workspace",
"hostRequirements": {
"cpus": 4,
"memory": "16gb",
"storage": "32gb"
}
}
46 changes: 46 additions & 0 deletions .docker/android-apk-build.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
FROM komodo/kdf-android:latest AS build

RUN cd /app && \
rustup default nightly-2023-06-01 && \
rustup target add aarch64-linux-android && \
rustup target add armv7-linux-androideabi && \
export PATH=$PATH:/android-ndk/bin && \
CC_aarch64_linux_android=aarch64-linux-android21-clang CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android21-clang cargo rustc --target=aarch64-linux-android --lib --release --crate-type=staticlib --package mm2_bin_lib && \
CC_armv7_linux_androideabi=armv7a-linux-androideabi21-clang CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi21-clang cargo rustc --target=armv7-linux-androideabi --lib --release --crate-type=staticlib --package mm2_bin_lib && \
mv target/aarch64-linux-android/release/libkdflib.a target/aarch64-linux-android/release/libmm2.a && \
mv target/armv7-linux-androideabi/release/libkdflib.a target/armv7-linux-androideabi/release/libmm2.a

FROM komodo/android-sdk:34 AS final

ENV FLUTTER_VERSION="2.8.1"
ENV FLUTTER_HOME="/home/komodo/.flutter-sdk"
ENV USER="komodo"
ENV PATH=$PATH:$FLUTTER_HOME/bin
ENV ANDROID_AARCH64_LIB=android/app/src/main/cpp/libs/arm64-v8a
ENV ANDROID_AARCH64_LIB_SRC=/app/target/aarch64-linux-android/release/libmm2.a
ENV ANDROID_ARMV7_LIB=android/app/src/main/cpp/libs/armeabi-v7a
ENV ANDROID_ARMV7_LIB_SRC=/app/target/armv7-linux-androideabi/release/libmm2.a

USER $USER

WORKDIR /app
COPY --chown=$USER:$USER . .

RUN rm -f assets/coins.json && rm -f assets/coins_config.json && \
sudo rm -rf build/* && \
mkdir -p build && \
curl -o assets/coins.json https://raw.githubusercontent.com/KomodoPlatform/coins/master/coins && \
curl -o assets/coins_config.json https://raw.githubusercontent.com/KomodoPlatform/coins/master/utils/coins_config.json && \
mkdir -p android/app/src/main/cpp/libs/armeabi-v7a && \
mkdir -p android/app/src/main/cpp/libs/arm64-v8a && \
git clone https://github.com/flutter/flutter.git ${FLUTTER_HOME} && \
cd ${FLUTTER_HOME} && \
git fetch && \
git checkout tags/2.8.1

COPY --from=build --chown=$USER:$USER ${ANDROID_AARCH64_LIB_SRC} ${ANDROID_AARCH64_LIB}
COPY --from=build --chown=$USER:$USER ${ANDROID_ARMV7_LIB_SRC} ${ANDROID_ARMV7_LIB}

RUN flutter config --no-analytics \
&& yes "y" | flutter doctor --android-licenses \
&& flutter doctor
63 changes: 63 additions & 0 deletions .docker/android-sdk.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
FROM docker.io/ubuntu:22.04

# Credit to Cirrus Labs for the original Dockerfile
# LABEL org.opencontainers.image.source=https://github.com/cirruslabs/docker-images-android

ENV USER="komodo"
ENV USER_ID=1000

RUN apt update && apt install -y sudo && \
useradd -u $USER_ID -m $USER && \
usermod -aG sudo $USER && \
echo "$USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

USER $USER

ENV ANDROID_HOME=/opt/android-sdk-linux \
LANG=en_US.UTF-8 \
LC_ALL=en_US.UTF-8 \
LANGUAGE=en_US:en

ENV ANDROID_SDK_ROOT=$ANDROID_HOME \
PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator

# comes from https://developer.android.com/studio/#command-tools
ENV ANDROID_SDK_TOOLS_VERSION=11076708

# https://developer.android.com/studio/releases/build-tools
ENV ANDROID_PLATFORM_VERSION=34
ENV ANDROID_BUILD_TOOLS_VERSION=34.0.0

# https://developer.android.com/ndk/downloads
ENV ANDROID_NDK_VERSION=26.3.11579264

RUN set -o xtrace \
&& sudo chown -R $USER:$USER /opt \
&& cd /opt \
&& sudo apt-get update \
&& sudo apt-get install -y jq openjdk-17-jdk \
wget zip unzip git openssh-client curl bc software-properties-common build-essential \
ruby-full ruby-bundler libstdc++6 libpulse0 libglu1-mesa locales lcov libsqlite3-dev --no-install-recommends \
# for x86 emulators
libxtst6 libnss3-dev libnspr4 libxss1 libatk-bridge2.0-0 libgtk-3-0 libgdk-pixbuf2.0-0 \
&& sudo rm -rf /var/lib/apt/lists/* \
&& sh -c 'echo "en_US.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen' \
&& sudo locale-gen \
&& sudo update-locale LANG=en_US.UTF-8 \
&& wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip -O android-sdk-tools.zip \
&& mkdir -p ${ANDROID_HOME}/cmdline-tools/ \
&& unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
&& mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
&& rm android-sdk-tools.zip \
&& yes | sdkmanager --licenses \
&& sdkmanager platform-tools \
&& sudo mkdir -p /root/.android \
&& sudo chown -R $USER:$USER /root \
&& touch /root/.android/repositories.cfg \
&& git config --global user.email "[email protected]" \
&& git config --global user.name "Komodo Platform" \
&& yes | sdkmanager \
"platforms;android-$ANDROID_PLATFORM_VERSION" \
"build-tools;$ANDROID_BUILD_TOOLS_VERSION" \
&& yes | sdkmanager "ndk;$ANDROID_NDK_VERSION" \
&& sudo chown -R $USER:$USER $ANDROID_HOME
24 changes: 24 additions & 0 deletions .docker/build_apk_release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

set -eu

# Git branch of Komodo DeFi Framework to build
BRANCH=${1:-main}
# Enable screenshots (disabled by default for security, but can be useful during testing)
ALLOW_SCREENSHOTS=${2:-false}

# Build KDF libraries
docker build -f .docker/kdf-android-build.dockerfile . -t komodo/kdf-android --build-arg KDF_BRANCH=${BRANCH}
# Setup Android SDK
docker build -f .docker/android-sdk.dockerfile . -t komodo/android-sdk:34
# Prepare coins and other dependencies
docker build -f .docker/android-apk-build.dockerfile . -t komodo/komodo-wallet-mobile
# Clean projects won't have a build directory, so create it if it doesn't exist
mkdir -p ./build

FLUTTER_BUILD_COMMAND="flutter pub get && flutter build apk --release"
if [ "$ALLOW_SCREENSHOTS" == "true" ]; then
FLUTTER_BUILD_COMMAND+=" --dart-define=screenshot=true"
fi

docker run --rm -v ./build:/app/build komodo/komodo-wallet-mobile:latest bash -c "$FLUTTER_BUILD_COMMAND"
28 changes: 28 additions & 0 deletions .docker/build_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"api": {
"release_tag": "v2.3.0-beta",
"use_latest_release": false,
"github_repository": "https://github.com/KomodoPlatform/komodo-defi-framework",
"platforms": {
"ios": {
"keywords": [
"ios",
"aarch64"
],
"path": "ios"
},
"android-armv7": {
"keywords": [
"android-armv7"
],
"path": "android/app/src/main/cpp/libs/armeabi-v7a"
},
"android-aarch64": {
"keywords": [
"android-aarch64"
],
"path": "android/app/src/main/cpp/libs/arm64-v8a"
}
}
}
}
Loading