Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
159 lines
4.0 KiB
Nix
159 lines
4.0 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
buildGoModule,
|
|
faketty,
|
|
fetchFromGitHub,
|
|
fetchYarnDeps,
|
|
fixup-yarn-lock,
|
|
go,
|
|
makeWrapper,
|
|
nodejs,
|
|
nix-update-script,
|
|
patchelf,
|
|
removeReferencesTo,
|
|
testers,
|
|
yarn,
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "cdktf-cli";
|
|
version = "0.21.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "hashicorp";
|
|
repo = "terraform-cdk";
|
|
tag = "v${finalAttrs.version}";
|
|
hash = "sha256-iqy8j1bqwjSRBOj8kjFtAq9dLiv6dDbJsiFGQUhGW7k=";
|
|
};
|
|
|
|
offlineCache = fetchYarnDeps {
|
|
yarnLock = "${finalAttrs.src}/yarn.lock";
|
|
hash = "sha256-qGjzy/+u8Ui9aHK0sX3MfYbkj5Cqab4RlhOgrwbEmGs=";
|
|
};
|
|
|
|
hcl2json-go-modules =
|
|
(buildGoModule {
|
|
pname = "cdktf-hcl2json-go-modules";
|
|
inherit (finalAttrs) version src;
|
|
modRoot = "packages/@cdktf/hcl2json";
|
|
vendorHash = "sha256-OiKPq0CHkOxJaFzgsaNJ02tasvHtHWylmaPRPayJob4=";
|
|
proxyVendor = true;
|
|
doCheck = false;
|
|
env.GOWORK = "off";
|
|
}).goModules;
|
|
|
|
hcltools-go-modules =
|
|
(buildGoModule {
|
|
pname = "cdktf-hcltools-go-modules";
|
|
inherit (finalAttrs) version src;
|
|
modRoot = "packages/@cdktf/hcl-tools";
|
|
vendorHash = "sha256-orGxkYEQVtTKvXb7/FD/CLwqSINgBQFTF5arbR0xAvE=";
|
|
proxyVendor = true;
|
|
doCheck = false;
|
|
env.GOWORK = "off";
|
|
}).goModules;
|
|
|
|
strictDeps = true;
|
|
disallowedReferences = [ go ];
|
|
|
|
nativeBuildInputs = [
|
|
faketty
|
|
fixup-yarn-lock
|
|
go
|
|
makeWrapper
|
|
nodejs
|
|
patchelf
|
|
removeReferencesTo
|
|
yarn
|
|
];
|
|
|
|
postPatch = ''
|
|
# wasm_exec has moved to lib in newer versions of Go
|
|
substituteInPlace packages/@cdktf/hcl-tools/prebuild.sh \
|
|
--replace-fail "misc/wasm/wasm_exec.js" "lib/wasm/wasm_exec.js"
|
|
substituteInPlace packages/@cdktf/hcl2json/prebuild.sh \
|
|
--replace-fail "misc/wasm/wasm_exec.js" "lib/wasm/wasm_exec.js"
|
|
'';
|
|
|
|
preConfigure = ''
|
|
export GOCACHE=$TMPDIR/go-cache
|
|
export GOPATH=$TMPDIR/go
|
|
export GOPROXY=file://${finalAttrs.hcltools-go-modules},file://${finalAttrs.hcl2json-go-modules}
|
|
export GOSUMDB=off
|
|
|
|
# Stop the build from trying to write checkpoints to /var/empty/
|
|
export CHECKPOINT_DISABLE=1
|
|
'';
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
|
|
export HOME=$(mktemp -d)
|
|
yarn config --offline set yarn-offline-mirror $offlineCache
|
|
fixup-yarn-lock yarn.lock
|
|
yarn --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive install
|
|
patchShebangs node_modules packages
|
|
|
|
runHook postConfigure
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
faketty yarn --offline build
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
doCheck = true;
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
|
|
# Skip tests that require terraform (unfree)
|
|
yarn --offline workspace cdktf-cli test -- \
|
|
--testPathIgnorePatterns \
|
|
"src/test/cmds/(convert|init).test.ts"
|
|
|
|
runHook postCheck
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
yarn --offline --production install
|
|
|
|
mkdir -p "$out/lib/node_modules/cdktf-cli"
|
|
cp -rL node_modules packages/cdktf-cli/bundle packages/cdktf-cli/package.json "$out/lib/node_modules/cdktf-cli/"
|
|
|
|
makeWrapper "${lib.getExe nodejs}" "$out/bin/cdktf" \
|
|
--add-flags "$out/lib/node_modules/cdktf-cli/bundle/bin/cdktf.js"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
postInstall = ''
|
|
# Go isn't needed at runtime, so remove these to decrease the closure size
|
|
remove-references-to -t ${go} \
|
|
"$out/lib/node_modules/cdktf-cli/node_modules/@cdktf/hcl-tools/main.wasm" \
|
|
"$out/lib/node_modules/cdktf-cli/node_modules/@cdktf/hcl2json/main.wasm"
|
|
'';
|
|
|
|
passthru = {
|
|
tests.version = testers.testVersion {
|
|
package = finalAttrs.finalPackage;
|
|
};
|
|
updateScript = nix-update-script { };
|
|
};
|
|
|
|
meta = {
|
|
description = "CDK for Terraform CLI";
|
|
homepage = "https://github.com/hashicorp/terraform-cdk";
|
|
changelog = "https://github.com/hashicorp/terraform-cdk/releases/tag/${finalAttrs.src.tag}";
|
|
license = lib.licenses.mpl20;
|
|
mainProgram = "cdktf";
|
|
maintainers = with lib.maintainers; [ deejayem ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
})
|