add SSO build support & armv7 ndk build support

This commit is contained in:
eventlOwOp
2024-05-13 15:25:10 +08:00
parent 2dc1b755cd
commit d71d225e46
8 changed files with 182 additions and 63 deletions
+40 -31
View File
@@ -18,7 +18,7 @@ jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
@@ -32,53 +32,61 @@ jobs:
repository: zerotier/ZeroTierOne
path: ZeroTierOne
- name: Checkout libnatpmp
uses: actions/checkout@v4
with:
repository: miniupnp/libnatpmp
path: libnatpmp
# Runs a single command using the runners shell
- name: Prepare GCC Toolchain
run: |
sudo apt-get install -qqy gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf g++-aarch64-linux-gnu g++-arm-linux-gnueabihf
rustup target add aarch64-unknown-linux-gnu
- name: Build for aarch64
sudo dpkg --add-architecture arm64
sudo mv build/sources.list /etc/apt/sources.list
sudo apt-get update -qqy
sudo apt-get install -qqy libssl-dev:arm64
- name: Patch ZeroTier for Cross-Compile
run: |
pip3 install toml
python3 build/build_helper.py
- name: Build for Aarch64
run: |
CC=aarch64-linux-gnu-gcc
CXX=aarch64-linux-gnu-g++
cd libnatpmp
make --silent CC=$CC natpmpc-shared
cd ..
cd ZeroTierOne
make --silent -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC=$CC CXX=$CXX LDFLAGS="-L../libnatpmp -s" DEFS="-I../libnatpmp"
mv make-linux.mk.aarch64 make-linux.mk
make clean
make --silent -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC="$CC -w" CXX="$CXX -w" LDFLAGS="-s"
cd ..
mkdir -p magisk/zerotier/lib
cp ZeroTierOne/zerotier-one magisk/zerotier
cd magisk
zip -q -r ../zerotier-magisk-aarch64-gcc.zip .
- name: Build for arm
- name: Build for Aarch64 with SSO
run: |
PATH=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
PATH=`pwd`/libnatpmp:$PATH
NDK_ROOT=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64
CC=arm-linux-gnueabihf-gcc
CXX=arm-linux-gnueabihf-g++
cd libnatpmp
make clean
make CC=$CC natpmpc-shared
cd ..
CC=aarch64-linux-gnu-gcc
CXX=aarch64-linux-gnu-g++
cd ZeroTierOne
make clean
# sed -i "s/armv7ve/armv7a/g" make-linux.mk
make -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC=$CC CXX=$CXX LDFLAGS="-L../libnatpmp -s" DEFS="-I../libnatpmp"
make --silent -j $(nproc) ZT_STATIC=1 ZT_DEBUG=0 CC="$CC -w" CXX="$CXX -w" LDFLAGS="-s"
cd ..
cp ZeroTierOne/zerotier-one magisk/zerotier
cd magisk
zip -q -r ../zerotier-magisk-aarch64-gcc-SSO.zip .
- name: Build for Arm
run: |
CC=arm-linux-gnueabihf-gcc
CXX=arm-linux-gnueabihf-g++
FLAGS="-w -fcompare-debug-second"
cd ZeroTierOne
mv make-linux.mk.arm make-linux.mk
make clean
make --silent -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC="$CC $FLAGS" CXX="$CXX $FLAGS" LDFLAGS="-s"
cd ..
cp ZeroTierOne/zerotier-one magisk/zerotier/
@@ -87,7 +95,7 @@ jobs:
- name: Get Date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Release
uses: softprops/action-gh-release@v2
@@ -95,6 +103,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
zerotier-magisk-aarch64-gcc-SSO.zip
zerotier-magisk-aarch64-gcc.zip
zerotier-magisk-arm-gcc.zip
tag_name: SNAPSHOT-GCC-${{ steps.date.outputs.date }}
@@ -102,5 +111,5 @@ jobs:
draft: false
prerelease: true
- name: Debugging with tmate
uses: mxschmitt/action-tmate@v3.18
# - name: Debugging with tmate
# uses: mxschmitt/action-tmate@v3.18
+32 -25
View File
@@ -48,7 +48,12 @@ jobs:
wget -qO ndk.zip https://dl.google.com/android/repository/android-ndk-$ndk-linux.zip
unzip -qq ndk.zip "android-ndk-$ndk/toolchains/*" && rm ndk.zip -f
- name: Build for aarch64
- name: Patch ZeroTier for Cross-Compile
run: |
pip3 install toml
python3 build/build_helper.py
- name: Build for Aarch64
run: |
PATH=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
NDK_ROOT=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64
@@ -57,10 +62,12 @@ jobs:
CXX=aarch64-linux-android$api_version-clang++
cd libnatpmp
make clean
make --silent CC=$CC natpmpc-shared
cd ..
cd ZeroTierOne
make clean
make --silent -j $(nproc) ZT_DEBUG=0 ZT_SSO_SUPPORTED=0 CC=$CC CXX=$CXX LDFLAGS="-L../libnatpmp" DEFS="-I../libnatpmp -D__GLIBC__=0"
cd ..
@@ -70,37 +77,33 @@ jobs:
cd magisk
zip -q -r ../zerotier-magisk-aarch64-ndk.zip .
# - name: Build for arm
# run: |
# PATH=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
# PATH=`pwd`/libnatpmp:$PATH
# NDK_ROOT=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64
- name: Build for Arm
run: |
PATH=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
NDK_ROOT=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64
# CC=armv7a-linux-androideabi$api_version-clang
# CXX=armv7a-linux-androideabi$api_version-clang++
CC=armv7a-linux-androideabi$api_version-clang
CXX=armv7a-linux-androideabi$api_version-clang++
# cd libnatpmp
# make clean
# make CC=$CC natpmpc-shared
# cd ..
cd libnatpmp
make clean
make CC=$CC natpmpc-shared
cd ..
# cd ZeroTierOne
# make clean
# sed -i "s/armv7ve/armv7a/g" make-linux.mk
# make -j $(nproc) ZT_DEBUG=0 ZT_SSO_SUPPORTED=0 CC=$CC CXX=$CXX LDFLAGS="-L../libnatpmp" DEFS="-I../libnatpmp -D__GLIBC__=0"
# cd ..
cd ZeroTierOne
mv make-linux.mk.arm.ndk make-linux.mk
make clean
make -j $(nproc) ZT_DEBUG=0 ZT_SSO_SUPPORTED=0 CC=$CC CXX=$CXX LDFLAGS="-L../libnatpmp" DEFS="-I../libnatpmp -D__GLIBC__=0"
cd ..
# cp ZeroTierOne/zerotier-one magisk/zerotier/
# cp $NDK_ROOT/sysroot/usr/lib/arm-linux-android/libc++_shared.so magisk/zerotier/lib
# cd magisk
# zip -q -r ../zerotier-magisk-arm-ndk.zip .
# - name: Debugging with tmate
# uses: mxschmitt/action-tmate@v3.18
cp ZeroTierOne/zerotier-one magisk/zerotier/
cp $NDK_ROOT/sysroot/usr/lib/arm-linux-android/libc++_shared.so magisk/zerotier/lib
cd magisk
zip -q -r ../zerotier-magisk-arm-ndk.zip .
- name: Get Date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Release
uses: softprops/action-gh-release@v2
@@ -109,7 +112,11 @@ jobs:
with:
files: |
zerotier-magisk-aarch64-ndk.zip
zerotier-magisk-arm-ndk.zip
tag_name: SNAPSHOT-NDK-${{ steps.date.outputs.date }}
name: SNAPSHOT-NDK-${{ steps.date.outputs.date }}
draft: false
prerelease: true
# - name: Debugging with tmate
# uses: mxschmitt/action-tmate@v3.18
-1
View File
@@ -34,7 +34,6 @@ To restart, execute (in root) `sh /data/adb/zerotier/zerotier.sh restart`; An an
```
/data/adb/zerotier/
| - run/
| | - pid # zerotier-one pid
| | - pipe # pipe to service.sh
| | - daemon.log # service.sh log
| ` - zerotier.log # zerotier-one log
-1
View File
@@ -33,7 +33,6 @@
```
/data/adb/zerotier/
| - run/
| | - pid # zerotier-one pid
| | - pipe # pipe to service.sh
| | - daemon.log # service.sh log
| ` - zerotier.log # zerotier-one log
+80
View File
@@ -0,0 +1,80 @@
import toml
# Patch ZeroTierOne/rustybits/zeroidc/Cargo.toml
# > +ZeroTierOne/rustybits/zeroidc/Cargo.toml
# [dependencies]
# openssl-sys = {version = ">=0.9", features = ["vendored"]}
cargo_toml_path = "ZeroTierOne/rustybits/zeroidc/Cargo.toml"
cargo_toml = toml.load(cargo_toml_path)
cargo_toml['dependencies']['openssl-sys'] = { 'version': ">=0.9", 'features': ["vendored"] }
with open(cargo_toml_path, 'w') as f:
toml.dump(cargo_toml, f)
# -------------------------------------------------------------------------------------------------------
# Patch ZeroTierOne/rustybits/zeroidc/.cargo/config.toml
# > +ZeroTierOne/rustybits/zeroidc/.cargo/config.toml
# [target.armv7-unknown-linux-gnueabihf]
# linker = "arm-linux-gnueabihf-gcc"
# rustflags = ["-C", "target-feature=+crt-static"]
# [target.aarch64-unknown-linux-gnu]
# linker = "aarch64-linux-gnu-gcc"
# rustflags = ["-C", "target-feature=+crt-static"]
config_toml_path = "ZeroTierOne/rustybits/zeroidc/.cargo/config.toml"
config_toml = toml.load(config_toml_path)
config_toml['target']['armv7-unknown-linux-gnueabihf'] = { "linker": "arm-linux-gnueabihf-gcc" }
config_toml['target']['aarch64-unknown-linux-gnu'] = { "linker": "aarch64-linux-gnu-gcc" }
with open(config_toml_path, 'w') as f:
toml.dump(config_toml, f)
# -------------------------------------------------------------------------------------------------------
# Patch make-linux.mk
make_linux_path = 'ZeroTierOne/make-linux.mk'
with open(make_linux_path, 'r') as file:
data = file.read()
patch_aarch64 = data.replace(
'$(ZT_CARGO_FLAGS)', '$(ZT_CARGO_FLAGS) --target aarch64-unknown-linux-gnu --quiet'
).replace(
'rustybits/target/release/libzeroidc.a', 'rustybits/target/aarch64-unknown-linux-gnu/release/libzeroidc.a'
)
patch_arm = data.replace(
"$(shell $(CC) -dumpmachine | cut -d '-' -f 1)", 'armhf'
).replace(
'override CFLAGS+=-mfloat-abi=hard -march=armv6zk -marm -mfpu=vfp -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s',
'override CFLAGS+=-mfloat-abi=hard -march=armv7-a -marm -mfpu=vfp'
).replace(
'override CXXFLAGS+=-mfloat-abi=hard -march=armv6zk -marm -mfpu=vfp -fexceptions -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s',
'override CFLAGS+=-mfloat-abi=hard -march=armv7-a -marm -mfpu=vfp -fexceptions'
)
patch_arm_ndk = data.replace(
"$(shell $(CC) -dumpmachine | cut -d '-' -f 1)", 'armhf'
).replace(
'override CFLAGS+=-mfloat-abi=hard -march=armv6zk -marm -mfpu=vfp -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s',
'override CFLAGS+=-mfloat-abi=hard -march=armv7-a -marm -mfpu=vfp'
).replace(
'override CXXFLAGS+=-mfloat-abi=hard -march=armv6zk -marm -mfpu=vfp -fexceptions -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s',
'override CFLAGS+=-mfloat-abi=hard -march=armv7-a -marm -mfpu=vfp -fexceptions'
)
with open(make_linux_path + '.aarch64', 'w') as file:
file.write(patch_aarch64)
with open(make_linux_path + '.arm', 'w') as file:
file.write(patch_arm)
with open(make_linux_path + '.arm.ndk', 'w') as file:
file.write(patch_arm_ndk)
# Patch ZeroTierOne/osdep/OSUtils.cpp
osutil_path = 'ZeroTierOne/osdep/OSUtils.cpp'
with open(osutil_path, 'r') as file:
data = file.read().replace(
'/var/lib/zerotier-one', '/data/adb/zerotier/home'
)
with open(osutil_path, 'w') as file:
file.write(data)
+23
View File
@@ -0,0 +1,23 @@
# refer to https://tauri.app/v1/guides/building/linux/#cross-compiling-tauri-applications-for-arm-based-devices
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy universe
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates universe
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb [arch=amd64] http://security.ubuntu.com/ubuntu/ jammy-security main restricted
deb [arch=amd64] http://security.ubuntu.com/ubuntu/ jammy-security universe
deb [arch=amd64] http://security.ubuntu.com/ubuntu/ jammy-security multiverse
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy main restricted
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy universe
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates universe
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy multiverse
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates multiverse
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-backports main restricted universe multiverse
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security main restricted
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security universe
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security multiverse
+6 -5
View File
@@ -6,11 +6,13 @@ pipe=/data/adb/zerotier/run/pipe
zerotier_log=/data/adb/zerotier/run/zerotier.log
daemon_log=/data/adb/zerotier/run/daemon.log
network_id_path=/sdcard/Android/zerotier/network_id.txt
temp_output=/data/adb/zerotier/run/temp.out
pid=-1
log() {
t=`date +"%m-%d %H:%M:%S.%3N"`
echo "[$t][$$][L] $1" >> $daemon_log
echo $1 >> $temp_output
}
_stop() {
pid=$(pidof zerotier-one)
@@ -35,7 +37,7 @@ _stop() {
_join() {
nid=$(cat $network_id_path)
./zerotier-cli -D./home join $nid >> $zerotier_log 2>&1
./zerotier-cli join $nid >> $zerotier_log 2>&1
if [ $? -ne 0 ]; then
log "join network failed"
@@ -50,7 +52,7 @@ _join() {
_leave() {
nid=$(cat $network_id_path)
./zerotier-cli -D./home leave $nid >> $zerotier_log 2>&1
./zerotier-cli leave $nid >> $zerotier_log 2>&1
if [ $? -ne 0 ]; then
log "leave network failed"
@@ -62,7 +64,7 @@ _leave() {
return 0
}
__start() {
nohup ./zerotier-one -d home >> $zerotier_log 2>&1 &
nohup ./zerotier-one -d >> $zerotier_log 2>&1 &
sleep 1
@@ -87,8 +89,7 @@ ip rule add from all lookup main pref 1
export LD_LIBRARY_PATH=/data/adb/zerotier/lib
__start
sleep 1
_join
(sleep 20 && _join) &
while true
do
+1
View File
@@ -1,5 +1,6 @@
#!/system/bin/sh
pipe=/data/adb/zerotier/run/pipe
temp_output=/data/adb/zerotier/run/temp.out
if [[ ! -p $pipe ]]; then
echo "daemon not running"
exit 1