From c86af902f443a7f0813467e734b0dcec92e9c2f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Sun, 29 Sep 2019 16:32:56 +0200 Subject: [PATCH 1/2] nix: allow static compilation --- pkgs/tools/package-management/nix/default.nix | 17 +++++++++++++---- pkgs/top-level/static.nix | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 12cd23ace673..363a7cb04988 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -21,8 +21,8 @@ common = , stateDir , confDir , withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp - , withAWS ? stdenv.isLinux || stdenv.isDarwin, aws-sdk-cpp - + , withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp + , enableStatic ? false , name, suffix ? "", src, crates ? null }: @@ -65,12 +65,21 @@ common = propagatedBuildInputs = [ boehmgc ]; # Seems to be required when using std::atomic with 64-bit types - NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic"; + NIX_LDFLAGS = + # need to list libraries individually until + # https://github.com/NixOS/nix/commit/3e85c57a6cbf46d5f0fe8a89b368a43abd26daba + # is in a release + lib.optionalString enableStatic "-lssl -lbrotlicommon -lssh2 -lz -lnghttp2 -lcrypto" + + # need to detect it here until + # https://github.com/NixOS/nix/commits/74b4737d8f0e1922ef5314a158271acf81cd79f8 + # is in a release + + lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic"; preConfigure = # Copy libboost_context so we don't get all of Boost in our closure. # https://github.com/NixOS/nixpkgs/issues/45462 - '' + lib.optionalString (!enableStatic) '' mkdir -p $out/lib cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib rm -f $out/lib/*.a diff --git a/pkgs/top-level/static.nix b/pkgs/top-level/static.nix index 6f331b20d3fc..cd75209a9b98 100644 --- a/pkgs/top-level/static.nix +++ b/pkgs/top-level/static.nix @@ -159,7 +159,7 @@ in { enableShared = false; }; mkl = super.mkl.override { enableStatic = true; }; - nix = super.nix.override { withAWS = false; }; + nix = super.nix.override { enableStatic = true; }; openssl = (super.openssl_1_1.override { static = true; }).overrideAttrs (o: { # OpenSSL doesn't like the `--enable-static` / `--disable-shared` flags. configureFlags = (removeUnknownConfigureFlags o.configureFlags); From a9924d7ab87235df86f6849ed53e9022f5b8e30e Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Mon, 8 Jun 2020 17:16:42 -0500 Subject: [PATCH 2/2] libexecinfo: fix building statically --- pkgs/development/libraries/libexecinfo/default.nix | 11 +++++++++-- pkgs/top-level/static.nix | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libexecinfo/default.nix b/pkgs/development/libraries/libexecinfo/default.nix index 147b213735db..9c649c223c12 100644 --- a/pkgs/development/libraries/libexecinfo/default.nix +++ b/pkgs/development/libraries/libexecinfo/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch }: +{ stdenv, fetchurl, fetchpatch, enableStatic ? true, enableShared ? true }: stdenv.mkDerivation rec { pname = "libexecinfo"; @@ -29,12 +29,19 @@ stdenv.mkDerivation rec { makeFlags = [ "CC:=$(CC)" "AR:=$(AR)" ]; + buildFlags = + stdenv.lib.optional enableStatic "static" + ++ stdenv.lib.optional enableShared "dynamic"; + patchFlags = [ "-p0" ]; installPhase = '' install -Dm644 execinfo.h stacktraverse.h -t $out/include - install -Dm755 libexecinfo.{a,so.1} -t $out/lib + '' + stdenv.lib.optionalString enableShared '' + install -Dm755 libexecinfo.so.1 -t $out/lib ln -s $out/lib/libexecinfo.so{.1,} + '' + stdenv.lib.optionalString enableStatic '' + install -Dm755 libexecinfo.a -t $out/lib ''; meta = with stdenv.lib; { diff --git a/pkgs/top-level/static.nix b/pkgs/top-level/static.nix index cd75209a9b98..fcfe856398ef 100644 --- a/pkgs/top-level/static.nix +++ b/pkgs/top-level/static.nix @@ -274,4 +274,6 @@ in { libev = super.libev.override { static = true; }; + + libexecinfo = super.libexecinfo.override { enableShared = false; }; }