muon: use two-stage build, only use needed srcs

Had to work around an issue with the fetchFromSourcehut fetcher. #441478
This commit is contained in:
winston
2025-09-10 04:21:44 +02:00
parent 1992ee8943
commit 5a64c8630b
2 changed files with 14 additions and 20 deletions
+8 -14
View File
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
pname = "muon" + lib.optionalString embedSamurai "-embedded-samurai";
version = "0.5.0";
srcs = builtins.attrValues finalAttrs.passthru.srcs;
srcs = builtins.attrValues (lib.filterAttrs (_: v: v.use or true) finalAttrs.passthru.srcsAttrs);
sourceRoot = "muon-src";
@@ -93,6 +93,7 @@ stdenv.mkDerivation (finalAttrs: {
muonEnable = lib.mesonEnable;
muonOption = lib.mesonOption;
bootstrapFlags = lib.optionalString (!embedSamurai) "CFLAGS=\"$CFLAGS -DBOOTSTRAP_NO_SAMU\"";
# see `muon options -a` to see built-in options
cmdlineForMuon = lib.concatStringsSep " " [
(muonOption "prefix" (placeholder "out"))
@@ -115,16 +116,10 @@ stdenv.mkDerivation (finalAttrs: {
''
runHook preBuild
${
lib.optionalString (!embedSamurai) "CFLAGS=\"$CFLAGS -DBOOTSTRAP_NO_SAMU\""
} ./bootstrap.sh stage-1
${bootstrapFlags} ./bootstrap.sh stage-1
./stage-1/muon-bootstrap setup ${cmdlineForMuon} stage-2
${lib.optionalString embedSamurai "./stage-1/muon-bootstrap"} samu ${cmdlineForSamu} -C stage-2
./stage-2/muon setup ${cmdlineForMuon} stage-3
${lib.optionalString embedSamurai "./stage-2/muon"} samu ${cmdlineForSamu} -C stage-3
runHook postBuild
'';
@@ -147,10 +142,7 @@ stdenv.mkDerivation (finalAttrs: {
checkPhase = ''
runHook preCheck
${lib.optionalString (
stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64
) "NIX_BUILD_CORES=1"}
./stage-3/muon -C stage-3 test -d dots -S -j$NIX_BUILD_CORES
./stage-2/muon -C stage-2 test -d dots -S -j$NIX_BUILD_CORES
runHook postCheck
'';
@@ -158,12 +150,12 @@ stdenv.mkDerivation (finalAttrs: {
installPhase = ''
runHook preInstall
stage-3/muon -C stage-3 install
stage-2/muon -C stage-2 install
runHook postInstall
'';
passthru.srcs = {
passthru.srcsAttrs = {
muon-src = fetchFromSourcehut {
name = "muon-src";
owner = "~lattis";
@@ -177,6 +169,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "muon-build";
rev = "1017b3413601044fb41ad04977445e68a80e8181";
hash = "sha256-aFpyJFIqybLNKhm/kyfCjYylj7DE6muI1+OUh4Cq4WY=";
passthru.use = buildDocs;
};
meson-tests = fetchFromGitHub {
name = "meson-tests";
@@ -184,6 +177,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "muon-build";
rev = "db92588773a24f67cda2f331b945825ca3a63fa7";
hash = "sha256-z4Fc1lr/m2MwIwhXJwoFWpzeNg+udzMxuw5Q/zVvpSM=";
passthru.use = finalAttrs.doCheck;
};
};
+6 -6
View File
@@ -16,20 +16,20 @@ lib.getExe (writeShellApplication {
];
text = ''
REPO=$(nix-instantiate --raw --eval -E "with import ./. {}; muon.passthru.srcs.muon-src.meta.homepage")
REPO=$(nix-instantiate --raw --eval -E "with import ./. {}; muon.srcsAttrs.muon-src.meta.homepage")
MUON_VERSION=$(list-git-tags --url="$REPO" | tail -1)
update-source-version "muon" \
"$MUON_VERSION" \
--version-key=version \
--source-key=passthru.srcs.muon-src
--source-key=srcsAttrs.muon-src
update-source-version "muon" \
"$(curl -s "$REPO/blob/$MUON_VERSION/subprojects/meson-docs.wrap" | grep -oP "revision = \K.+$")" \
--version-key=passthru.srcs.meson-docs.rev \
--source-key=passthru.srcs.meson-docs
--version-key=srcsAttrs.meson-docs.rev \
--source-key=srcsAttrs.meson-docs
update-source-version "muon" \
"$(curl -s "$REPO/blob/$MUON_VERSION/subprojects/meson-tests.wrap" | grep -oP "revision = \K.+$")" \
--version-key=passthru.srcs.meson-tests.rev \
--source-key=passthru.srcs.meson-tests
--version-key=srcsAttrs.meson-tests.rev \
--source-key=srcsAttrs.meson-tests
'';
})