diff options
author | AndersonTorres <torres.anderson.85@protonmail.com> | 2022-04-23 11:28:20 -0300 |
---|---|---|
committer | AndersonTorres <torres.anderson.85@protonmail.com> | 2022-09-24 19:59:41 -0300 |
commit | 954d07720abcf28ef7cd9152d380ddfb7992db1c (patch) | |
tree | 65519a504f8d2459f7ea58180972da126ce51a66 /pkgs/development/tools/build-managers/muon/default.nix | |
parent | f2ea9a9fcd41b65651fd89c1b9198798f4362f66 (diff) | |
download | nixpkgs-954d07720abcf28ef7cd9152d380ddfb7992db1c.tar nixpkgs-954d07720abcf28ef7cd9152d380ddfb7992db1c.tar.gz nixpkgs-954d07720abcf28ef7cd9152d380ddfb7992db1c.tar.bz2 nixpkgs-954d07720abcf28ef7cd9152d380ddfb7992db1c.tar.lz nixpkgs-954d07720abcf28ef7cd9152d380ddfb7992db1c.tar.xz nixpkgs-954d07720abcf28ef7cd9152d380ddfb7992db1c.tar.zst nixpkgs-954d07720abcf28ef7cd9152d380ddfb7992db1c.zip |
muon: init at unstable-2022-09-24
Diffstat (limited to 'pkgs/development/tools/build-managers/muon/default.nix')
-rw-r--r-- | pkgs/development/tools/build-managers/muon/default.nix | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/pkgs/development/tools/build-managers/muon/default.nix b/pkgs/development/tools/build-managers/muon/default.nix new file mode 100644 index 00000000000..937b53dac29 --- /dev/null +++ b/pkgs/development/tools/build-managers/muon/default.nix @@ -0,0 +1,138 @@ +{ lib +, stdenv +, fetchFromSourcehut +, fetchurl +, curl +, libarchive +, libpkgconf +, pkgconf +, python3 +, samurai +, scdoc +, zlib +, embedSamurai ? false +, buildDocs ? true +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "muon" + + lib.optionalString embedSamurai "-embedded-samurai"; + version = "unstable-2022-09-24"; + + src = fetchFromSourcehut { + name = "muon-src"; + owner = "~lattis"; + repo = "muon"; + rev = "f385c82a6104ea3341ca34756e2812d700bc43d8"; + hash = "sha256-Cr1r/sp6iVotU+n4bTzQiQl8Y+ShaqnnaWjL6gRW8p0="; + }; + + nativeBuildInputs = [ + pkgconf + samurai + ] + ++ lib.optionals buildDocs [ + (python3.withPackages (ps: [ ps.pyyaml ])) + scdoc + ]; + + buildInputs = [ + curl + libarchive + libpkgconf + samurai + zlib + ]; + + strictDeps = true; + + postUnpack = let + # URLs manually extracted from subprojects directory + meson-docs-wrap = fetchurl { + name = "meson-docs-wrap"; + url = "https://mochiro.moe/wrap/meson-docs-0.63.0-116-g8a45c81cf.tar.gz"; + hash = "sha256-fsXdhfBEXvw1mvqnPp2TgZnO5FaeHTNW3Nfd5qfTfxg="; + }; + + samurai-wrap = fetchurl { + name = "samurai-wrap"; + url = "https://mochiro.moe/wrap/samurai-1.2-28-g4e3a595.tar.gz"; + hash = "sha256-TZAEwndVgoWr/zhykfr0wcz9wM96yG44GfzM5p9TpBo="; + }; + in '' + pushd $sourceRoot/subprojects + ${lib.optionalString buildDocs "tar xvf ${meson-docs-wrap}"} + ${lib.optionalString embedSamurai "tar xvf ${samurai-wrap}"} + popd + ''; + + postPatch = '' + patchShebangs bootstrap.sh + '' + + lib.optionalString buildDocs '' + patchShebangs subprojects/meson-docs/docs/genrefman.py + ''; + + # tests try to access "~" + postConfigure = '' + export HOME=$(mktemp -d) + ''; + + buildPhase = let + featureFlag = feature: flag: + "-D${feature}=${if flag then "enabled" else "disabled"}"; + conditionFlag = condition: flag: + "-D${condition}=${lib.boolToString flag}"; + cmdlineForMuon = lib.concatStringsSep " " [ + (conditionFlag "static" stdenv.targetPlatform.isStatic) + (featureFlag "docs" buildDocs) + (featureFlag "samurai" embedSamurai) + ]; + cmdlineForSamu = "-j$NIX_BUILD_CORES"; + in '' + runHook preBuild + + ./bootstrap.sh stage-1 + + ./stage-1/muon setup ${cmdlineForMuon} stage-2 + samu ${cmdlineForSamu} -C stage-2 + + stage-2/muon setup -Dprefix=$out ${cmdlineForMuon} stage-3 + samu ${cmdlineForSamu} -C stage-3 + + runHook postBuild + ''; + + # tests are failing because they don't find Python + doCheck = false; + + checkPhase = '' + runHook preCheck + + ./stage-3/muon -C stage-3 test + + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + + stage-3/muon -C stage-3 install + + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://muon.build/"; + description = "An implementation of Meson build system in C99"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.unix; + broken = stdenv.isDarwin; # typical `ar failure` + }; +}) +# TODO LIST: +# 1. setup hook +# 2. multiple outputs +# 3. automate sources acquisition (especially wraps) +# 4. tests |