nixpkgs/pkgs/by-name/mu/munge/package.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

79 lines
1.7 KiB
Nix
Raw Normal View History

{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
libgcrypt,
zlib,
bzip2,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "munge";
2024-03-16 01:14:45 +00:00
version = "0.5.16";
src = fetchFromGitHub {
owner = "dun";
repo = "munge";
rev = "munge-${finalAttrs.version}";
2024-03-16 01:14:45 +00:00
sha256 = "sha256-fv42RMUAP8Os33/iHXr70i5Pt2JWZK71DN5vFI3q7Ak=";
};
2022-06-11 13:58:26 +00:00
nativeBuildInputs = [
autoreconfHook
libgcrypt # provides libgcrypt.m4
];
buildInputs = [
libgcrypt
zlib
bzip2
];
strictDeps = true;
configureFlags = [
munge: Fix installation paths Removing `src/etc/Makefile` is overly intrusive, as the file is responsible for installing pkg-config file. The issue when it would try to write to the specified out-of-store paths can be easily resolved by overriding them to ones within `$out` during installation. Also set `sysconfdir` path properly to allow configuring it with `environment.etc`. There should be no problem with missing files, as nothing was installed to `$out/etc` previously either, other than an empty `munge` directory. `localstatedir` is used at runtime and installation creates empty directories in `$out`. But since we do not merge those directories into running system, having them in `$out` serves no purpose. Creation of `StateDir` and logging is handled by systemd anyway. `runstatedir` defaults to `$(localstatedir)/run` but that has long been deprecated in favour of `/run`, so let’s fix that as well. `pkgconfigdir` and `sysconfigdir` (not to be confused with the standard `sysconfdir`) rely on FHS for proper detection and `systemdunitdir` tries to run `systemd --version`, let’s just hardcode them. `sysconfigdir` is mentioned in the newly installed and currently unused `munge.service` – a file within is loaded as `EnvironmentFile` when it exists so let’s override the path for installation. This will again make it so the file can serve as a template in `$out` but the service will load it from `/etc`. The last two options are installation-only so we can directly set them to `$out` subdirectories.
2024-06-12 21:40:31 +00:00
# Load data from proper global paths
"--localstatedir=/var"
munge: Fix installation paths Removing `src/etc/Makefile` is overly intrusive, as the file is responsible for installing pkg-config file. The issue when it would try to write to the specified out-of-store paths can be easily resolved by overriding them to ones within `$out` during installation. Also set `sysconfdir` path properly to allow configuring it with `environment.etc`. There should be no problem with missing files, as nothing was installed to `$out/etc` previously either, other than an empty `munge` directory. `localstatedir` is used at runtime and installation creates empty directories in `$out`. But since we do not merge those directories into running system, having them in `$out` serves no purpose. Creation of `StateDir` and logging is handled by systemd anyway. `runstatedir` defaults to `$(localstatedir)/run` but that has long been deprecated in favour of `/run`, so let’s fix that as well. `pkgconfigdir` and `sysconfigdir` (not to be confused with the standard `sysconfdir`) rely on FHS for proper detection and `systemdunitdir` tries to run `systemd --version`, let’s just hardcode them. `sysconfigdir` is mentioned in the newly installed and currently unused `munge.service` – a file within is loaded as `EnvironmentFile` when it exists so let’s override the path for installation. This will again make it so the file can serve as a template in `$out` but the service will load it from `/etc`. The last two options are installation-only so we can directly set them to `$out` subdirectories.
2024-06-12 21:40:31 +00:00
"--sysconfdir=/etc"
"--runstatedir=/run"
"--with-sysconfigdir=/etc/default"
# Install data to proper directories
"--with-pkgconfigdir=${placeholder "out"}/lib/pkgconfig"
"--with-systemdunitdir=${placeholder "out"}/lib/systemd/system"
# Cross-compilation hacks
"--with-libgcrypt-prefix=${lib.getDev libgcrypt}"
2022-06-11 13:58:26 +00:00
# workaround for cross compilation: https://github.com/dun/munge/issues/103
"ac_cv_file__dev_spx=no"
"x_ac_cv_check_fifo_recvfd=no"
];
munge: Fix installation paths Removing `src/etc/Makefile` is overly intrusive, as the file is responsible for installing pkg-config file. The issue when it would try to write to the specified out-of-store paths can be easily resolved by overriding them to ones within `$out` during installation. Also set `sysconfdir` path properly to allow configuring it with `environment.etc`. There should be no problem with missing files, as nothing was installed to `$out/etc` previously either, other than an empty `munge` directory. `localstatedir` is used at runtime and installation creates empty directories in `$out`. But since we do not merge those directories into running system, having them in `$out` serves no purpose. Creation of `StateDir` and logging is handled by systemd anyway. `runstatedir` defaults to `$(localstatedir)/run` but that has long been deprecated in favour of `/run`, so let’s fix that as well. `pkgconfigdir` and `sysconfigdir` (not to be confused with the standard `sysconfdir`) rely on FHS for proper detection and `systemdunitdir` tries to run `systemd --version`, let’s just hardcode them. `sysconfigdir` is mentioned in the newly installed and currently unused `munge.service` – a file within is loaded as `EnvironmentFile` when it exists so let’s override the path for installation. This will again make it so the file can serve as a template in `$out` but the service will load it from `/etc`. The last two options are installation-only so we can directly set them to `$out` subdirectories.
2024-06-12 21:40:31 +00:00
installFlags = [
"localstatedir=${placeholder "out"}/var"
"runstatedir=${placeholder "out"}/run"
"sysconfdir=${placeholder "out"}/etc"
"sysconfigdir=${placeholder "out"}/etc/default"
];
postInstall = ''
# rmdir will notify us if anything new is installed to the directories.
rmdir "$out"/{var{/{lib,log}{/munge,},},etc/munge}
'';
meta = with lib; {
description = ''
An authentication service for creating and validating credentials
'';
license = [
# MUNGE
licenses.gpl3Plus
# libmunge
licenses.lgpl3Plus
];
2017-07-13 01:34:56 +00:00
platforms = platforms.unix;
maintainers = [ maintainers.rickynils ];
};
})