1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

Merge branch 'refs/heads/testnet' into accelerator

This commit is contained in:
SpyCheese 2024-06-10 13:23:47 +03:00
commit f91ed6cc31
18 changed files with 336 additions and 129 deletions

View file

@ -0,0 +1,25 @@
name: MacOS TON build (shared, arm64)
on: [push,workflow_dispatch,workflow_call]
jobs:
build:
runs-on: macos-14
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Build TON
run: |
cp assembly/native/build-macos-shared.sh .
chmod +x build-macos-shared.sh
./build-macos-shared.sh -t -a
- name: Upload artifacts
uses: actions/upload-artifact@master
with:
name: ton-binaries-macos-14
path: artifacts

View file

@ -35,6 +35,14 @@ jobs:
workflow_conclusion: success workflow_conclusion: success
skip_unpack: true skip_unpack: true
- name: Download Mac arm64 artifacts
uses: dawidd6/action-download-artifact@v2
with:
workflow: ton-arm64-macos.yml
path: artifacts
workflow_conclusion: success
skip_unpack: true
- name: Download and unzip Mac x86-64 artifacts - name: Download and unzip Mac x86-64 artifacts
uses: dawidd6/action-download-artifact@v2 uses: dawidd6/action-download-artifact@v2
with: with:
@ -43,6 +51,14 @@ jobs:
workflow_conclusion: success workflow_conclusion: success
skip_unpack: false skip_unpack: false
- name: Download and unzip arm64 artifacts
uses: dawidd6/action-download-artifact@v2
with:
workflow: ton-arm64-macos.yml
path: artifacts
workflow_conclusion: success
skip_unpack: false
- name: Download Windows artifacts - name: Download Windows artifacts
uses: dawidd6/action-download-artifact@v2 uses: dawidd6/action-download-artifact@v2
with: with:
@ -297,6 +313,97 @@ jobs:
asset_name: tonlib-cli-mac-x86-64 asset_name: tonlib-cli-mac-x86-64
tag: ${{ steps.tag.outputs.TAG }} tag: ${{ steps.tag.outputs.TAG }}
# mac arm64
- name: Upload Mac arm64 artifacts
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries.zip
asset_name: ton-mac-arm64.zip
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - fift
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/fift
asset_name: fift-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - func
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/func
asset_name: func-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - lite-client
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/lite-client
asset_name: lite-client-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - rldp-http-proxy
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/rldp-http-proxy
asset_name: rldp-http-proxy-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - http-proxy
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/http-proxy
asset_name: http-proxy-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - storage-daemon-cli
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/storage-daemon-cli
asset_name: storage-daemon-cli-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - storage-daemon
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/storage-daemon
asset_name: storage-daemon-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - tonlibjson
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/libtonlibjson.dylib
asset_name: tonlibjson-mac-arm64.dylib
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - libemulator
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/libemulator.dylib
asset_name: libemulator-mac-arm64.dylib
tag: ${{ steps.tag.outputs.TAG }}
- name: Upload Mac arm64 single artifact - tonlib-cli
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: artifacts/ton-arm64-macos-binaries/tonlib-cli
asset_name: tonlib-cli-mac-arm64
tag: ${{ steps.tag.outputs.TAG }}
# linux x86-64 # linux x86-64
- name: Upload Linux x86-64 artifacts - name: Upload Linux x86-64 artifacts

37
.github/workflows/ton-arm64-macos.yml vendored Normal file
View file

@ -0,0 +1,37 @@
name: MacOS TON build (portable, arm64)
on: [push,workflow_dispatch,workflow_call]
jobs:
build:
runs-on: macos-14
steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'
- uses: cachix/install-nix-action@v23
with:
extra_nix_config: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
- name: Build TON
run: |
cp assembly/nix/build-macos-nix.sh .
chmod +x build-macos-nix.sh
./build-macos-nix.sh -t
- name: Simple binaries test
run: |
sudo mv /nix/store /nix/store2
artifacts/validator-engine -V
artifacts/lite-client -V
artifacts/fift -V
artifacts/func -V
- name: Upload artifacts
uses: actions/upload-artifact@master
with:
name: ton-arm64-macos-binaries
path: artifacts

View file

@ -1,3 +1,16 @@
## 2024.06 Update
1. Make Jemalloc default allocator
2. Add candidate broadcasting and caching
3. Limit per address speed for external messages broadcast by reasonably large number
4. Overlay improvements: fix dropping peers in small custom overlays, fix wrong certificate on missed keyblocks
5. Extended statistics and logs for celldb usage, session stats, persistent state serialization
6. Tonlib and explorer fixes
7. Flags for precize control of Celldb: `--celldb-cache-size`, `--celldb-direct-io` and `--celldb-preload-all`
8. Add valiator-console command to stop persistent state serialization
9. Use `@` path separator for defining include path in fift and create-state utilities on Windows only.
## 2024.04 Update ## 2024.04 Update
1. Emulator: Single call optimized runGetMethod added 1. Emulator: Single call optimized runGetMethod added

View file

@ -15,8 +15,6 @@ while getopts 't' flag; do
done done
cp assembly/nix/linux-arm64* . cp assembly/nix/linux-arm64* .
cp assembly/nix/microhttpd.nix .
cp assembly/nix/openssl.nix .
export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.05.tar.gz export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.05.tar.gz
if [ "$with_tests" = true ]; then if [ "$with_tests" = true ]; then
@ -30,7 +28,9 @@ cp ./result/bin/* artifacts/
test $? -eq 0 || { echo "No artifacts have been built..."; exit 1; } test $? -eq 0 || { echo "No artifacts have been built..."; exit 1; }
chmod +x artifacts/* chmod +x artifacts/*
rm -rf result rm -rf result
nix-build linux-arm64-tonlib.nix nix-build linux-arm64-tonlib.nix
cp ./result/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so cp ./result/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so
cp ./result/lib/libemulator.so artifacts/ cp ./result/lib/libemulator.so artifacts/
cp ./result/lib/fift/* artifacts/lib/ cp ./result/lib/fift/* artifacts/lib/

View file

@ -15,8 +15,6 @@ while getopts 't' flag; do
done done
cp assembly/nix/linux-x86-64* . cp assembly/nix/linux-x86-64* .
cp assembly/nix/microhttpd.nix .
cp assembly/nix/openssl.nix .
export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.05.tar.gz export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.05.tar.gz
if [ "$with_tests" = true ]; then if [ "$with_tests" = true ]; then
@ -30,7 +28,9 @@ cp ./result/bin/* artifacts/
test $? -eq 0 || { echo "No artifacts have been built..."; exit 1; } test $? -eq 0 || { echo "No artifacts have been built..."; exit 1; }
chmod +x artifacts/* chmod +x artifacts/*
rm -rf result rm -rf result
nix-build linux-x86-64-tonlib.nix nix-build linux-x86-64-tonlib.nix
cp ./result/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so cp ./result/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so
cp ./result/lib/libemulator.so artifacts/ cp ./result/lib/libemulator.so artifacts/
cp ./result/lib/fift/* artifacts/lib/ cp ./result/lib/fift/* artifacts/lib/

View file

@ -28,7 +28,9 @@ cp ./result-bin/bin/* artifacts/
test $? -eq 0 || { echo "No artifacts have been built..."; exit 1; } test $? -eq 0 || { echo "No artifacts have been built..."; exit 1; }
chmod +x artifacts/* chmod +x artifacts/*
rm -rf result-bin rm -rf result-bin
nix-build macos-tonlib.nix nix-build macos-tonlib.nix
cp ./result/lib/libtonlibjson.dylib artifacts/ cp ./result/lib/libtonlibjson.dylib artifacts/
cp ./result/lib/libemulator.dylib artifacts/ cp ./result/lib/libemulator.dylib artifacts/
cp ./result/lib/fift/* artifacts/lib/ cp ./result/lib/fift/* artifacts/lib/

View file

@ -6,9 +6,23 @@
, testing ? false , testing ? false
}: }:
let let
microhttpdmy = (import ./microhttpd.nix) {}; staticOptions = pkg: pkg.overrideAttrs(oldAttrs: {
dontDisableStatic = true;
enableSharedExecutables = false;
configureFlags = (oldAttrs.configureFlags or []) ++ [ "--without-shared" "--disable-shared" "--disable-tests" ];
});
secp256k1Static = (staticOptions pkgs.secp256k1);
libsodiumStatic = (staticOptions pkgs.libsodium);
jemallocStatic = (staticOptions pkgs.jemalloc);
microhttpdStatic = pkgs.libmicrohttpd.overrideAttrs(oldAttrs: {
dontDisableStatic = true;
enableSharedExecutables = false;
configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-tests" "--disable-benchmark" "--disable-shared" "--disable-https" "--with-pic" ];
});
in in
with import microhttpdmy;
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "ton"; pname = "ton";
version = "dev-bin"; version = "dev-bin";
@ -16,31 +30,33 @@ stdenv.mkDerivation {
src = ./.; src = ./.;
nativeBuildInputs = with pkgs; nativeBuildInputs = with pkgs;
[ [ cmake ninja git pkg-config ];
cmake ninja git pkg-config
];
buildInputs = with pkgs; buildInputs = with pkgs;
[ [
pkgsStatic.openssl microhttpdmy pkgsStatic.zlib pkgsStatic.libsodium.dev pkgsStatic.secp256k1 glibc.static pkgsStatic.lz4 (openssl.override { static = true; }).dev
microhttpdStatic.dev
(zlib.override { shared = false; }).dev
(lz4.override { enableStatic = true; enableShared = false; }).dev
jemallocStatic
secp256k1Static
libsodiumStatic.dev
glibc.static
]; ];
makeStatic = true;
doCheck = testing;
cmakeFlags = [ cmakeFlags = [
"-DTON_USE_ABSEIL=OFF" "-DTON_USE_ABSEIL=OFF"
"-DNIX=ON" "-DNIX=ON"
"-DBUILD_SHARED_LIBS=OFF" "-DBUILD_SHARED_LIBS=OFF"
"-DCMAKE_LINK_SEARCH_START_STATIC=ON" "-DCMAKE_LINK_SEARCH_START_STATIC=ON"
"-DCMAKE_LINK_SEARCH_END_STATIC=ON" "-DCMAKE_LINK_SEARCH_END_STATIC=ON"
"-DMHD_FOUND=1" "-DTON_USE_JEMALLOC=ON"
"-DMHD_INCLUDE_DIR=${microhttpdmy}/usr/local/include"
"-DMHD_LIBRARY=${microhttpdmy}/usr/local/lib/libmicrohttpd.a"
"-DCMAKE_CTEST_ARGUMENTS=--timeout;1800"
]; ];
makeStatic = true;
doCheck = testing;
LDFLAGS = [ LDFLAGS = [
"-static-libgcc" "-static-libstdc++" "-static" "-static-libgcc" "-static-libstdc++" "-static"
]; ];
} }

View file

@ -5,9 +5,21 @@
, stdenv ? pkgs.stdenv , stdenv ? pkgs.stdenv
}: }:
let let
microhttpdmy = (import ./microhttpd.nix) {}; staticOptions = pkg: pkg.overrideAttrs(oldAttrs: {
dontDisableStatic = true;
enableSharedExecutables = false;
configureFlags = (oldAttrs.configureFlags or []) ++ [ "--without-shared" "--disable-shared" "--disable-tests" ];
});
secp256k1Static = (staticOptions pkgs.secp256k1);
libsodiumStatic = (staticOptions pkgs.libsodium);
microhttpdStatic = pkgs.libmicrohttpd.overrideAttrs(oldAttrs: {
dontDisableStatic = true;
enableSharedExecutables = false;
configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-tests" "--disable-benchmark" "--disable-shared" "--disable-https" "--with-pic" ];
});
in in
with import microhttpdmy;
pkgs.llvmPackages_16.stdenv.mkDerivation { pkgs.llvmPackages_16.stdenv.mkDerivation {
pname = "ton"; pname = "ton";
version = "dev-lib"; version = "dev-lib";
@ -21,7 +33,12 @@ pkgs.llvmPackages_16.stdenv.mkDerivation {
buildInputs = with pkgs; buildInputs = with pkgs;
[ [
pkgsStatic.openssl microhttpdmy pkgsStatic.zlib pkgsStatic.libsodium.dev pkgsStatic.secp256k1 pkgsStatic.lz4 (openssl.override { static = true; }).dev
microhttpdStatic.dev
(zlib.override { shared = false; }).dev
(lz4.override { enableStatic = true; enableShared = false; }).dev
secp256k1Static
libsodiumStatic.dev
]; ];
dontAddStaticConfigureFlags = false; dontAddStaticConfigureFlags = false;
@ -29,9 +46,6 @@ pkgs.llvmPackages_16.stdenv.mkDerivation {
cmakeFlags = [ cmakeFlags = [
"-DTON_USE_ABSEIL=OFF" "-DTON_USE_ABSEIL=OFF"
"-DNIX=ON" "-DNIX=ON"
"-DMHD_FOUND=1"
"-DMHD_INCLUDE_DIR=${microhttpdmy}/usr/local/include"
"-DMHD_LIBRARY=${microhttpdmy}/usr/local/lib/libmicrohttpd.a"
]; ];
LDFLAGS = [ LDFLAGS = [

View file

@ -6,9 +6,23 @@
, testing ? false , testing ? false
}: }:
let let
microhttpdmy = (import ./microhttpd.nix) {}; staticOptions = pkg: pkg.overrideAttrs(oldAttrs: {
dontDisableStatic = true;
enableSharedExecutables = false;
configureFlags = (oldAttrs.configureFlags or []) ++ [ "--without-shared" "--disable-shared" "--disable-tests" ];
});
secp256k1Static = (staticOptions pkgs.secp256k1);
libsodiumStatic = (staticOptions pkgs.libsodium);
jemallocStatic = (staticOptions pkgs.jemalloc);
microhttpdStatic = pkgs.libmicrohttpd.overrideAttrs(oldAttrs: {
dontDisableStatic = true;
enableSharedExecutables = false;
configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-tests" "--disable-benchmark" "--disable-shared" "--disable-https" "--with-pic" ];
});
in in
with import microhttpdmy;
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "ton"; pname = "ton";
version = "dev-bin"; version = "dev-bin";
@ -16,31 +30,33 @@ stdenv.mkDerivation {
src = ./.; src = ./.;
nativeBuildInputs = with pkgs; nativeBuildInputs = with pkgs;
[ [ cmake ninja git pkg-config ];
cmake ninja git pkg-config
];
buildInputs = with pkgs; buildInputs = with pkgs;
[ [
pkgsStatic.openssl microhttpdmy pkgsStatic.zlib pkgsStatic.libsodium.dev pkgsStatic.secp256k1 glibc.static pkgsStatic.lz4 (openssl.override { static = true; }).dev
microhttpdStatic.dev
(zlib.override { shared = false; }).dev
(lz4.override { enableStatic = true; enableShared = false; }).dev
jemallocStatic
secp256k1Static
libsodiumStatic.dev
glibc.static
]; ];
makeStatic = true;
doCheck = testing;
cmakeFlags = [ cmakeFlags = [
"-DTON_USE_ABSEIL=OFF" "-DTON_USE_ABSEIL=OFF"
"-DNIX=ON" "-DNIX=ON"
"-DBUILD_SHARED_LIBS=OFF" "-DBUILD_SHARED_LIBS=OFF"
"-DCMAKE_LINK_SEARCH_START_STATIC=ON" "-DCMAKE_LINK_SEARCH_START_STATIC=ON"
"-DCMAKE_LINK_SEARCH_END_STATIC=ON" "-DCMAKE_LINK_SEARCH_END_STATIC=ON"
"-DMHD_FOUND=1" "-DTON_USE_JEMALLOC=ON"
"-DMHD_INCLUDE_DIR=${microhttpdmy}/usr/local/include"
"-DMHD_LIBRARY=${microhttpdmy}/usr/local/lib/libmicrohttpd.a"
"-DCMAKE_CTEST_ARGUMENTS=--timeout;1800"
]; ];
makeStatic = true;
doCheck = testing;
LDFLAGS = [ LDFLAGS = [
"-static-libgcc" "-static-libstdc++" "-static" "-static-libgcc" "-static-libstdc++" "-fPIC"
]; ];
} }

View file

@ -7,20 +7,35 @@
, stdenv ? pkgs.stdenv , stdenv ? pkgs.stdenv
}: }:
let let
system = builtins.currentSystem; system = builtins.currentSystem;
nixos1909 = (import (builtins.fetchTarball { staticOptions = pkg: pkg.overrideAttrs(oldAttrs: {
url = "https://channels.nixos.org/nixos-19.09/nixexprs.tar.xz"; dontDisableStatic = true;
sha256 = "1vp1h2gkkrckp8dzkqnpcc6xx5lph5d2z46sg2cwzccpr8ay58zy"; enableSharedExecutables = false;
}) { inherit system; }); configureFlags = (oldAttrs.configureFlags or []) ++ [ "--without-shared" "--disable-shared" "--disable-tests" ];
glibc227 = nixos1909.glibc // { pname = "glibc"; }; });
stdenv227 = let
cc = pkgs.wrapCCWith { secp256k1Static = (staticOptions pkgs.secp256k1);
cc = nixos1909.buildPackages.gcc-unwrapped; libsodiumStatic = (staticOptions pkgs.libsodium);
libc = glibc227;
bintools = pkgs.binutils.override { libc = glibc227; }; microhttpdStatic = pkgs.libmicrohttpd.overrideAttrs(oldAttrs: {
}; dontDisableStatic = true;
in (pkgs.overrideCC pkgs.stdenv cc); enableSharedExecutables = false;
configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-tests" "--disable-benchmark" "--disable-shared" "--disable-https" "--with-pic" ];
});
nixos1909 = (import (builtins.fetchTarball {
url = "https://channels.nixos.org/nixos-19.09/nixexprs.tar.xz";
sha256 = "1vp1h2gkkrckp8dzkqnpcc6xx5lph5d2z46sg2cwzccpr8ay58zy";
}) { inherit system; });
glibc227 = nixos1909.glibc // { pname = "glibc"; };
stdenv227 = let
cc = pkgs.wrapCCWith {
cc = nixos1909.buildPackages.gcc-unwrapped;
libc = glibc227;
bintools = pkgs.binutils.override { libc = glibc227; };
};
in (pkgs.overrideCC pkgs.stdenv cc);
in in
stdenv227.mkDerivation { stdenv227.mkDerivation {
@ -34,7 +49,12 @@ stdenv227.mkDerivation {
buildInputs = with pkgs; buildInputs = with pkgs;
[ [
pkgsStatic.openssl pkgsStatic.zlib pkgsStatic.libmicrohttpd.dev pkgsStatic.libsodium.dev pkgsStatic.secp256k1 pkgsStatic.lz4 (openssl.override { static = true; }).dev
microhttpdStatic.dev
(zlib.override { shared = false; }).dev
(lz4.override { enableStatic = true; enableShared = false; }).dev
secp256k1Static
libsodiumStatic.dev
]; ];
dontAddStaticConfigureFlags = false; dontAddStaticConfigureFlags = false;

View file

@ -17,7 +17,7 @@ pkgs.llvmPackages_14.stdenv.mkDerivation {
buildInputs = with pkgs; buildInputs = with pkgs;
lib.forEach [ lib.forEach [
secp256k1 libsodium.dev libmicrohttpd.dev gmp.dev nettle.dev libtasn1.dev libidn2.dev libunistring.dev gettext (gnutls.override { withP11-kit = false; }).dev secp256k1 libsodium.dev libmicrohttpd.dev gmp.dev nettle.dev libtasn1.dev libidn2.dev libunistring.dev gettext jemalloc (gnutls.override { withP11-kit = false; }).dev
] ]
(x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" "--disable-tests" ]; dontDisableStatic = true; })) (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" "--disable-tests" ]; dontDisableStatic = true; }))
++ [ ++ [
@ -38,13 +38,13 @@ pkgs.llvmPackages_14.stdenv.mkDerivation {
cmakeFlags = [ cmakeFlags = [
"-DTON_USE_ABSEIL=OFF" "-DTON_USE_ABSEIL=OFF"
"-DNIX=ON" "-DNIX=ON"
"-DTON_USE_JEMALLOC=ON"
"-DCMAKE_CROSSCOMPILING=OFF" "-DCMAKE_CROSSCOMPILING=OFF"
"-DCMAKE_LINK_SEARCH_START_STATIC=ON" "-DCMAKE_LINK_SEARCH_START_STATIC=ON"
"-DCMAKE_LINK_SEARCH_END_STATIC=ON" "-DCMAKE_LINK_SEARCH_END_STATIC=ON"
"-DBUILD_SHARED_LIBS=OFF" "-DBUILD_SHARED_LIBS=OFF"
"-DCMAKE_CXX_FLAGS=-stdlib=libc++" "-DCMAKE_CXX_FLAGS=-stdlib=libc++"
"-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.3" "-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.3"
"-DCMAKE_CTEST_ARGUMENTS=--timeout;1800"
]; ];
LDFLAGS = [ LDFLAGS = [

View file

@ -1,28 +0,0 @@
{ pkgs ? import <nixpkgs> { system = builtins.currentSystem; }
, stdenv ? pkgs.stdenv
, fetchgit ? pkgs.fetchgit
}:
stdenv.mkDerivation rec {
name = "microhttpdmy";
src = fetchgit {
url = "https://git.gnunet.org/libmicrohttpd.git";
rev = "refs/tags/v0.9.77";
sha256 = "sha256-x+nfB07PbZwBlFc6kZZFYiRpk0a3QN/ByHB+hC8na/o=";
};
nativeBuildInputs = with pkgs; [ automake libtool autoconf texinfo ];
buildInputs = with pkgs; [ ];
configurePhase = ''
./autogen.sh
./configure --enable-static --disable-tests --disable-benchmark --disable-shared --disable-https --with-pic
'';
installPhase = ''
make install DESTDIR=$out
'';
}

View file

@ -1,30 +0,0 @@
{ pkgs ? import <nixpkgs> { system = builtins.currentSystem; }
, stdenv ? pkgs.stdenv
, fetchFromGitHub ? pkgs.fetchFromGitHub
}:
stdenv.mkDerivation rec {
name = "opensslmy";
src = fetchFromGitHub {
owner = "openssl";
repo = "openssl";
rev = "refs/tags/openssl-3.1.4";
sha256 = "sha256-Vvf1wiNb4ikg1lIS9U137aodZ2JzM711tSWMJFYWtWI=";
};
nativeBuildInputs = with pkgs; [ perl ];
buildInputs = with pkgs; [ ];
postPatch = ''
patchShebangs Configure
'';
configurePhase = ''
./Configure no-shared
'';
installPhase = ''
make install DESTDIR=$out
'';
}

View file

@ -479,10 +479,17 @@ if (NOT CMAKE_CROSSCOMPILING OR USE_EMSCRIPTEN)
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_DEST_FIF} OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_DEST_FIF}
) )
set(ARG_DEST_CPP "${ARG_DEST}.cpp") set(ARG_DEST_CPP "${ARG_DEST}.cpp")
if (WIN32)
set(ARG_LIB_DIR "fift/lib@smartcont")
else()
set(ARG_LIB_DIR "fift/lib:smartcont")
endif()
add_custom_command( add_custom_command(
COMMENT "Generate ${ARG_DEST_CPP}" COMMENT "Generate ${ARG_DEST_CPP}"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND fift -Ifift/lib:smartcont -s asm-to-cpp.fif ${ARG_DEST_FIF} ${ARG_DEST_CPP} ${ARG_NAME} COMMAND fift -I${ARG_LIB_DIR} -s asm-to-cpp.fif ${ARG_DEST_FIF} ${ARG_DEST_CPP} ${ARG_NAME}
MAIN_DEPENDENCY ${ARG_SOURCE} MAIN_DEPENDENCY ${ARG_SOURCE}
DEPENDS fift ${ARG_DEST_FIF} smartcont/asm-to-cpp.fif fift/lib/Asm.fif DEPENDS fift ${ARG_DEST_FIF} smartcont/asm-to-cpp.fif fift/lib/Asm.fif
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_DEST_CPP} OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_DEST_CPP}

View file

@ -814,11 +814,16 @@ void usage(const char* progname) {
void parse_include_path_set(std::string include_path_set, std::vector<std::string>& res) { void parse_include_path_set(std::string include_path_set, std::vector<std::string>& res) {
td::Parser parser(include_path_set); td::Parser parser(include_path_set);
while (!parser.empty()) { while (!parser.empty()) {
auto path = parser.read_till_nofail(':'); #if TD_WINDOWS
auto path_separator = '@';
#else
auto path_separator = ':';
#endif
auto path = parser.read_till_nofail(path_separator);
if (!path.empty()) { if (!path.empty()) {
res.push_back(path.str()); res.push_back(path.str());
} }
parser.skip_nofail(':'); parser.skip_nofail(path_separator);
} }
} }

View file

@ -62,7 +62,7 @@ void usage(const char* progname) {
<< " [-i] [-n] [-I <source-include-path>] {-L <library-fif-file>} <source-file1-fif> <source-file2-fif> ...\n"; << " [-i] [-n] [-I <source-include-path>] {-L <library-fif-file>} <source-file1-fif> <source-file2-fif> ...\n";
std::cerr << "\t-n\tDo not preload standard preamble file `Fift.fif`\n" std::cerr << "\t-n\tDo not preload standard preamble file `Fift.fif`\n"
"\t-i\tForce interactive mode even if explicit source file names are indicated\n" "\t-i\tForce interactive mode even if explicit source file names are indicated\n"
"\t-I<source-search-path>\tSets colon-separated library source include path. If not indicated, " "\t-I<source-search-path>\tSets colon-separated (unix) or at-separated (windows) library source include path. If not indicated, "
"$FIFTPATH is used instead.\n" "$FIFTPATH is used instead.\n"
"\t-L<library-fif-file>\tPre-loads a library source file\n" "\t-L<library-fif-file>\tPre-loads a library source file\n"
"\t-d<ton-db-path>\tUse a ton database\n" "\t-d<ton-db-path>\tUse a ton database\n"
@ -75,11 +75,16 @@ void usage(const char* progname) {
void parse_include_path_set(std::string include_path_set, std::vector<std::string>& res) { void parse_include_path_set(std::string include_path_set, std::vector<std::string>& res) {
td::Parser parser(include_path_set); td::Parser parser(include_path_set);
while (!parser.empty()) { while (!parser.empty()) {
auto path = parser.read_till_nofail(':'); #if TD_WINDOWS
auto path_separator = '@';
#else
auto path_separator = ':';
#endif
auto path = parser.read_till_nofail(path_separator);
if (!path.empty()) { if (!path.empty()) {
res.push_back(path.str()); res.push_back(path.str());
} }
parser.skip_nofail(':'); parser.skip_nofail(path_separator);
} }
} }

View file

@ -1,13 +1,11 @@
## 2024.04 Update ## 2024.04 Update
1. Emulator: Single call optimized runGetMethod added 1. Make Jemalloc default allocator
2. Tonlib: a series of proof improvements, also breaking Change in `liteServer.getAllShardsInfo` method (see below) 2. Add candidate broadcasting and caching
3. DB: usage statistics now collected, outdated persistent states are not serialized 3. Limit per address speed for external messages broadcast by reasonably large number
4. LS: fast `getOutMsgQueueSizes` added, preliminary support of non-final block requests 4. Overlay improvements: fix dropping peers in small custom overlays, fix wrong certificate on missed keyblocks
5. Network: lz4 compression of block candidates (disabled by default). 5. Extended statistics and logs for celldb usage, session stats, persistent state serialization
6. Overlays: add custom overlays 6. Tonlib and explorer fixes
7. Transaction Executor: fixed issue with due_payment collection 7. Flags for precize control of Celldb: `--celldb-cache-size`, `--celldb-direct-io` and `--celldb-preload-all`
8. Add valiator-console command to stop persistent state serialization
* `liteServer.getAllShardsInfo` method was updated for better efficiency. Previously, field proof contained BoC with two roots: one for BlockState from block's root and another for ShardHashes from BlockState. Now, it returns a single-root proof BoC, specifically the merkle proof of ShardHashes directly from the block's root, streamlining data access and integrity. Checking of the proof requires to check that ShardHashes in the `data` correspond to ShardHashes from the block. 9. Use `@` path separator for defining include path in fift and create-state utilities on Windows only.
Besides the work of the core team, this update is based on the efforts of @akifoq (due_payment issue).