Files
nixpkgs/pkgs/servers/sql/postgresql/ext/plr.nix
Wolfgang Walther 08883bbf9c postgresqlPackages.plr: add withPackages helper
This allows passing packages to PL/R without rebuilding anything.
2025-03-21 18:19:43 +01:00

67 lines
1.6 KiB
Nix

{
buildEnv,
fetchFromGitHub,
lib,
pkg-config,
postgresql,
postgresqlBuildExtension,
postgresqlTestExtension,
R,
rPackages,
stdenv,
}:
postgresqlBuildExtension (finalAttrs: {
pname = "plr";
version = "${builtins.replaceStrings [ "_" ] [ "." ] (
lib.strings.removePrefix "REL" finalAttrs.src.rev
)}";
src = fetchFromGitHub {
owner = "postgres-plr";
repo = "plr";
tag = "REL8_4_7";
hash = "sha256-PdvFEmtKfLT/xfaf6obomPR5hKC9F+wqpfi1heBphRk=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ R ];
makeFlags = [ "USE_PGXS=1" ];
passthru = {
withPackages =
f:
let
pkgs = f rPackages;
paths = lib.concatMapStringsSep ":" (pkg: "${pkg}/library") pkgs;
in
buildEnv {
name = "${finalAttrs.pname}-with-packages-${finalAttrs.version}";
paths = [ finalAttrs.finalPackage ];
passthru.wrapperArgs = [
''--set R_LIBS_SITE "${paths}"''
];
};
tests.extension = postgresqlTestExtension {
finalPackage = finalAttrs.finalPackage.withPackages (ps: [ ps.base64enc ]);
sql = ''
CREATE EXTENSION plr;
DO LANGUAGE plr $$
require('base64enc')
base64encode(1:100)
$$;
'';
};
};
meta = {
description = "PL/R - R Procedural Language for PostgreSQL";
homepage = "https://github.com/postgres-plr/plr";
changelog = "https://github.com/postgres-plr/plr/blob/${finalAttrs.src.rev}/changelog.md";
maintainers = with lib.maintainers; [ qoelet ];
platforms = postgresql.meta.platforms;
license = lib.licenses.gpl2Only;
};
})