mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Add cross-platform Linux and macOS binaries (statically compiled with NixPkgs) + wasm artifacts (#621)
* fix build
* nix flake
* nix package
* static musl build env
* make all builds in static env
* GH Actions nightly and static workflows
* deb package
* cmake install {adnl-proxy,blockchain-explorer,create-state,http-proxy,rldp-http-proxy,storage-cli}
* nix flake: add static glibc build variant
* GH Actions: deb-nightly-{musl,glibc_static}, tests-rolling jobs
* rpm package
* build blockchain-explorer
* GH Actions: deb_rpm-nightly: ubuntu-{latest=>22.04}
* crypto/pow-miner: skip install
* ghactions: tests-rolling: show tests run, progress
* ghactions: deb_rpm-nightly: add manual trigger [skip ci]
* nix flake refactor
* find_package=>pkg-config(zlib)
FindZLIB.cmake can't find static zlib prior to CMake 3.24, so use
pkg-config.
* nix old glibc build
* nix aarch64 support
* packages: Populate APT and RPM repos at ton-repo
- {deb,rpm}.sh: Separate build and install dirs
- rpm.sh: Conditionally include lib/
- Accomodate local CI runs w/act
* [skip ci] README packages
* fix aarch64 build -Wnoerror=address
* [skip ci] rpm set releasever
* [skip ci] document local packages upload
* m1 build: gate cpu=apple-m1 by clang version
* packages: Ship musl binaries + old glibc dylibs
* packages: macos build
* nix: bump nixpkgs
* fix windows CI build
* [skip ci] nix: static aarch64 builds
* packages: deb,rpm multiarch
* ghactions: aarch64 musl deb,rpm build
* [skip ci] deb build: deref source links, -x
* [skip ci] nix darwin static build
* [skip ci] nix common hostPkgs
* [skip ci] brew: move formula over to homebrew-ton-repo
* [skip ci] nix fix aarch64-linux build
* [skip ci] ghactions: nix use GITHUB_TOKEN
* [skip ci] Move from ton-repo to gh releases
* [skip ci] ghactions aarch64-darwin self-hosted runner
* [skip ci] ghactions deb,rpm nightly 10h timeout
* [skip ci] fix brew install
fixes
Errno::EACCES: Permission denied @ dir_s_mkdir - /private/tmp/ton-XXX/bin/.brew_home
* [skip ci] ghactions deb,rpm nightly: don't upload ton-packages as we gh release them later
* [skip ci] README: brew instructions
* [skip ci] nightly linux binaries release
* [skip ci] packages: ship macos dylib
* [skip ci] ghactions: Run Windows build nightly, upload to gh releases
* nix: remove defaultPackage, switch to different oldglibc build method
We used to rebuild nixpkgs-stable with old glibc, which broke on aarch64
due to its particular bootstrap toolchain. This just takes nixos 19.09's
version of GCC but new dependencies, sidestepping the issue.
* fix rpm release, add aur release
* fix local (act) ci run
* ghactions: linux-nightly: Print out SSH public keys
* ghactions: bump cachix actions
* nix: default devShell
* [skip ci] rpm,aur: Ship lib
* [skip ci] packages: windows: Remove CMake files from out
* [skip ci] packages: Import chocolatey package
* fixup! fix rpm release, add aur release
* [skip ci] packages: aarch64-linux: build dylib as well
* [skip ci] ghactions: run on self-hosted
* [skip ci] ghactions: windows-nightly: Bump nodejs actions
* [skip ci] nix: Only add Linux packaging tools on Linux
* [skip ci] doc: document direct download binaries in README
* fix tonlib android jni ci
* fixup! fix tonlib android jni ci
* [skip ci] ghactions: Update GH release dates
Errata: doesn't update tags.
* [skip ci] ghactions: Fix racy brew gh release by splitting arch
* initiali commit - binaries only
* fixes
* fixes
* fixes
* fixes
* remove packages dir for now
* add storage-daemon storage-daemon-cli
* fix emulator
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64 sh
* try macos aarch64 sh
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* try macos aarch64
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* disable aarch64 github actions for now
* disable aarch64 github actions for now
* trigger all GH actions
* trigger all GH actions 2
* trigger all GH actions 3
* trigger all GH actions 4
* trigger all GH actions 5
* put back rldp-http-proxy to win build
* put back rldp-http-proxy to win build
* dont use pkgConfig for zlib
* fix zlib_library
* use BUILD_SHARED_LIBS flag for static compilation
* test 1
* test 2
* add wasm binaries to release.
test 3
* add simple binaries' execution test
* build emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten, 2
* build and add into artifacts wasm tlbc and emulator-emscripten, 3
* build and add into artifacts wasm tlbc and emulator-emscripten, 4
* build emulator-emscripten with static libs
* minor nix mac aarch64 fix
* add single artifacts to release
* bypass $repo to Dockerfile
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add more artifacts to release; remove compilation against Ubuntu 18.04.
* retrieve GITHUB_TOKEN for ton-blockchain/ton
* remove binary check for arm64
---------
Co-authored-by: tonthemoon <tonthemoon@mailbox.org>
This commit is contained in:
parent
470b97fa2c
commit
5a47495d87
39 changed files with 858 additions and 180 deletions
56
.github/script/fift-func-wasm-build-ubuntu.sh
vendored
56
.github/script/fift-func-wasm-build-ubuntu.sh
vendored
|
|
@ -1,50 +1,48 @@
|
|||
# The script build funcfift compiler to WASM
|
||||
# The script builds funcfift compiler to WASM
|
||||
|
||||
# dependencies:
|
||||
#sudo apt-get install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs
|
||||
#sudo apt-get install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs libevent-dev
|
||||
|
||||
export CC=$(which clang)
|
||||
export CXX=$(which clang++)
|
||||
export CCACHE_DISABLE=1
|
||||
|
||||
cd ../..
|
||||
rm -rf openssl zlib emsdk build
|
||||
echo `pwd`
|
||||
|
||||
git clone https://github.com/openssl/openssl.git
|
||||
cd openssl
|
||||
git checkout OpenSSL_1_1_1j
|
||||
|
||||
./config
|
||||
make -j4
|
||||
|
||||
make -j16
|
||||
OPENSSL_DIR=`pwd`
|
||||
|
||||
cd ..
|
||||
|
||||
git clone https://github.com/madler/zlib.git
|
||||
cd zlib
|
||||
ZLIB_DIR=`pwd`
|
||||
|
||||
cd ..
|
||||
|
||||
# clone ton repo
|
||||
git clone --recursive https://github.com/the-ton-tech/ton-blockchain.git
|
||||
|
||||
# only to generate auto-block.cpp
|
||||
|
||||
cd ton-blockchain
|
||||
git pull
|
||||
git checkout 1566a23b2bece49fd1de9ab2f35e88297d22829f
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so ..
|
||||
make -j4 fift
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so -DTON_USE_ABSEIL=OFF ..
|
||||
|
||||
test $? -eq 0 || { echo "Can't configure TON build"; exit 1; }
|
||||
|
||||
|
||||
ninja fift smc-envelope
|
||||
|
||||
test $? -eq 0 || { echo "Can't compile fift "; exit 1; }
|
||||
|
||||
rm -rf *
|
||||
|
||||
cd ../..
|
||||
cd ..
|
||||
|
||||
git clone https://github.com/emscripten-core/emsdk.git
|
||||
cd emsdk
|
||||
./emsdk install latest
|
||||
./emsdk activate latest
|
||||
./emsdk install 3.1.19
|
||||
./emsdk activate 3.1.19
|
||||
EMSDK_DIR=`pwd`
|
||||
|
||||
source $EMSDK_DIR/emsdk_env.sh
|
||||
|
|
@ -55,7 +53,8 @@ export CCACHE_DISABLE=1
|
|||
cd ../zlib
|
||||
|
||||
emconfigure ./configure --static
|
||||
emmake make -j4
|
||||
emmake make -j16
|
||||
test $? -eq 0 || { echo "Can't compile zlib with emmake "; exit 1; }
|
||||
ZLIB_DIR=`pwd`
|
||||
|
||||
cd ../openssl
|
||||
|
|
@ -66,14 +65,13 @@ sed -i 's/CROSS_COMPILE=.*/CROSS_COMPILE=/g' Makefile
|
|||
sed -i 's/-ldl//g' Makefile
|
||||
sed -i 's/-O3/-Os/g' Makefile
|
||||
emmake make depend
|
||||
emmake make -j4
|
||||
|
||||
cd ../ton-blockchain
|
||||
|
||||
cd build
|
||||
|
||||
emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-pthread -sUSE_ZLIB=1" ..
|
||||
emmake make -j16
|
||||
test $? -eq 0 || { echo "Can't compile OpenSSL with emmake "; exit 1; }
|
||||
cd ../build
|
||||
|
||||
emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" ..
|
||||
test $? -eq 0 || { echo "Can't configure TON with with emmake "; exit 1; }
|
||||
cp -R ../crypto/smartcont ../crypto/fift/lib crypto
|
||||
|
||||
emmake make -j4 funcfiftlib
|
||||
emmake make -j16 funcfiftlib func fift tlbc emulator-emscripten
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue