9bb3fccb5b
continuation of #109595 pkgconfig was aliased in 2018, however, it remained in all-packages.nix due to its wide usage. This cleans up the remaining references to pkgs.pkgsconfig and moves the entry to aliases.nix. python3Packages.pkgconfig remained unchanged because it's the canonical name of the upstream package on pypi.
96 lines
3.2 KiB
Nix
96 lines
3.2 KiB
Nix
{ lib
|
||
, python3
|
||
, stdenv
|
||
, writeTextDir
|
||
, substituteAll
|
||
, fetchpatch
|
||
, installShellFiles
|
||
}:
|
||
|
||
python3.pkgs.buildPythonApplication rec {
|
||
pname = "meson";
|
||
version = "0.56.0";
|
||
|
||
src = python3.pkgs.fetchPypi {
|
||
inherit pname version;
|
||
sha256 = "04vj250bwrzq7c0z1r96b0z0vgirvn0m367wm3ygqmfdy67x6799";
|
||
};
|
||
|
||
patches = [
|
||
# Upstream insists on not allowing bindir and other dir options
|
||
# outside of prefix for some reason:
|
||
# https://github.com/mesonbuild/meson/issues/2561
|
||
# We remove the check so multiple outputs can work sanely.
|
||
./allow-dirs-outside-of-prefix.patch
|
||
|
||
# Meson is currently inspecting fewer variables than autoconf does, which
|
||
# makes it harder for us to use setup hooks, etc. Taken from
|
||
# https://github.com/mesonbuild/meson/pull/6827
|
||
./more-env-vars.patch
|
||
|
||
# Unlike libtool, vanilla Meson does not pass any information
|
||
# about the path library will be installed to to g-ir-scanner,
|
||
# breaking the GIR when path other than ${!outputLib}/lib is used.
|
||
# We patch Meson to add a --fallback-library-path argument with
|
||
# library install_dir to g-ir-scanner.
|
||
./gir-fallback-path.patch
|
||
|
||
# In common distributions, RPATH is only needed for internal libraries so
|
||
# meson removes everything else. With Nix, the locations of libraries
|
||
# are not as predictable, therefore we need to keep them in the RPATH.
|
||
# At the moment we are keeping the paths starting with /nix/store.
|
||
# https://github.com/NixOS/nixpkgs/issues/31222#issuecomment-365811634
|
||
(substituteAll {
|
||
src = ./fix-rpath.patch;
|
||
inherit (builtins) storeDir;
|
||
})
|
||
|
||
# When Meson removes build_rpath from DT_RUNPATH entry, it just writes
|
||
# the shorter NUL-terminated new rpath over the old one to reduce
|
||
# the risk of potentially breaking the ELF files.
|
||
# But this can cause much bigger problem for Nix as it can produce
|
||
# cut-in-half-by-\0 store path references.
|
||
# Let’s just clear the whole rpath and hope for the best.
|
||
./clear-old-rpath.patch
|
||
|
||
# Patch out default boost search paths to avoid impure builds on
|
||
# unsandboxed non-NixOS builds, see:
|
||
# https://github.com/NixOS/nixpkgs/issues/86131#issuecomment-711051774
|
||
./boost-Do-not-add-system-paths-on-nix.patch
|
||
];
|
||
|
||
setupHook = ./setup-hook.sh;
|
||
|
||
# 0.45 update enabled tests but they are failing
|
||
doCheck = false;
|
||
# checkInputs = [ ninja pkg-config ];
|
||
# checkPhase = "python ./run_project_tests.py";
|
||
|
||
postFixup = ''
|
||
pushd $out/bin
|
||
# undo shell wrapper as meson tools are called with python
|
||
for i in *; do
|
||
mv ".$i-wrapped" "$i"
|
||
done
|
||
popd
|
||
|
||
# Do not propagate Python
|
||
rm $out/nix-support/propagated-build-inputs
|
||
'';
|
||
|
||
nativeBuildInputs = [ installShellFiles ];
|
||
|
||
postInstall = ''
|
||
installShellCompletion --zsh data/shell-completions/zsh/_meson
|
||
installShellCompletion --bash data/shell-completions/bash/meson
|
||
'';
|
||
|
||
meta = with lib; {
|
||
homepage = "https://mesonbuild.com";
|
||
description = "SCons-like build system that use python as a front-end language and Ninja as a building backend";
|
||
license = licenses.asl20;
|
||
maintainers = with maintainers; [ jtojnar mbe ];
|
||
platforms = platforms.all;
|
||
};
|
||
}
|