mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-11 07:23:40 +00:00
4f0dadbf38
After final improvements to the official formatter implementation, this commit now performs the first treewide reformat of Nix files using it. This is part of the implementation of RFC 166. Only "inactive" files are reformatted, meaning only files that aren't being touched by any PR with activity in the past 2 months. This is to avoid conflicts for PRs that might soon be merged. Later we can do a full treewide reformat to get the rest, which should not cause as many conflicts. A CI check has already been running for some time to ensure that new and already-formatted files are formatted, so the files being reformatted here should also stay formatted. This commit was automatically created and can be verified using nix-builda08b3a4d19
.tar.gz \ --argstr baseRevb32a094368
result/bin/apply-formatting $NIXPKGS_PATH
175 lines
5.5 KiB
Nix
175 lines
5.5 KiB
Nix
# Make sure that the "with-gce" flag is set when building `google-cloud-sdk`
|
|
# for GCE hosts. This flag prevents "google-compute-engine" from being a
|
|
# default dependency which is undesirable because this package is
|
|
#
|
|
# 1) available only on GNU/Linux (requires `systemd` in particular)
|
|
# 2) intended only for GCE guests (and is useless elsewhere)
|
|
# 3) used by `google-cloud-sdk` only on GCE guests
|
|
#
|
|
|
|
{
|
|
stdenv,
|
|
lib,
|
|
fetchurl,
|
|
makeWrapper,
|
|
python,
|
|
openssl,
|
|
jq,
|
|
callPackage,
|
|
installShellFiles,
|
|
with-gce ? false,
|
|
}:
|
|
|
|
let
|
|
pythonEnv = python.withPackages (
|
|
p:
|
|
with p;
|
|
[
|
|
cffi
|
|
cryptography
|
|
pyopenssl
|
|
crcmod
|
|
numpy
|
|
]
|
|
++ lib.optional (with-gce) google-compute-engine
|
|
);
|
|
|
|
data = import ./data.nix { };
|
|
sources = system: data.googleCloudSdkPkgs.${system} or (throw "Unsupported system: ${system}");
|
|
|
|
components = callPackage ./components.nix {
|
|
snapshotPath = ./components.json;
|
|
};
|
|
|
|
withExtraComponents = callPackage ./withExtraComponents.nix { inherit components; };
|
|
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
pname = "google-cloud-sdk";
|
|
inherit (data) version;
|
|
|
|
src = fetchurl (sources stdenv.hostPlatform.system);
|
|
|
|
buildInputs = [ python ];
|
|
|
|
nativeBuildInputs = [
|
|
jq
|
|
makeWrapper
|
|
installShellFiles
|
|
];
|
|
|
|
patches = [
|
|
# For kubectl configs, don't store the absolute path of the `gcloud` binary as it can be garbage-collected
|
|
./gcloud-path.patch
|
|
# Disable checking for updates for the package
|
|
./gsutil-disable-updates.patch
|
|
# Revert patch including extended Python version constraint
|
|
./gsutil-revert-version-constraint.patch
|
|
];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/google-cloud-sdk
|
|
if [ -d platform/bundledpythonunix ]; then
|
|
rm -r platform/bundledpythonunix
|
|
fi
|
|
cp -R * .install $out/google-cloud-sdk/
|
|
|
|
mkdir -p $out/google-cloud-sdk/lib/surface/{alpha,beta}
|
|
cp ${./alpha__init__.py} $out/google-cloud-sdk/lib/surface/alpha/__init__.py
|
|
cp ${./beta__init__.py} $out/google-cloud-sdk/lib/surface/beta/__init__.py
|
|
|
|
# create wrappers with correct env
|
|
for program in gcloud bq gsutil git-credential-gcloud.sh docker-credential-gcloud; do
|
|
programPath="$out/google-cloud-sdk/bin/$program"
|
|
binaryPath="$out/bin/$program"
|
|
wrapProgram "$programPath" \
|
|
--set CLOUDSDK_PYTHON "${pythonEnv}/bin/python" \
|
|
--set CLOUDSDK_PYTHON_ARGS "-S -W ignore" \
|
|
--prefix PYTHONPATH : "${pythonEnv}/${python.sitePackages}" \
|
|
--prefix PATH : "${openssl.bin}/bin"
|
|
|
|
mkdir -p $out/bin
|
|
ln -s $programPath $binaryPath
|
|
done
|
|
|
|
# disable component updater and update check
|
|
substituteInPlace $out/google-cloud-sdk/lib/googlecloudsdk/core/config.json \
|
|
--replace-fail "\"disable_updater\": false" "\"disable_updater\": true"
|
|
echo "
|
|
[component_manager]
|
|
disable_update_check = true" >> $out/google-cloud-sdk/properties
|
|
|
|
# setup bash completion
|
|
mkdir -p $out/share/bash-completion/completions
|
|
mv $out/google-cloud-sdk/completion.bash.inc $out/share/bash-completion/completions/gcloud
|
|
ln -s $out/share/bash-completion/completions/gcloud $out/share/bash-completion/completions/gsutil
|
|
|
|
# setup zsh completion
|
|
mkdir -p $out/share/zsh/site-functions
|
|
mv $out/google-cloud-sdk/completion.zsh.inc $out/share/zsh/site-functions/_gcloud
|
|
ln -s $out/share/zsh/site-functions/_gcloud $out/share/zsh/site-functions/_gsutil
|
|
# zsh doesn't load completions from $FPATH without #compdef as the first line
|
|
sed -i '1 i #compdef gcloud' $out/share/zsh/site-functions/_gcloud
|
|
|
|
# setup fish completion
|
|
installShellCompletion --cmd gcloud \
|
|
--fish <(echo "complete -c gcloud -f -a '(__fish_argcomplete_complete gcloud)'")
|
|
installShellCompletion --cmd gsutil \
|
|
--fish <(echo "complete -c gsutil -f -a '(__fish_argcomplete_complete gsutil)'")
|
|
|
|
# This directory contains compiled mac binaries. We used crcmod from
|
|
# nixpkgs instead.
|
|
rm -r $out/google-cloud-sdk/platform/gsutil/third_party/crcmod \
|
|
$out/google-cloud-sdk/platform/gsutil/third_party/crcmod_osx
|
|
|
|
# remove tests and test data
|
|
find $out -name tests -type d -exec rm -rf '{}' +
|
|
rm $out/google-cloud-sdk/platform/gsutil/gslib/commands/test.py
|
|
|
|
# compact all the JSON
|
|
find $out -name \*.json | while read path; do
|
|
jq -c . $path > $path.min
|
|
mv $path.min $path
|
|
done
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
doInstallCheck = true;
|
|
installCheckPhase = ''
|
|
# Avoid trying to write logs to homeless-shelter
|
|
export HOME=$(mktemp -d)
|
|
$out/bin/gcloud version --format json | jq '."Google Cloud SDK"' | grep "${version}"
|
|
$out/bin/gsutil version | grep -w "$(cat platform/gsutil/VERSION)"
|
|
'';
|
|
|
|
passthru = {
|
|
inherit components withExtraComponents;
|
|
updateScript = ./update.sh;
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Tools for the google cloud platform";
|
|
longDescription = "The Google Cloud SDK for GCE hosts. Used by `google-cloud-sdk` only on GCE guests.";
|
|
sourceProvenance = with sourceTypes; [
|
|
fromSource
|
|
binaryNativeCode # anthoscli and possibly more
|
|
];
|
|
# This package contains vendored dependencies. All have free licenses.
|
|
license = licenses.free;
|
|
homepage = "https://cloud.google.com/sdk/";
|
|
changelog = "https://cloud.google.com/sdk/docs/release-notes";
|
|
maintainers = with maintainers; [
|
|
iammrinal0
|
|
marcusramberg
|
|
pradyuman
|
|
stephenmw
|
|
zimbatm
|
|
];
|
|
platforms = builtins.attrNames data.googleCloudSdkPkgs;
|
|
mainProgram = "gcloud";
|
|
};
|
|
}
|