at master 1.7 kB view raw
1{ 2 buildEnv, 3 fetchFromGitHub, 4 lib, 5 nix-update-script, 6 pkg-config, 7 postgresql, 8 postgresqlBuildExtension, 9 postgresqlTestExtension, 10 R, 11 rPackages, 12}: 13 14postgresqlBuildExtension (finalAttrs: { 15 pname = "plr"; 16 version = "8.4.8"; 17 18 src = fetchFromGitHub { 19 owner = "postgres-plr"; 20 repo = "plr"; 21 tag = "REL${lib.replaceString "." "_" finalAttrs.version}"; 22 hash = "sha256-FLL61HsZ6WaWBP9NqrJjhMFSVyVBIpVO0wv+kXMuAaU="; 23 }; 24 25 nativeBuildInputs = [ pkg-config ]; 26 buildInputs = [ R ]; 27 28 makeFlags = [ "USE_PGXS=1" ]; 29 30 passthru = { 31 updateScript = nix-update-script { 32 extraArgs = [ "--version-regex=^REL(\\d+)_(\\d+)_(\\d+)$" ]; 33 }; 34 withPackages = 35 f: 36 let 37 pkgs = f rPackages; 38 paths = lib.concatMapStringsSep ":" (pkg: "${pkg}/library") pkgs; 39 in 40 buildEnv { 41 name = "${finalAttrs.pname}-with-packages-${finalAttrs.version}"; 42 paths = [ finalAttrs.finalPackage ]; 43 passthru.wrapperArgs = [ 44 ''--set R_LIBS_SITE "${paths}"'' 45 ]; 46 }; 47 tests.extension = postgresqlTestExtension { 48 finalPackage = finalAttrs.finalPackage.withPackages (ps: [ ps.base64enc ]); 49 sql = '' 50 CREATE EXTENSION plr; 51 DO LANGUAGE plr $$ 52 require('base64enc') 53 base64encode(1:100) 54 $$; 55 ''; 56 }; 57 }; 58 59 meta = { 60 description = "PL/R - R Procedural Language for PostgreSQL"; 61 homepage = "https://github.com/postgres-plr/plr"; 62 changelog = "https://github.com/postgres-plr/plr/blob/${finalAttrs.src.rev}/changelog.md"; 63 maintainers = with lib.maintainers; [ qoelet ]; 64 platforms = postgresql.meta.platforms; 65 license = lib.licenses.gpl2Only; 66 }; 67})