Skip to content

Commit 8924a33

Browse files
committed
init
0 parents  commit 8924a33

File tree

1,701 files changed

+125211
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,701 files changed

+125211
-0
lines changed

.devcontainer/dev-setup.sh

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
3+
# Uncomment this to fail on the first error. This is useful to debug the script.
4+
# However, it is not recommended for production.
5+
# set -e
6+
7+
sudo git config core.fileMode false
8+
git config --global --add safe.directory /__w/komodo-defi-framework/komodo-defi-framework
9+
sudo chmod -R u+rwx /home/komodo/workspace
10+
sudo chown -R komodo:komodo /home/komodo/workspace
11+
12+
mkdir -p android/app/src/main/cpp/libs/armeabi-v7a
13+
mkdir -p android/app/src/main/cpp/libs/arm64-v8a
14+
mkdir -p web/src/mm2
15+
16+
rustup default stable
17+
cargo install wasm-pack
18+
rustup default nightly-2023-06-01
19+
20+
cd /kdf
21+
export PATH="$HOME/.cargo/bin:$PATH"
22+
export PATH=$PATH:/android-ndk/bin
23+
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
24+
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
25+
wasm-pack build --release mm2src/mm2_bin_lib --target web --out-dir ../../target/target-wasm-release
26+
27+
mv /kdf/target/aarch64-linux-android/release/libkdflib.a /home/komodo/workspace/android/app/src/main/cpp/libs/arm64-v8a/libmm2.a
28+
mv /kdf/target/armv7-linux-androideabi/release/libkdflib.a /home/komodo/workspace/android/app/src/main/cpp/libs/armeabi-v7a/libmm2.a
29+
rm -rf /home/komodo/workspace/web/src/mm2/
30+
cp -R /kdf/target/target-wasm-release/ /home/komodo/workspace/web/src/mm2/
31+
32+
cd /home/komodo/workspace
33+
flutter pub get
34+
npm i && npm run build

.devcontainer/devcontainer.json

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"name": "flutter_docker",
3+
"context": "..",
4+
"dockerFile": "komodo-wallet-android-dev.dockerfile",
5+
"remoteUser": "komodo",
6+
"postAttachCommand": "sh .devcontainer/dev-setup.sh",
7+
"runArgs": [
8+
"--privileged"
9+
],
10+
"workspaceMount": "source=${localWorkspaceFolder},target=/home/komodo/workspace,type=bind,consistency=delegated",
11+
"workspaceFolder": "/home/komodo/workspace",
12+
"hostRequirements": {
13+
"cpus": 4,
14+
"memory": "16gb",
15+
"storage": "32gb"
16+
},
17+
"customizations": {
18+
"vscode": {
19+
"extensions": [
20+
"FelixAngelov.bloc",
21+
"Dart-Code.dart-code",
22+
"Dart-Code.flutter",
23+
"DavidAnson.vscode-markdownlint",
24+
"pflannery.vscode-versionlens",
25+
"GitHub.copilot",
26+
"GitHub.copilot-chat"
27+
],
28+
"settings": {
29+
"terminal.integrated.shell.linux": null,
30+
"extensions.verifySignature": false, // https://github.com/microsoft/vscode/issues/174632
31+
"dart.showTodos": true,
32+
"dart.debugExternalPackageLibraries": true,
33+
"dart.promptToGetPackages": false,
34+
"dart.debugSdkLibraries": false
35+
}
36+
}
37+
}
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
FROM docker.io/ubuntu:22.04
2+
3+
ARG KDF_BRANCH=main
4+
ENV KDF_DIR=/kdf
5+
ENV FLUTTER_VERSION="3.22.3"
6+
ENV FLUTTER_HOME="/home/komodo/.flutter-sdk"
7+
ENV USER="komodo"
8+
ENV USER_ID=1000
9+
ENV PATH=$PATH:$FLUTTER_HOME/bin
10+
ENV AR=/usr/bin/llvm-ar-16
11+
ENV CC=/usr/bin/clang-16
12+
ENV PATH="$HOME/.cargo/bin:$PATH"
13+
ENV PATH=$PATH:/android-ndk/bin
14+
ENV ANDROID_HOME=/opt/android-sdk-linux \
15+
LANG=en_US.UTF-8 \
16+
LC_ALL=en_US.UTF-8 \
17+
LANGUAGE=en_US:en
18+
19+
# Libz is distributed in the android ndk, but for some unknown reason it is not
20+
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
21+
ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-clang \
22+
CARGO_TARGET_X86_64_LINUX_ANDROID_RUNNER="qemu-x86_64 -cpu qemu64,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt" \
23+
CC_x86_64_linux_android=x86_64-linux-android-clang \
24+
CXX_x86_64_linux_android=x86_64-linux-android-clang++ \
25+
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi21-clang \
26+
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_RUNNER=qemu-arm \
27+
CC_armv7_linux_androideabi=armv7a-linux-androideabi21-clang \
28+
CXX_armv7_linux_androideabi=armv7a-linux-androideabi21-clang++ \
29+
CC_aarch64_linux_android=aarch64-linux-android21-clang \
30+
CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android21-clang \
31+
CC_armv7_linux_androideabi=armv7a-linux-androideabi21-clang \
32+
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi21-clang \
33+
DEP_Z_INCLUDE=/android-ndk/sysroot/usr/include/ \
34+
OPENSSL_STATIC=1 \
35+
OPENSSL_DIR=/openssl \
36+
OPENSSL_INCLUDE_DIR=/openssl/include \
37+
OPENSSL_LIB_DIR=/openssl/lib \
38+
RUST_TEST_THREADS=1 \
39+
HOME=/home/komodo/ \
40+
TMPDIR=/tmp/ \
41+
ANDROID_DATA=/ \
42+
ANDROID_DNS_MODE=local \
43+
ANDROID_ROOT=/system
44+
45+
ENV ANDROID_SDK_ROOT=$ANDROID_HOME \
46+
PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator
47+
48+
# comes from https://developer.android.com/studio/#command-tools
49+
ENV ANDROID_SDK_TOOLS_VERSION=11076708
50+
51+
# https://developer.android.com/studio/releases/build-tools
52+
ENV ANDROID_PLATFORM_VERSION=34
53+
ENV ANDROID_BUILD_TOOLS_VERSION=34.0.0
54+
55+
# https://developer.android.com/ndk/downloads
56+
ENV ANDROID_NDK_VERSION=26.3.11579264
57+
58+
RUN apt update && apt install -y sudo && \
59+
useradd -u $USER_ID -m $USER && \
60+
usermod -aG sudo $USER && \
61+
echo "$USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
62+
63+
USER $USER
64+
65+
RUN sudo apt-get update -y && \
66+
sudo apt-get install -y --no-install-recommends \
67+
ca-certificates \
68+
build-essential \
69+
libssl-dev \
70+
cmake \
71+
llvm-dev \
72+
libclang-dev \
73+
lld \
74+
gcc \
75+
libc6-dev \
76+
jq \
77+
make \
78+
pkg-config \
79+
git \
80+
automake \
81+
libtool \
82+
m4 \
83+
autoconf \
84+
make \
85+
file \
86+
curl \
87+
wget \
88+
gnupg \
89+
software-properties-common \
90+
lsb-release \
91+
libudev-dev \
92+
zip unzip \
93+
nodejs npm \
94+
binutils && \
95+
sudo apt-get clean
96+
97+
RUN sudo ln -s /usr/bin/python3 /bin/python &&\
98+
sudo curl --output llvm.sh https://apt.llvm.org/llvm.sh && \
99+
sudo chmod +x llvm.sh && \
100+
sudo ./llvm.sh 16 && \
101+
sudo rm ./llvm.sh && \
102+
sudo ln -s /usr/bin/clang-16 /usr/bin/clang && \
103+
PROTOC_ZIP=protoc-25.3-linux-x86_64.zip && \
104+
sudo curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v25.3/$PROTOC_ZIP && \
105+
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc && \
106+
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*' && \
107+
sudo rm -f $PROTOC_ZIP && \
108+
sudo mkdir $KDF_DIR && \
109+
sudo chown -R $USER:$USER $KDF_DIR
110+
111+
RUN PATH="$HOME/.cargo/bin:$PATH" && \
112+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \
113+
export PATH="$HOME/.cargo/bin:$PATH" && \
114+
sudo chown -R $USER:$USER $HOME/.cargo && \
115+
rustup toolchain install nightly-2023-06-01 --no-self-update --profile=minimal && \
116+
rustup default nightly-2023-06-01 && \
117+
rustup target add aarch64-linux-android && \
118+
rustup target add armv7-linux-androideabi && \
119+
rustup target add wasm32-unknown-unknown && \
120+
sudo apt install -y python3 python3-pip git curl nodejs python3-venv sudo && \
121+
git clone https://github.com/KomodoPlatform/komodo-defi-framework.git $KDF_DIR && \
122+
cd $KDF_DIR && \
123+
git fetch --all && \
124+
git checkout origin/$KDF_BRANCH && \
125+
if [ "$(uname -m)" = "x86_64" ]; then \
126+
bash ./scripts/ci/android-ndk.sh x86 23; \
127+
elif [ "$(uname -m)" = "aarch64" ]; then \
128+
bash ./scripts/ci/android-ndk.sh arm64 23; \
129+
else \
130+
echo "Unsupported architecture: $(uname -m)"; \
131+
exit 1; \
132+
fi
133+
134+
RUN set -e -o xtrace \
135+
&& cd /opt \
136+
&& sudo chown -R $USER:$USER /opt \
137+
&& sudo apt-get update \
138+
&& sudo apt-get install -y jq \
139+
openjdk-17-jdk \
140+
# For Linux build
141+
clang cmake git \
142+
ninja-build pkg-config \
143+
libgtk-3-dev liblzma-dev \
144+
libstdc++-12-dev \
145+
xz-utils \
146+
wget zip unzip git openssh-client curl bc software-properties-common build-essential \
147+
ruby-full ruby-bundler libstdc++6 libpulse0 libglu1-mesa locales lcov \
148+
libsqlite3-dev --no-install-recommends \
149+
# for x86 emulators
150+
libxtst6 libnss3-dev libnspr4 libxss1 libatk-bridge2.0-0 libgtk-3-0 libgdk-pixbuf2.0-0 \
151+
&& sudo rm -rf /var/lib/apt/lists/* \
152+
&& sudo sh -c 'echo "en_US.UTF-8 UTF-8" > /etc/locale.gen' \
153+
&& sudo locale-gen \
154+
&& sudo update-locale LANG=en_US.UTF-8 \
155+
&& wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip -O android-sdk-tools.zip \
156+
&& mkdir -p ${ANDROID_HOME}/cmdline-tools/ \
157+
&& unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
158+
&& mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
159+
&& sudo chown -R $USER:$USER $ANDROID_HOME \
160+
&& rm android-sdk-tools.zip \
161+
&& yes | sdkmanager --licenses \
162+
&& sdkmanager platform-tools \
163+
&& git config --global user.email "[email protected]" \
164+
&& git config --global user.name "Komodo Platform" \
165+
&& yes | sdkmanager \
166+
"platforms;android-$ANDROID_PLATFORM_VERSION" \
167+
"build-tools;$ANDROID_BUILD_TOOLS_VERSION"
168+
169+
RUN git clone https://github.com/flutter/flutter.git ${FLUTTER_HOME} \
170+
&& cd ${FLUTTER_HOME} \
171+
&& git fetch \
172+
&& git checkout tags/$FLUTTER_VERSION \
173+
&& flutter config --no-analytics \
174+
&& flutter precache \
175+
&& yes "y" | flutter doctor --android-licenses \
176+
&& flutter doctor \
177+
&& flutter update-packages

.docker/android-sdk.dockerfile

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
FROM docker.io/ubuntu:22.04
2+
3+
# Credit to Cirrus Labs for the original Dockerfile
4+
# LABEL org.opencontainers.image.source=https://github.com/cirruslabs/docker-images-android
5+
6+
ENV USER="komodo"
7+
ENV USER_ID=1000
8+
9+
RUN apt update && apt install -y sudo && \
10+
useradd -u $USER_ID -m $USER && \
11+
usermod -aG sudo $USER && \
12+
echo "$USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
13+
14+
USER $USER
15+
16+
ENV ANDROID_HOME=/opt/android-sdk-linux \
17+
LANG=en_US.UTF-8 \
18+
LC_ALL=en_US.UTF-8 \
19+
LANGUAGE=en_US:en
20+
21+
ENV ANDROID_SDK_ROOT=$ANDROID_HOME \
22+
PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator
23+
24+
# comes from https://developer.android.com/studio/#command-tools
25+
ENV ANDROID_SDK_TOOLS_VERSION=11076708
26+
27+
# https://developer.android.com/studio/releases/build-tools
28+
ENV ANDROID_PLATFORM_VERSION=34
29+
ENV ANDROID_BUILD_TOOLS_VERSION=34.0.0
30+
31+
# https://developer.android.com/ndk/downloads
32+
ENV ANDROID_NDK_VERSION=26.3.11579264
33+
34+
RUN set -o xtrace \
35+
&& sudo chown -R $USER:$USER /opt \
36+
&& cd /opt \
37+
&& sudo apt-get update \
38+
&& sudo apt-get install -y jq openjdk-17-jdk nodejs npm \
39+
wget zip unzip git openssh-client curl bc software-properties-common build-essential \
40+
ruby-full ruby-bundler libstdc++6 libpulse0 libglu1-mesa locales lcov libsqlite3-dev --no-install-recommends \
41+
# For Linux build
42+
xz-utils \
43+
clang cmake git \
44+
ninja-build pkg-config \
45+
libgtk-3-dev liblzma-dev \
46+
libstdc++-12-dev \
47+
# for x86 emulators
48+
libxtst6 libnss3-dev libnspr4 libxss1 libatk-bridge2.0-0 libgtk-3-0 libgdk-pixbuf2.0-0 \
49+
&& sudo rm -rf /var/lib/apt/lists/* \
50+
&& sh -c 'echo "en_US.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen' \
51+
&& sudo locale-gen \
52+
&& sudo update-locale LANG=en_US.UTF-8 \
53+
&& wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip -O android-sdk-tools.zip \
54+
&& mkdir -p ${ANDROID_HOME}/cmdline-tools/ \
55+
&& unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
56+
&& mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
57+
&& rm android-sdk-tools.zip \
58+
&& yes | sdkmanager --licenses \
59+
&& sdkmanager platform-tools \
60+
&& sudo mkdir -p /root/.android \
61+
&& sudo chown -R $USER:$USER /root \
62+
&& touch /root/.android/repositories.cfg \
63+
&& git config --global user.email "[email protected]" \
64+
&& git config --global user.name "Komodo Platform" \
65+
&& yes | sdkmanager \
66+
"platforms;android-$ANDROID_PLATFORM_VERSION" \
67+
"build-tools;$ANDROID_BUILD_TOOLS_VERSION" \
68+
&& yes | sdkmanager "ndk;$ANDROID_NDK_VERSION" \
69+
&& sudo chown -R $USER:$USER $ANDROID_HOME

.docker/build.sh

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/bash
2+
3+
DEFAULT_BUILD_TARGET="web"
4+
DEFAULT_BUILD_MODE="release"
5+
6+
if [ "$#" -eq 0 ]; then
7+
BUILD_TARGET=$DEFAULT_BUILD_TARGET
8+
BUILD_MODE=$DEFAULT_BUILD_MODE
9+
elif [ "$#" -eq 2 ]; then
10+
BUILD_TARGET=$1
11+
BUILD_MODE=$2
12+
else
13+
echo "Usage: $0 [<build_target> <build_mode>]\nE.g. $0 web release"
14+
exit 1
15+
fi
16+
17+
echo "Building with target: $BUILD_TARGET, mode: $BUILD_MODE"
18+
19+
if [ "$(uname)" == "Darwin" ]; then
20+
PLATFORM_FLAG="--platform linux/amd64"
21+
else
22+
PLATFORM_FLAG=""
23+
fi
24+
25+
docker build $PLATFORM_FLAG -f .docker/kdf-android.dockerfile . -t komodo/kdf-android --build-arg KDF_BRANCH=main
26+
docker build $PLATFORM_FLAG -f .docker/android-sdk.dockerfile . -t komodo/android-sdk:34
27+
docker build $PLATFORM_FLAG -f .docker/komodo-wallet-android.dockerfile . -t komodo/komodo-wallet
28+
29+
# Use the provided arguments for flutter build
30+
docker run $PLATFORM_FLAG --rm -v ./build:/app/build \
31+
-u $(id -u):$(id -g) \
32+
komodo/komodo-wallet:latest bash -c "flutter pub get && flutter analyze && flutter build $BUILD_TARGET --$BUILD_MODE || flutter build $BUILD_TARGET --$BUILD_MODE"

0 commit comments

Comments
 (0)