File PKGBUILD of Package google-cloud-cli
# Maintainer: Josef Vybíhal <josef.vybihal@gmail.com>
# Contributor: Polarian <polarian@polarian.dev>
# Contributor: Benjamin Denhartog <ben@sudoforge.com>
# Contributor: Mansour Behabadi <mansour@oxplot.com>
# Contributor: Troy Engel <troyengel+arch@gmail.com>
# Contributor: Geoff Hill <geoff@geoffhill.org>
# Contributor: Sebastien Bariteau <numkem@numkem.org>
# Contributor: Justin Dray <justin@dray.be>
# Contributor: tobbik
_extracted_name='google-cloud-sdk'
pkgbase='google-cloud-cli'
pkgname=(
'google-cloud-cli'
'google-cloud-cli-bq'
'google-cloud-cli-gsutil'
'google-cloud-cli-bundled-python3-unix'
'google-cloud-cli-component-gke-gcloud-auth-plugin'
)
pkgver=552.0.0
pkgrel=1
pkgdesc="A core set of command-line tools for the Google Cloud Platform. Includes only gcloud core (with beta and alpha commands), gcloud-crc32c and man pages"
url="https://cloud.google.com/cli/"
license=('Apache-2.0')
arch=('x86_64' 'aarch64')
depends=('python>=3.9')
makedepends=('jq')
options=('!strip' 'staticlibs' '!zipman' '!debug' '!lto')
export _force_budled_python=false
export _package_bundled_python=false
source=(
"$pkgbase.sh"
"$pkgbase.install"
"https://dl.google.com/dl/cloudsdk/release/downloads/for_packagers/linux/${pkgbase}_${pkgver}.orig_amd64.tar.gz")
sha256sums=('6e88b535c020b0f28c986fdb66918f8c07e4d337e813b77ec2068068f03457f8'
'6ac95bcc5afa06e9c1e3bd402ecbe1a2092b963d70a8f314215dd4be27e16fc6'
'cd12950b231313cbbb984dc586e3f639958803845b8e4bb03e517587107a772d')
prepare() {
cd "$_extracted_name"
if [ "$_package_bundled_python" = false ]; then
# relax forced 'core' dependency on bundled-python3-unix
sed -i '/bundled-python3-unix/d' .install/core*.snapshot.json
if ls .install/bundled-python3-* 1> /dev/null 2>&1; then
mkdir -p "$srcdir/bundledpython/.install"
mv platform/bundledpythonunix $srcdir/bundledpython/
mv .install/bundled-python3-unix* $srcdir/bundledpython/.install/
fi
fi
find "$srcdir" -name '__pycache__' -type d -exec rm -rf {} +
}
package_google-cloud-cli() {
# Conflict the old package name to force migration
conflicts=('google-cloud-sdk')
provides=('google-cloud-sdk' 'google-cloud-cli-alpha' 'google-cloud-cli-beta')
replaces=('google-cloud-sdk')
optdepends=(
'google-cloud-cli-bq: BigQuery Command Line Tool'
'google-cloud-cli-gsutil: Cloud Storage Command Line Tool. Not the recommended CLI for Cloud Storage')
install=$pkgbase.install
backup=( 'etc/profile.d/google-cloud-cli.sh' )
sdir="${srcdir}/${_extracted_name}"
ddir="${pkgdir}/opt/${pkgbase}"
# _install_path="${pkgdir}/opt/${pkgbase}"
_bundled_py_bin="${ddir:${#pkgdir}}/platform/bundledpythonunix/bin/python3"
install -d -m 0755 \
"${pkgdir}/opt" \
"${pkgdir}/etc/bash_completion.d" \
"${pkgdir}/usr/share/zsh/site-functions"
cp -r "${sdir}" "${ddir}"
# remove components
rm -rf "$ddir/platform/gsutil"
rm -f "$ddir/.install/gsutil"*
rm -f "$ddir/bin/gsutil"
rm -f "$ddir/data/cli/gsutil.json"
rm -rf "$ddir/platform/bq"
rm -f "$ddir/.install/bq"*
rm -f "$ddir/bin/bq"
rm -f "$ddir/data/cli/bq.json"
install -D -m 0644 "${srcdir}/${source[0]}" \
"${pkgdir}/etc/profile.d/google-cloud-cli.sh"
if [ "$_force_budled_python" = true ]; then
{ echo "export CLOUDSDK_PYTHON=${_bundled_py_bin}"
echo "export CLOUDSDK_GSUTIL_PYTHON=${_bundled_py_bin}"
echo "export CLOUDSDK_BQ_PYTHON=${_bundled_py_bin}"
} >> "${pkgdir}/etc/profile.d/google-cloud-cli.sh"
fi
ln -rsT "${ddir}/completion.bash.inc" \
"${pkgdir}/etc/bash_completion.d/google-cloud-cli"
for cmd in gcloud gsutil bq; do
ln -rsT "${ddir}/completion.zsh.inc" \
"${pkgdir}/usr/share/zsh/site-functions/_${cmd}"
done
install -d -m 0755 "${pkgdir}/usr/bin"
for bin in gcloud \
gcloud-crc32c \
docker-credential-gcloud \
git-credential-gcloud.sh \
; do
ln -rsT "${ddir}/bin/${bin}" \
"${pkgdir}/usr/bin/${bin}"
done
install -d -m 0755 "${pkgdir}/usr/share"
mv -f "${pkgdir}/opt/${pkgbase}/help/man" "${pkgdir}/usr/share/"
rm -rf "$ddir"/{deb,rpm,help}
}
_package_helper() {
# local -r s=$1
# local -r p=$2
# local -r c=$3
sdir="${srcdir}/${_extracted_name}"
ddir="${pkgdir}/opt/${pkgbase}"
install -d -m 0755 "${ddir}/"{bin,.install,platform}
install -d -m 0755 "${pkgdir}/usr/bin"
cp -r "${sdir}/platform/${c}" "${ddir}/platform/"
install -D -m 0644 "${sdir}/.install/${c}"* -t "${ddir}/.install"
install -D -m 0755 "${sdir}/bin/${c}" "${ddir}/bin/${c}"
install -D -m 0644 "${sdir}/data/cli/${c}.json" -t "${ddir}/data/cli"
ln -rsT "${ddir}/bin/${c}" \
"${pkgdir}/usr/bin/${c}"
}
package_google-cloud-cli-bq() {
pkgdesc='BigQuery Command Line Tool'
provides=('google-cloud-cli-bq')
c=${pkgname#google-cloud-cli-} # component
_package_helper
}
# pkgver_google-cloud-cli-gsutil() {
# cat "${sdir}/platform/gsutil/VERSION"
# }
package_google-cloud-cli-gsutil() {
pkgdesc='Cloud Storage Command Line Tool: gsutil is not the recommended CLI for Cloud Storage'
provides=('google-cloud-cli-gsutil' 'gsutil')
conflicts=('gsutil')
#depends+=('google-cloud-cli-bundled-python3-unix')
optdepends=("python-crcmod: verify the integrity of GCS object contents"
"google-cloud-cli-bundled-python3-unix: bundled python to use if system python is not compatible")
c=${pkgname#google-cloud-cli-} # component
backup=( "etc/profile.d/google-cloud-cli-gsutil.sh" )
_package_helper
# _bundled_py_bin="${ddir:${#pkgdir}}/platform/bundledpythonunix/bin/python3"
# install -d -m 0755 "${pkgdir}/etc/profile.d"
# echo "export CLOUDSDK_GSUTIL_PYTHON=${_bundled_py_bin}" >> \
# "${pkgdir}/etc/profile.d/google-cloud-cli-${c}.sh"
}
package_google-cloud-cli-bundled-python3-unix() {
arch=('x86_64')
pkgdesc='gcloud Bundled Python 3.12'
ddir="${pkgdir}/opt/${pkgbase}"
c=${pkgname#google-cloud-cli-} # component
install -d -m 0755 "${ddir}"/{.install,platform} && cd "${ddir}"
mv "$srcdir"/bundledpython/bundledpythonunix platform/
mv "$srcdir"/bundledpython/.install/"${c}"* .install/
}
package_google-cloud-cli-component-gke-gcloud-auth-plugin() {
pkgdesc='gke-gcloud-auth-plugin'
provides=('google-cloud-cli-gke-gcloud-auth-plugin')
conflicts=('google-cloud-cli-gke-gcloud-auth-plugin')
c=${pkgname#google-cloud-cli-component-}
ddir="${pkgdir}/opt/${pkgbase}"
install -d -m 0755 "${ddir}/"{.install,bin} "${pkgdir}/usr/bin"
cd "$_extracted_name"
# allow updater for component
cat <<< "$(jq '.disable_updater = false' < lib/googlecloudsdk/core/config.json)" > lib/googlecloudsdk/core/config.json
bin/gcloud -q components install "${c}" > /dev/null 2>&1
mv .install/"${c}"* "${ddir}/.install"
mv bin/"${c}"* "${ddir}/bin"
ln -rsT "${ddir}/bin/${c}" \
"${pkgdir}/usr/bin/${c}"
# turn off updater
cat <<< "$(jq '.disable_updater = true' < lib/googlecloudsdk/core/config.json)" > lib/googlecloudsdk/core/config.json
}