143 lines
3.3 KiB
Nix
143 lines
3.3 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
nodejs,
|
|
yarn-berry_4,
|
|
diffutils,
|
|
zip,
|
|
jq,
|
|
python3,
|
|
unzip,
|
|
testers,
|
|
}:
|
|
|
|
let
|
|
yarn-berry = yarn-berry_4;
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "aws-cdk-cli";
|
|
version = "2.1134.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "aws";
|
|
repo = "aws-cdk-cli";
|
|
tag = "cdk@v${finalAttrs.version}";
|
|
hash = "sha256-VrP/L8uuTxC4TBEHhmuhNEf0nf5J8kYjOl3Kz1ejUPg=";
|
|
};
|
|
|
|
missingHashes = ./missing-hashes.json;
|
|
offlineCache = yarn-berry.fetchYarnBerryDeps {
|
|
inherit (finalAttrs) src missingHashes;
|
|
hash = "sha256-l6iKJvG8qbV6pp+XWS07lKqr63UABTLd4/dlJnosIRw=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
yarn-berry
|
|
yarn-berry.yarnBerryConfigHook
|
|
nodejs
|
|
python3
|
|
zip
|
|
jq
|
|
# tests
|
|
diffutils
|
|
unzip
|
|
];
|
|
|
|
env = {
|
|
NX_DISABLE_REMOTE_CACHE = "true";
|
|
NX_TASKS_RUNNER_DYNAMIC_OUTPUT = "false";
|
|
NX_VERBOSE_LOGGING = "true";
|
|
# Needed to properly embed version info
|
|
CODEBUILD_RESOLVED_SOURCE_VERSION = finalAttrs.version;
|
|
YARN_LOCKFILE_VERSION_OVERRIDE = "8";
|
|
};
|
|
|
|
# Regular "build" is very heavy and does things we don't need.
|
|
yarnBuildScript = "compile";
|
|
|
|
postPatch =
|
|
let
|
|
cliVersionJson = builtins.toJSON {
|
|
inherit (finalAttrs) version;
|
|
};
|
|
in
|
|
''
|
|
echo '${cliVersionJson}' > packages/@aws-cdk/cloud-assembly-schema/cli-version.json
|
|
cat >> .yarnrc.yml <<'EOF'
|
|
approvedGitRepositories:
|
|
- "**"
|
|
enableScripts: true
|
|
enableNetwork: false
|
|
enableHardenedMode: false
|
|
EOF
|
|
'';
|
|
|
|
preBuild = ''
|
|
export NX_PARALLEL="$NIX_BUILD_CORES"
|
|
pushd packages/@aws-cdk/integ-runner
|
|
patchShebangs build-tools/generate.sh
|
|
build-tools/generate.sh
|
|
popd
|
|
pushd packages/aws-cdk
|
|
patchShebangs generate.sh
|
|
./generate.sh
|
|
popd
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
yarn "$yarnBuildScript"
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/lib/node_modules/aws-cdk-cli
|
|
cp -r . $out/lib/node_modules/aws-cdk-cli
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
postInstall = ''
|
|
# Manually bundle non-bundled dependencies
|
|
cp -r node_modules/jsonschema $out/lib/node_modules/aws-cdk-cli/node_modules/jsonschema
|
|
cp -r node_modules/decamelize $out/lib/node_modules/aws-cdk-cli/node_modules/decamelize
|
|
|
|
patchShebangs "$out/lib/node_modules/aws-cdk-cli/node_modules/aws-cdk/bin"
|
|
ln -s "$out/lib/node_modules/aws-cdk-cli/node_modules/aws-cdk/bin" "$out/bin"
|
|
# Delete broken symlinks
|
|
find "$out/lib/node_modules" -xtype l -delete
|
|
|
|
# Fix version
|
|
pushd $out/lib/node_modules/aws-cdk-cli/packages/aws-cdk
|
|
mv package.json package.json.bak
|
|
jq '.version = "${finalAttrs.version}"' < package.json.bak > package.json
|
|
rm package.json.bak
|
|
mv build-info.json bi.json
|
|
jq '.commit = "nixpkgs"' < bi.json > build-info.json
|
|
rm bi.json
|
|
popd
|
|
'';
|
|
|
|
# Fixup takes an absurdly long time, so disable it
|
|
dontFixup = true;
|
|
|
|
passthru = {
|
|
tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
|
|
updateScript = ./update.sh;
|
|
};
|
|
|
|
meta = {
|
|
description = "AWS CDK Toolkit";
|
|
homepage = "https://docs.aws.amazon.com/cdk/v2/guide/cli.html";
|
|
license = lib.licenses.asl20;
|
|
maintainers = [ ];
|
|
mainProgram = "cdk";
|
|
platforms = lib.platforms.all;
|
|
};
|
|
})
|