postgresql: move postgresqlWithPackages to separate file
Moves the function to a separate file and makes it callPackage-able. Now that buildEnv also supports finalAttrs, the finalPackage construct can also be rewritten that way. This gives us clear separation of concern between the package builder in generic.nix and wrapper.nix.
This commit is contained in:
@@ -39,7 +39,6 @@ let
|
||||
removeReferencesTo,
|
||||
|
||||
# passthru
|
||||
buildEnv,
|
||||
buildPackages,
|
||||
newScope,
|
||||
nixosTests,
|
||||
@@ -542,10 +541,7 @@ let
|
||||
in
|
||||
import ./ext.nix newSelf newSuper;
|
||||
|
||||
withPackages = postgresqlWithPackages {
|
||||
inherit buildEnv lib makeBinaryWrapper;
|
||||
postgresql = finalAttrs.finalPackage;
|
||||
};
|
||||
withPackages = self.callPackage ./wrapper.nix { postgresql = finalAttrs.finalPackage; };
|
||||
|
||||
pg_config = buildPackages.callPackage ./pg_config.nix {
|
||||
inherit (finalAttrs) finalPackage;
|
||||
@@ -604,77 +600,6 @@ let
|
||||
};
|
||||
});
|
||||
|
||||
postgresqlWithPackages =
|
||||
{
|
||||
postgresql,
|
||||
buildEnv,
|
||||
lib,
|
||||
makeBinaryWrapper,
|
||||
}:
|
||||
f:
|
||||
let
|
||||
installedExtensions = f postgresql.pkgs;
|
||||
recurse = postgresqlWithPackages {
|
||||
inherit
|
||||
buildEnv
|
||||
lib
|
||||
makeBinaryWrapper
|
||||
postgresql
|
||||
;
|
||||
};
|
||||
finalPackage = buildEnv {
|
||||
pname = "${postgresql.pname}-and-plugins";
|
||||
inherit (postgresql) version;
|
||||
paths = installedExtensions ++ [
|
||||
# consider keeping in-sync with `postBuild` below
|
||||
postgresql
|
||||
postgresql.man # in case user installs this into environment
|
||||
];
|
||||
|
||||
pathsToLink = [
|
||||
"/"
|
||||
"/bin"
|
||||
"/share/postgresql/extension"
|
||||
# Unbreaks Omnigres' build system
|
||||
"/share/postgresql/timezonesets"
|
||||
"/share/postgresql/tsearch_data"
|
||||
];
|
||||
|
||||
derivationArgs = {
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [ makeBinaryWrapper ];
|
||||
postBuild =
|
||||
let
|
||||
args = lib.concatMap (ext: ext.wrapperArgs or [ ]) installedExtensions;
|
||||
in
|
||||
''
|
||||
wrapProgram "$out/bin/postgres" ${lib.concatStringsSep " " args}
|
||||
'';
|
||||
};
|
||||
|
||||
passthru = {
|
||||
inherit installedExtensions;
|
||||
inherit (postgresql)
|
||||
pkgs
|
||||
psqlSchema
|
||||
;
|
||||
|
||||
pg_config = postgresql.pg_config.override {
|
||||
outputs = {
|
||||
out = finalPackage;
|
||||
man = finalPackage;
|
||||
};
|
||||
};
|
||||
|
||||
withJIT = recurse (_: installedExtensions ++ [ postgresql.jit ]);
|
||||
withoutJIT = recurse (_: lib.remove postgresql.jit installedExtensions);
|
||||
|
||||
withPackages = f': recurse (ps: installedExtensions ++ f' ps);
|
||||
};
|
||||
};
|
||||
in
|
||||
finalPackage;
|
||||
|
||||
in
|
||||
# passed by <major>.nix
|
||||
versionArgs:
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
buildEnv,
|
||||
callPackage,
|
||||
lib,
|
||||
makeBinaryWrapper,
|
||||
postgresql,
|
||||
}:
|
||||
f:
|
||||
let
|
||||
installedExtensions = f postgresql.pkgs;
|
||||
recurse = import ./wrapper.nix {
|
||||
# explicitly listed in case they were overridden
|
||||
inherit
|
||||
buildEnv
|
||||
callPackage
|
||||
lib
|
||||
makeBinaryWrapper
|
||||
postgresql
|
||||
;
|
||||
};
|
||||
in
|
||||
buildEnv (finalAttrs: {
|
||||
pname = "${postgresql.pname}-and-plugins";
|
||||
inherit (postgresql) version;
|
||||
paths = installedExtensions ++ [
|
||||
# consider keeping in-sync with `postBuild` below
|
||||
postgresql
|
||||
postgresql.man # in case user installs this into environment
|
||||
];
|
||||
|
||||
pathsToLink = [
|
||||
"/"
|
||||
"/bin"
|
||||
"/share/postgresql/extension"
|
||||
# Unbreaks Omnigres' build system
|
||||
"/share/postgresql/timezonesets"
|
||||
"/share/postgresql/tsearch_data"
|
||||
];
|
||||
|
||||
derivationArgs = {
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [ makeBinaryWrapper ];
|
||||
postBuild =
|
||||
let
|
||||
args = lib.concatMap (ext: ext.wrapperArgs or [ ]) installedExtensions;
|
||||
in
|
||||
''
|
||||
wrapProgram "$out/bin/postgres" ${lib.concatStringsSep " " args}
|
||||
'';
|
||||
};
|
||||
|
||||
passthru = {
|
||||
inherit installedExtensions;
|
||||
inherit (postgresql)
|
||||
pkgs
|
||||
psqlSchema
|
||||
;
|
||||
|
||||
pg_config = postgresql.pg_config.override {
|
||||
outputs = {
|
||||
out = finalAttrs.finalPackage;
|
||||
man = finalAttrs.finalPackage;
|
||||
};
|
||||
};
|
||||
|
||||
withJIT = recurse (_: installedExtensions ++ [ postgresql.jit ]);
|
||||
withoutJIT = recurse (_: lib.remove postgresql.jit installedExtensions);
|
||||
|
||||
withPackages = f': recurse (ps: installedExtensions ++ f' ps);
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user