135 lines
2.6 KiB
Nix
135 lines
2.6 KiB
Nix
{ buildGoModule
|
|
, fetchFromGitHub
|
|
, python3Packages
|
|
}:
|
|
let
|
|
mkBasePackage =
|
|
{ pname
|
|
, src
|
|
, version
|
|
, vendorHash
|
|
, cmd
|
|
, extraLdflags
|
|
, ...
|
|
}@args: buildGoModule (rec {
|
|
inherit pname src vendorHash version;
|
|
|
|
sourceRoot = "${src.name}/provider";
|
|
|
|
subPackages = [ "cmd/${cmd}" ];
|
|
|
|
doCheck = false;
|
|
|
|
ldflags = [
|
|
"-s"
|
|
"-w"
|
|
] ++ extraLdflags;
|
|
} // args);
|
|
|
|
mkPythonPackage =
|
|
{ meta
|
|
, pname
|
|
, src
|
|
, version
|
|
, ...
|
|
}: python3Packages.callPackage
|
|
({ buildPythonPackage, pythonOlder, parver, pip, pulumi, semver, setuptools }:
|
|
buildPythonPackage rec {
|
|
inherit pname meta src version;
|
|
format = "pyproject";
|
|
|
|
disabled = pythonOlder "3.7";
|
|
|
|
sourceRoot = "${src.name}/sdk/python";
|
|
|
|
propagatedBuildInputs = [
|
|
parver
|
|
pulumi
|
|
semver
|
|
setuptools
|
|
];
|
|
|
|
postPatch = ''
|
|
if [[ -e "pyproject.toml" ]]; then
|
|
sed -i \
|
|
-e 's/^ version = .*/ version = "${version}"/g' \
|
|
pyproject.toml
|
|
else
|
|
sed -i \
|
|
-e 's/^VERSION = .*/VERSION = "${version}"/g' \
|
|
-e 's/^PLUGIN_VERSION = .*/PLUGIN_VERSION = "${version}"/g' \
|
|
setup.py
|
|
fi
|
|
'';
|
|
|
|
# Auto-generated; upstream does not have any tests.
|
|
# Verify that the version substitution works
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
|
|
${pip}/bin/pip show "${pname}" | grep "Version: ${version}" > /dev/null \
|
|
|| (echo "ERROR: Version substitution seems to be broken"; exit 1)
|
|
|
|
runHook postCheck
|
|
'';
|
|
|
|
pythonImportsCheck = [
|
|
(builtins.replaceStrings [ "-" ] [ "_" ] pname)
|
|
];
|
|
})
|
|
{ };
|
|
in
|
|
{ owner
|
|
, repo
|
|
, rev
|
|
, version
|
|
, hash
|
|
, vendorHash
|
|
, cmdGen
|
|
, cmdRes
|
|
, extraLdflags
|
|
, meta
|
|
, fetchSubmodules ? false
|
|
, ...
|
|
}@args:
|
|
let
|
|
src = fetchFromGitHub {
|
|
name = "source-${repo}-${rev}";
|
|
inherit owner repo rev hash fetchSubmodules;
|
|
};
|
|
|
|
pulumi-gen = mkBasePackage rec {
|
|
inherit src version vendorHash extraLdflags;
|
|
|
|
cmd = cmdGen;
|
|
pname = cmdGen;
|
|
};
|
|
in
|
|
mkBasePackage ({
|
|
inherit meta src version vendorHash extraLdflags;
|
|
|
|
pname = repo;
|
|
|
|
nativeBuildInputs = [
|
|
pulumi-gen
|
|
];
|
|
|
|
cmd = cmdRes;
|
|
|
|
postConfigure = ''
|
|
pushd ..
|
|
|
|
chmod +w sdk/
|
|
${cmdGen} schema
|
|
|
|
popd
|
|
|
|
VERSION=v${version} go generate cmd/${cmdRes}/main.go
|
|
'';
|
|
|
|
passthru.sdks.python = mkPythonPackage {
|
|
inherit meta src version;
|
|
|
|
pname = repo;
|
|
};
|
|
} // args)
|