diff --git a/pkgs/tools/package-management/lix/common-lix.nix b/pkgs/tools/package-management/lix/common-lix.nix index 1e62021c7f68..13f6d88828e6 100644 --- a/pkgs/tools/package-management/lix/common-lix.nix +++ b/pkgs/tools/package-management/lix/common-lix.nix @@ -42,6 +42,7 @@ assert lib.assertMsg ( libarchive, libcpuid, libsodium, + libsystemtap, llvmPackages, lowdown, lowdown-unsandboxed, @@ -59,9 +60,11 @@ assert lib.assertMsg ( pkg-config, rapidcheck, sqlite, + systemtap-sdt, util-linuxMinimal, removeReferencesTo, xz, + yq, nixosTests, rustPlatform, # Only used for versions before 2.92. @@ -76,6 +79,10 @@ assert lib.assertMsg ( enableStrictLLVMChecks ? true, withAWS ? !enableStatic && (stdenv.hostPlatform.isLinux || stdenv.hostPlatform.isDarwin), aws-sdk-cpp, + # FIXME support Darwin once https://github.com/NixOS/nixpkgs/pull/392918 lands + withDtrace ? + lib.meta.availableOn stdenv.hostPlatform libsystemtap + && lib.meta.availableOn stdenv.buildPlatform systemtap-sdt, # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50 withLibseccomp ? lib.meta.availableOn stdenv.hostPlatform libseccomp, libseccomp, @@ -88,6 +95,8 @@ let isLLVMOnly = lib.versionAtLeast version "2.92"; hasExternalLixDoc = lib.versionOlder version "2.92"; isLegacyParser = lib.versionOlder version "2.91"; + hasDtraceSupport = lib.versionAtLeast version "2.93"; + parseToYAML = lib.versionAtLeast version "2.93"; in # gcc miscompiles coroutines at least until 13.2, possibly longer # do not remove this check unless you are sure you (or your users) will not report bugs to Lix upstream about GCC miscompilations. @@ -159,6 +168,8 @@ stdenv.mkDerivation (finalAttrs: { mdbook-linkcheck doxygen ] + ++ lib.optionals (hasDtraceSupport && withDtrace) [ systemtap-sdt ] + ++ lib.optionals parseToYAML [ yq ] ++ lib.optionals stdenv.hostPlatform.isLinux [ util-linuxMinimal ]; buildInputs = @@ -187,7 +198,8 @@ stdenv.mkDerivation (finalAttrs: { ++ lib.optionals stdenv.hostPlatform.isStatic [ llvmPackages.libunwind ] ++ lib.optionals (stdenv.hostPlatform.isx86_64) [ libcpuid ] ++ lib.optionals withLibseccomp [ libseccomp ] - ++ lib.optionals withAWS [ aws-sdk-cpp ]; + ++ lib.optionals withAWS [ aws-sdk-cpp ] + ++ lib.optionals (hasDtraceSupport && withDtrace) [ libsystemtap ]; inherit cargoDeps; @@ -256,6 +268,9 @@ stdenv.mkDerivation (finalAttrs: { (lib.mesonOption "state-dir" stateDir) (lib.mesonOption "sysconfdir" confDir) ] + ++ lib.optionals hasDtraceSupport [ + (lib.mesonEnable "dtrace-probes" withDtrace) + ] ++ lib.optionals stdenv.hostPlatform.isLinux [ (lib.mesonOption "sandbox-shell" "${busybox-sandbox-shell}/bin/busybox") ]; diff --git a/pkgs/tools/package-management/lix/common-nix-eval-jobs.nix b/pkgs/tools/package-management/lix/common-nix-eval-jobs.nix index 3241627f15dc..07237c34ee3a 100644 --- a/pkgs/tools/package-management/lix/common-nix-eval-jobs.nix +++ b/pkgs/tools/package-management/lix/common-nix-eval-jobs.nix @@ -11,6 +11,7 @@ lib, lix, boost, + capnproto, nlohmann_json, meson, pkg-config, @@ -23,11 +24,16 @@ stdenv.mkDerivation { pname = "nix-eval-jobs"; version = "${version}${suffix}"; inherit src patches; - buildInputs = [ - nlohmann_json - lix - boost - ]; + sourceRoot = if lib.versionAtLeast version "2.93" then "source/subprojects/nix-eval-jobs" else null; + buildInputs = + [ + nlohmann_json + lix + boost + ] + ++ lib.optionals (lib.versionAtLeast version "2.93") [ + capnproto + ]; nativeBuildInputs = [ meson pkg-config diff --git a/pkgs/tools/package-management/lix/default.nix b/pkgs/tools/package-management/lix/default.nix index 43d873e26129..0273a7561c0e 100644 --- a/pkgs/tools/package-management/lix/default.nix +++ b/pkgs/tools/package-management/lix/default.nix @@ -8,6 +8,7 @@ callPackage, fetchgit, fetchFromGitHub, + fetchFromGitea, rustPlatform, editline, ncurses, @@ -25,7 +26,8 @@ let { attrName, lix-args, - nix-eval-jobs-args, + # Starting with 2.93, `nix-eval-jobs` lives in the `lix` repository. + nix-eval-jobs-args ? { inherit (lix-args) version src; }, }: let # GCC 13.2 is known to miscompile Lix coroutines (introduced in 2.92). @@ -192,7 +194,6 @@ lib.makeExtensible (self: { cargoDeps = rustPlatform.fetchCargoVendor { name = "lix-${version}"; inherit src; - allowGitDependencies = false; hash = "sha256-YMyNOXdlx0I30SkcmdW/6DU0BYc3ZOa2FMJSKMkr7I8="; }; }; @@ -207,7 +208,29 @@ lib.makeExtensible (self: { }; }; - latest = self.lix_2_92; + lix_2_93 = self.makeLixScope { + attrName = "lix_2_93"; + + lix-args = rec { + version = "2.93.0"; + + src = fetchFromGitea { + domain = "git.lix.systems"; + owner = "lix-project"; + repo = "lix"; + rev = version; + hash = "sha256-hsFe4Tsqqg4l+FfQWphDtjC79WzNCZbEFhHI8j2KJzw="; + }; + + cargoDeps = rustPlatform.fetchCargoVendor { + name = "lix-${version}"; + inherit src; + hash = "sha256-YMyNOXdlx0I30SkcmdW/6DU0BYc3ZOa2FMJSKMkr7I8="; + }; + }; + }; + + latest = self.lix_2_93; # Note: This is not yet 2.92 because of a non-deterministic `curl` error. # See: https://git.lix.systems/lix-project/lix/issues/662