diff --git a/assembly/nix/linux-arm64-tonlib.nix b/assembly/nix/linux-arm64-tonlib.nix deleted file mode 100644 index 6577fc3aa..000000000 --- a/assembly/nix/linux-arm64-tonlib.nix +++ /dev/null @@ -1,64 +0,0 @@ -# export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.05.tar.gz -{ - pkgs ? import { inherit system; } -, lib ? pkgs.lib -, stdenv ? pkgs.stdenv -, system ? builtins.currentSystem -, src ? ./. -}: -let - microhttpdmy = (import ./microhttpd.nix) { inherit pkgs; }; - staticLibs = import ./static-libs.nix { inherit pkgs; }; -in -with import microhttpdmy; -pkgs.llvmPackages_16.stdenv.mkDerivation { - pname = "ton"; - version = "dev-lib"; - - inherit src; - - nativeBuildInputs = with pkgs; - [ - cmake ninja git pkg-config - ]; - - buildInputs = with pkgs; - [ - pkgsStatic.openssl - microhttpdmy - pkgsStatic.zlib - pkgsStatic.secp256k1 - staticLibs.staticBoost - staticLibs.staticLibrdkafka - pkgsStatic.lz4 - (pkgsStatic.libsodium.overrideAttrs (oldAttrs: { - # https://github.com/jedisct1/libsodium/issues/292#issuecomment-137135369 - configureFlags = oldAttrs.configureFlags ++ [ " --disable-pie" ]; - hardeningDisable = oldAttrs.hardeningDisable ++ [ "pie" ]; - })) - ]; - - dontAddStaticConfigureFlags = false; - - cmakeFlags = [ - "-DTON_USE_ABSEIL=OFF" - "-DNIX=ON" - "-DMHD_FOUND=1" - "-DMHD_INCLUDE_DIR=${microhttpdmy}/usr/local/include" - "-DMHD_LIBRARY=${microhttpdmy}/usr/local/lib/libmicrohttpd.a" - "-DCMAKE_CXX_FLAGS=-w" - "-DCMAKE_C_FLAGS=-w" - "-DCMAKE_CXX_STANDARD=20" - "-DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations -Wno-unused-but-set-variable" - "-DCMAKE_C_COMPILER=clang" - "-DCMAKE_CXX_COMPILER=clang++" - ]; - - LDFLAGS = [ - "-static-libgcc" "-static-libstdc++" "-fPIC" "-fcommon" - ]; - - ninjaFlags = [ - "tonlibjson" "emulator" - ]; -} diff --git a/assembly/nix/linux-x86-64-static.nix b/assembly/nix/linux-x86-64-static.nix index b29f5e301..058654aaa 100644 --- a/assembly/nix/linux-x86-64-static.nix +++ b/assembly/nix/linux-x86-64-static.nix @@ -9,10 +9,9 @@ let microhttpdmy = (import ./microhttpd.nix) { inherit pkgs; }; staticLibs = import ./static-libs.nix { inherit pkgs; }; - customStdenv = pkgs.overrideCC pkgs.stdenv pkgs.clang; in with import microhttpdmy; -customStdenv.mkDerivation { +stdenv.mkDerivation { pname = "ton"; version = "dev-bin"; @@ -25,7 +24,12 @@ customStdenv.mkDerivation { buildInputs = with pkgs; [ - pkgsStatic.openssl microhttpdmy pkgsStatic.zlib pkgsStatic.libsodium.dev pkgsStatic.secp256k1 glibc.static + pkgsStatic.openssl + microhttpdmy + pkgsStatic.zlib + pkgsStatic.libsodium.dev + pkgsStatic.secp256k1 + glibc.static staticLibs.staticBoost staticLibs.staticLibrdkafka staticLibs.staticLZ4 @@ -49,8 +53,6 @@ customStdenv.mkDerivation { "-DCMAKE_C_FLAGS=-w" "-DCMAKE_CXX_STANDARD=20" "-DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations -Wno-unused-but-set-variable" - "-DCMAKE_C_COMPILER=clang" - "-DCMAKE_CXX_COMPILER=clang++" ]; NIX_CFLAGS_COMPILE = [ diff --git a/assembly/nix/linux-x86-64-tonlib.nix b/assembly/nix/linux-x86-64-tonlib.nix deleted file mode 100644 index 05f44f25d..000000000 --- a/assembly/nix/linux-x86-64-tonlib.nix +++ /dev/null @@ -1,60 +0,0 @@ -# export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.11.tar.gz -# copy linux-x86-64-tonlib.nix to git root directory and execute: -# nix-build linux-x86-64-tonlib.nix -{ - pkgs ? import { inherit system; } -, lib ? pkgs.lib -, stdenv ? pkgs.stdenv -, system ? builtins.currentSystem -, src ? ./. -}: -let - staticLibs = import ./static-libs.nix { inherit pkgs; }; - customStdenv = pkgs.overrideCC pkgs.stdenv pkgs.clang; -in -customStdenv.mkDerivation { - pname = "ton"; - version = "dev-lib"; - - inherit src; - - nativeBuildInputs = with pkgs; - [ cmake ninja git pkg-config ]; - - buildInputs = with pkgs; - [ - pkgsStatic.openssl - pkgsStatic.zlib - pkgsStatic.libmicrohttpd.dev - pkgsStatic.secp256k1 - staticLibs.staticBoost - staticLibs.staticLibrdkafka - pkgsStatic.lz4 - (pkgsStatic.libsodium.overrideAttrs (oldAttrs: { - # https://github.com/jedisct1/libsodium/issues/292#issuecomment-137135369 - configureFlags = oldAttrs.configureFlags ++ [ " --disable-pie" ]; - hardeningDisable = oldAttrs.hardeningDisable ++ [ "pie" ]; - })) - ]; - - dontAddStaticConfigureFlags = false; - - cmakeFlags = [ - "-DTON_USE_ABSEIL=ON" - "-DNIX=ON" - "-DCMAKE_CXX_FLAGS=-w" - "-DCMAKE_C_FLAGS=-w" - "-DCMAKE_CXX_STANDARD=20" - "-DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations -Wno-unused-but-set-variable" - "-DCMAKE_C_COMPILER=clang" - "-DCMAKE_CXX_COMPILER=clang++" - ]; - - LDFLAGS = [ - "-static-libgcc" "-static-libstdc++" "-fPIC" - ]; - - ninjaFlags = [ - "tonlibjson" "emulator" - ]; -} diff --git a/assembly/nix/macos-static.nix b/assembly/nix/macos-static.nix index 81b41d8b8..94c1d34d1 100644 --- a/assembly/nix/macos-static.nix +++ b/assembly/nix/macos-static.nix @@ -20,7 +20,16 @@ pkgs.llvmPackages_14.stdenv.mkDerivation { buildInputs = with pkgs; 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 + (gnutls.override { withP11-kit = false; }).dev ] (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" "--disable-tests" ]; dontDisableStatic = true; })) ++ [ diff --git a/assembly/nix/macos-tonlib.nix b/assembly/nix/macos-tonlib.nix deleted file mode 100644 index c20220512..000000000 --- a/assembly/nix/macos-tonlib.nix +++ /dev/null @@ -1,76 +0,0 @@ -# export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.05.tar.gz - -{ pkgs ? import { inherit system; } -, lib ? pkgs.lib -, stdenv ? pkgs.stdenv -, system ? builtins.currentSystem -, src ? ./. -}: -let - # Import custom static packages - staticLibs = import ./static-libs.nix { inherit pkgs; }; -in -pkgs.llvmPackages_14.stdenv.mkDerivation { - pname = "ton"; - version = "dev-lib"; - - inherit src; - - nativeBuildInputs = with pkgs; - [ cmake ninja git pkg-config ]; - - buildInputs = with pkgs; - lib.forEach [ - secp256k1 libsodium.dev libmicrohttpd.dev gmp.dev nettle.dev libtasn1.dev libidn2.dev libunistring.dev gettext (gnutls.override { withP11-kit = false; }).dev - ] (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" "--disable-tests" ]; dontDisableStatic = true; })) - ++ [ - darwin.apple_sdk.frameworks.CoreFoundation - (openssl.override { static = true; }).dev - (zlib.override { shared = false; }).dev - (libiconv.override { enableStatic = true; enableShared = false; }) - pkgsStatic.boost - staticLibs.staticLibrdkafka - pkgsStatic.lz4 - ]; - - dontAddStaticConfigureFlags = true; - - configureFlags = []; - - cmakeFlags = [ - "-DTON_USE_ABSEIL=OFF" - "-DNIX=ON" - "-DCMAKE_CXX_FLAGS=-stdlib=libc++" - "-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.3" - "-DCMAKE_CXX_FLAGS=-w" - "-DCMAKE_C_FLAGS=-w" - "-DCMAKE_CXX_STANDARD=20" - ]; - - LDFLAGS = [ - "-static-libstdc++" - "-framework CoreFoundation" - ]; - - ninjaFlags = [ - "tonlibjson" "emulator" - ]; - - preFixup = '' - if [[ -n "$bin" ]]; then - for fn in "$bin"/bin/*; do - echo "Fixing libc++ in $fn" - install_name_tool -change "$(otool -L "$fn" | grep libc++.1 | cut -d' ' -f1 | xargs)" libc++.1.dylib "$fn" - install_name_tool -change "$(otool -L "$fn" | grep libc++abi.1 | cut -d' ' -f1 | xargs)" libc++abi.dylib "$fn" - done - fi - - if [[ -n "$out" ]]; then - for fn in "$out"/lib/*.{dylib,so}; do - echo "Fixing libc++ in $fn" - install_name_tool -change "$(otool -L "$fn" | grep libc++.1 | cut -d' ' -f1 | xargs)" libc++.1.dylib "$fn" - install_name_tool -change "$(otool -L "$fn" | grep libc++abi.1 | cut -d' ' -f1 | xargs)" libc++abi.dylib "$fn" - done - fi - ''; -} \ No newline at end of file diff --git a/flake.nix b/flake.nix index d902bc57a..ca0bc4182 100644 --- a/flake.nix +++ b/flake.nix @@ -60,65 +60,33 @@ }; in with flake-utils.lib; - (nixpkgs-stable.lib.recursiveUpdate - (eachSystem (with system; [ x86_64-linux aarch64-linux ]) (system: - let - host = hostPkgs system; - tonk = kind: ton { - inherit host; - inherit system; - inherit kind; - }; - tonOldGlibcPython = ton: python: (tonPython ton python).overrideAttrs (previousAttrs: { - dontPatchELF = true; - preFixup = '' - patchelf --remove-rpath $out/*/* - ''; - }); - in - rec { - packages = rec { - ton-static = tonk "static"; - ton-tonlib = tonk "tonlib"; - ton-python-39 = tonOldGlibcPython ton-tonlib host.python39; - ton-python-310 = tonOldGlibcPython ton-tonlib host.python310; - ton-python-311 = tonOldGlibcPython ton-tonlib host.python311; - ton-python-312 = tonOldGlibcPython ton-tonlib host.python312; - }; - devShells.default = - host.mkShell { - inputsFrom = [ packages.ton-tonlib ]; - shellHook = '' - export cmakeFlags="${host.lib.concatStringsSep " " packages.ton-tonlib.cmakeFlags}" - ''; - }; - defaultPackage = packages.ton-python-39; - })) - (eachSystem (with system; [ x86_64-darwin aarch64-darwin ]) (system: - let - host = hostPkgs system; - tonk = kind: ton { - inherit host; - inherit system; - inherit kind; - }; - in - rec { - packages = rec { - ton-static = tonk "static"; - ton-tonlib = tonk "tonlib"; - ton-python-39 = tonPython ton-static host.python39; - ton-python-310 = tonPython ton-static host.python310; - ton-python-311 = tonPython ton-static host.python311; - ton-python-312 = tonPython ton-static host.python312; - }; - devShells.default = - host.mkShell { - inputsFrom = [ packages.ton-static ]; - shellHook = '' - export cmakeFlags="${host.lib.concatStringsSep " " packages.ton-tonlib.cmakeFlags}" - ''; - }; - defaultPackage = packages.ton-python-39; - }))); -} \ No newline at end of file + (eachSystem (with system; [ x86_64-darwin aarch64-darwin x86_64-linux aarch64-linux ]) (system: + let + host = hostPkgs system; + tonk = kind: ton { + inherit host; + stdenv = host.makeStatic host.stdenv; + staticGlibc = true; + inherit system; + inherit kind; + }; + in + rec { + packages = rec { + ton-static = tonk "static"; + ton-tonlib = tonk "tonlib"; + ton-python-39 = tonPython ton-static host.python39; + ton-python-310 = tonPython ton-static host.python310; + ton-python-311 = tonPython ton-static host.python311; + ton-python-312 = tonPython ton-static host.python312; + }; + devShells.default = + host.mkShell { + inputsFrom = [ packages.ton-static ]; + shellHook = '' + export cmakeFlags="${host.lib.concatStringsSep " " packages.ton-tonlib.cmakeFlags}" + ''; + }; + defaultPackage = packages.ton-python-39; + })); + } \ No newline at end of file