forked from lix-project/lix
package: dequalify {host,build}Platform for convenience
Change-Id: I5ffeac894a5bff101683cf3d566c63b478779962
This commit is contained in:
parent
218630a241
commit
68937f2b64
33
package.nix
33
package.nix
|
@ -85,6 +85,7 @@
|
||||||
let
|
let
|
||||||
inherit (__forDefaults) canRunInstalled;
|
inherit (__forDefaults) canRunInstalled;
|
||||||
inherit (lib) fileset;
|
inherit (lib) fileset;
|
||||||
|
inherit (stdenv) hostPlatform buildPlatform;
|
||||||
|
|
||||||
version = lib.fileContents ./.version + versionSuffix;
|
version = lib.fileContents ./.version + versionSuffix;
|
||||||
|
|
||||||
|
@ -187,13 +188,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
dontBuild = false;
|
dontBuild = false;
|
||||||
|
|
||||||
mesonFlags =
|
mesonFlags =
|
||||||
lib.optionals stdenv.hostPlatform.isLinux [
|
lib.optionals hostPlatform.isLinux [
|
||||||
# You'd think meson could just find this in PATH, but busybox is in buildInputs,
|
# You'd think meson could just find this in PATH, but busybox is in buildInputs,
|
||||||
# which don't actually get added to PATH. And buildInputs is correct over
|
# which don't actually get added to PATH. And buildInputs is correct over
|
||||||
# nativeBuildInputs since this should be a busybox executable on the host.
|
# nativeBuildInputs since this should be a busybox executable on the host.
|
||||||
"-Dsandbox-shell=${lib.getExe' busybox-sandbox-shell "busybox"}"
|
"-Dsandbox-shell=${lib.getExe' busybox-sandbox-shell "busybox"}"
|
||||||
]
|
]
|
||||||
++ lib.optional stdenv.hostPlatform.isStatic "-Denable-embedded-sandbox-shell=true"
|
++ lib.optional hostPlatform.isStatic "-Denable-embedded-sandbox-shell=true"
|
||||||
++ lib.optional (finalAttrs.dontBuild) "-Denable-build=false"
|
++ lib.optional (finalAttrs.dontBuild) "-Denable-build=false"
|
||||||
++ [
|
++ [
|
||||||
# mesonConfigurePhase automatically passes -Dauto_features=enabled,
|
# mesonConfigurePhase automatically passes -Dauto_features=enabled,
|
||||||
|
@ -203,7 +204,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
(lib.mesonBool "enable-tests" finalAttrs.doCheck)
|
(lib.mesonBool "enable-tests" finalAttrs.doCheck)
|
||||||
(lib.mesonBool "enable-docs" canRunInstalled)
|
(lib.mesonBool "enable-docs" canRunInstalled)
|
||||||
]
|
]
|
||||||
++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "--cross-file=${mesonCrossFile}";
|
++ lib.optional (hostPlatform != buildPlatform) "--cross-file=${mesonCrossFile}";
|
||||||
|
|
||||||
# We only include CMake so that Meson can locate toml11, which only ships CMake dependency metadata.
|
# We only include CMake so that Meson can locate toml11, which only ships CMake dependency metadata.
|
||||||
dontUseCmakeConfigure = true;
|
dontUseCmakeConfigure = true;
|
||||||
|
@ -231,7 +232,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
jq
|
jq
|
||||||
lsof
|
lsof
|
||||||
]
|
]
|
||||||
++ lib.optional stdenv.hostPlatform.isLinux util-linuxMinimal
|
++ lib.optional hostPlatform.isLinux util-linuxMinimal
|
||||||
++ lib.optional (!officialRelease && buildUnreleasedNotes) build-release-notes
|
++ lib.optional (!officialRelease && buildUnreleasedNotes) build-release-notes
|
||||||
++ lib.optional internalApiDocs doxygen;
|
++ lib.optional internalApiDocs doxygen;
|
||||||
|
|
||||||
|
@ -251,14 +252,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
toml11
|
toml11
|
||||||
lix-doc
|
lix-doc
|
||||||
]
|
]
|
||||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
++ lib.optionals hostPlatform.isLinux [
|
||||||
libseccomp
|
libseccomp
|
||||||
busybox-sandbox-shell
|
busybox-sandbox-shell
|
||||||
]
|
]
|
||||||
++ lib.optional internalApiDocs rapidcheck
|
++ lib.optional internalApiDocs rapidcheck
|
||||||
++ lib.optional stdenv.hostPlatform.isx86_64 libcpuid
|
++ lib.optional hostPlatform.isx86_64 libcpuid
|
||||||
# There have been issues building these dependencies
|
# There have been issues building these dependencies
|
||||||
++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) aws-sdk-cpp-nix
|
++ lib.optional (hostPlatform == buildPlatform) aws-sdk-cpp-nix
|
||||||
++ lib.optionals (finalAttrs.dontBuild) maybePropagatedInputs;
|
++ lib.optionals (finalAttrs.dontBuild) maybePropagatedInputs;
|
||||||
|
|
||||||
checkInputs = [
|
checkInputs = [
|
||||||
|
@ -278,18 +279,18 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
};
|
};
|
||||||
|
|
||||||
preConfigure =
|
preConfigure =
|
||||||
lib.optionalString (!finalAttrs.dontBuild && !stdenv.hostPlatform.isStatic) ''
|
lib.optionalString (!finalAttrs.dontBuild && !hostPlatform.isStatic) ''
|
||||||
# Copy libboost_context so we don't get all of Boost in our closure.
|
# Copy libboost_context so we don't get all of Boost in our closure.
|
||||||
# https://github.com/NixOS/nixpkgs/issues/45462
|
# https://github.com/NixOS/nixpkgs/issues/45462
|
||||||
mkdir -p $out/lib
|
mkdir -p $out/lib
|
||||||
cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib
|
cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib
|
||||||
rm -f $out/lib/*.a
|
rm -f $out/lib/*.a
|
||||||
''
|
''
|
||||||
+ lib.optionalString (!finalAttrs.dontBuild && stdenv.hostPlatform.isLinux) ''
|
+ lib.optionalString (!finalAttrs.dontBuild && hostPlatform.isLinux) ''
|
||||||
chmod u+w $out/lib/*.so.*
|
chmod u+w $out/lib/*.so.*
|
||||||
patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.*
|
patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.*
|
||||||
''
|
''
|
||||||
+ lib.optionalString (!finalAttrs.dontBuild && stdenv.hostPlatform.isDarwin) ''
|
+ lib.optionalString (!finalAttrs.dontBuild && hostPlatform.isDarwin) ''
|
||||||
for LIB in $out/lib/*.dylib; do
|
for LIB in $out/lib/*.dylib; do
|
||||||
chmod u+w $LIB
|
chmod u+w $LIB
|
||||||
install_name_tool -id $LIB $LIB
|
install_name_tool -id $LIB $LIB
|
||||||
|
@ -333,7 +334,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
mkdir -p $doc/nix-support
|
mkdir -p $doc/nix-support
|
||||||
echo "doc manual $doc/share/doc/nix/manual" >> $doc/nix-support/hydra-build-products
|
echo "doc manual $doc/share/doc/nix/manual" >> $doc/nix-support/hydra-build-products
|
||||||
''
|
''
|
||||||
+ lib.optionalString stdenv.hostPlatform.isStatic ''
|
+ lib.optionalString hostPlatform.isStatic ''
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
echo "file binary-dist $out/bin/nix" >> $out/nix-support/hydra-build-products
|
echo "file binary-dist $out/bin/nix" >> $out/nix-support/hydra-build-products
|
||||||
''
|
''
|
||||||
|
@ -364,12 +365,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
runHook postInstallCheck
|
runHook postInstallCheck
|
||||||
'';
|
'';
|
||||||
|
|
||||||
separateDebugInfo = !stdenv.hostPlatform.isStatic && !finalAttrs.dontBuild;
|
separateDebugInfo = !hostPlatform.isStatic && !finalAttrs.dontBuild;
|
||||||
|
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
|
|
||||||
# strictoverflow is disabled because we trap on signed overflow instead
|
# strictoverflow is disabled because we trap on signed overflow instead
|
||||||
hardeningDisable = [ "strictoverflow" ] ++ lib.optional stdenv.hostPlatform.isStatic "pie";
|
hardeningDisable = [ "strictoverflow" ] ++ lib.optional hostPlatform.isStatic "pie";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
mainProgram = "nix";
|
mainProgram = "nix";
|
||||||
|
@ -398,7 +399,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
contribNotice,
|
contribNotice,
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
glibcFix = lib.optionalAttrs (stdenv.buildPlatform.isLinux && glibcLocales != null) {
|
glibcFix = lib.optionalAttrs (buildPlatform.isLinux && glibcLocales != null) {
|
||||||
# Required to make non-NixOS Linux not complain about missing locale files during configure in a dev shell
|
# Required to make non-NixOS Linux not complain about missing locale files during configure in a dev shell
|
||||||
LOCALE_ARCHIVE = "${lib.getLib pkgs.glibcLocales}/lib/locale/locale-archive";
|
LOCALE_ARCHIVE = "${lib.getLib pkgs.glibcLocales}/lib/locale/locale-archive";
|
||||||
};
|
};
|
||||||
|
@ -422,7 +423,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
env = finalAttrs.env;
|
env = finalAttrs.env;
|
||||||
|
|
||||||
packages =
|
packages =
|
||||||
lib.optional (stdenv.cc.isClang && stdenv.hostPlatform == stdenv.buildPlatform) clang-tools_llvm
|
lib.optional (stdenv.cc.isClang && hostPlatform == buildPlatform) clang-tools_llvm
|
||||||
++ [
|
++ [
|
||||||
just
|
just
|
||||||
nixfmt
|
nixfmt
|
||||||
|
@ -435,7 +436,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
llvmPackages.clang-unwrapped.dev
|
llvmPackages.clang-unwrapped.dev
|
||||||
]
|
]
|
||||||
++ lib.optional (pre-commit-checks ? enabledPackages) pre-commit-checks.enabledPackages
|
++ lib.optional (pre-commit-checks ? enabledPackages) pre-commit-checks.enabledPackages
|
||||||
++ lib.optional (lib.meta.availableOn stdenv.buildPlatform clangbuildanalyzer) clangbuildanalyzer
|
++ lib.optional (lib.meta.availableOn buildPlatform clangbuildanalyzer) clangbuildanalyzer
|
||||||
++ finalAttrs.checkInputs;
|
++ finalAttrs.checkInputs;
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
|
Loading…
Reference in a new issue