2026-03-24 20:55:32 +01:00

337 lines
6.9 KiB
Plaintext

# Contributor: Holger Jaekel <holger.jaekel@gmx.de>
maintainer="Holger Jaekel <holger.jaekel@gmx.de>"
pkgname=google-cloud-cpp
pkgver=2.47.0
_googleapis_commit_sha=c0fcb35628690e9eb15dcefae41c651c67cd050b
pkgrel=0
pkgdesc="C++ Client Libraries for Google Cloud Services"
url="https://cloud.google.com/sdk"
arch="all"
license="Apache-2.0"
makedepends="
abseil-cpp-dev
c-ares-dev
clang
cmake
crc32c-dev
curl-dev
grpc-dev
nlohmann-json
openssl-dev
protobuf-dev
re2-dev
samurai
"
checkdepends="benchmark-dev gtest-dev"
subpackages="$pkgname-dev"
source="google-cloud-cpp-$pkgver.tar.gz::https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v$pkgver.tar.gz
https://github.com/googleapis/googleapis/archive/$_googleapis_commit_sha.tar.gz
gcc-15.patch
"
_ga_library="
accessapproval
accesscontextmanager
advisorynotifications
aiplatform
alloydb
apigateway
apigeeconnect
apikeys
apiregistry
appengine
apphub
artifactregistry
asset
assuredworkloads
auditmanager
automl
backupdr
baremetalsolution
batch
beyondcorp
bigquerycontrol
bigquery
bigtable
billing
binaryauthorization
certificatemanager
channel
chronicle
cloudbuild
cloudcontrolspartner
cloudquotas
cloudsecuritycompliance
commerce
composer
compute
confidentialcomputing
config
configdelivery
connectors
contactcenterinsights
containeranalysis
container
contentwarehouse
datacatalog
dataform
datafusion
datamigration
dataplex
dataproc
datastore
datastream
deploy
developerconnect
devicestreaming
dialogflow_cx
dialogflow_es
discoveryengine
dlp
documentai
domains
edgecontainer
edgenetwork
essentialcontacts
eventarc
filestore
financialservices
functions
gkebackup
gkeconnect
gkehub
gkemulticloud
gkerecommender
iam
iap
ids
kms
language
licensemanager
logging
lustre
maintenance
managedidentities
managedkafka
memcache
memorystore
metastore
migrationcenter
monitoring
netapp
networkconnectivity
networkmanagement
networksecurity
networkservices
notebooks
oauth2
optimization
oracledatabase
orgpolicy
osconfig
oslogin
parallelstore
parametermanager
policysimulator
policytroubleshooter
privateca
privilegedaccessmanager
profiler
publicca
pubsub
rapidmigrationassessment
recaptchaenterprise
recommender
redis
resourcemanager
rest_internal
rest_protobuf
retail
run
scheduler
secretmanager
securesourcemanager
securitycenter
securitycentermanagement
servicecontrol
servicedirectory
servicehealth
servicemanagement
serviceusage
shell
spanner
speech
sql
storagebatchoperations
storagecontrol
storageinsights
storagetransfer
storage
support
talent
tasks
telcoautomation
texttospeech
timeseriesinsights
tpu
trace
translate
universe_domain
videointelligence
video
vision
vmmigration
vmwareengine
vpcaccess
webrisk
websecurityscanner
workflows
workstations
"
_non_ga_library="
cloud-common-common-protos
cloud-extended-operations-protos
cloud-location-locations-protos
cloud-orgpolicy-v1-orgpolicy-protos
grafeas-protos
grpc-utils
longrunning-operations-protos
rpc-code-protos
rpc-context-attribute-context-protos
rpc-error-details-protos
rpc-status-protos
"
_api_protos="
api-annotations
api-auth
api-backend
api-billing
api-client
api-config-change
api-consumer
api-context
api-control
api-distribution
api-documentation
api-endpoint
api-error-reason
api-field-behavior
api-field-info
api-httpbody
api-http
api-label
api-launch-stage
api-logging
api-log
api-metric
api-monitored-resource
api-monitoring
api-policy
api-quota
api-resource
api-routing
api-service
api-source-info
api-system-parameter
api-usage
api-visibility
"
_type_protos="
type-calendar-period
type-color
type-datetime
type-date
type-dayofweek
type-decimal
type-expr
type-fraction
type-interval
type-latlng
type-localized-text
type-money
type-month
type-phone-number
type-postal-address
type-quaternion
type-timeofday
"
for _lib in $_ga_library $_non_ga_library $_api_protos $_type_protos ; do
subpackages="$subpackages $pkgname-$_lib:library"
done
prepare() {
default_prepare
# google-cloud-cpp needs the proto and gRPC definitions for most
# Google Cloud services. By default these definitions are downloaded
# from GitHub during the build process. Using the same SHA is the
# recommended practice when the googleapis are downloaded outside the
# build process. In this APKBUILD, we download the googleapis as an
# additional source. In that case we have to make sure that the SHA
# match.
local sha256=$(awk '/_GOOGLE_CLOUD_CPP_GOOGLEAPIS_SHA256/ { getline; print $0 }' cmake/GoogleapisConfig.cmake | tr -d '") ')
echo "expected sha: $sha256"
echo "$sha256 *$srcdir/$_googleapis_commit_sha.tar.gz" | sha256sum -c -
}
build() {
if [ "$CBUILD" != "$CHOST" ]; then
local crossopts="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
LDFLAGS="$LDFLAGS -Wl,--copy-dt-needed-entries" \
cmake -B build -G Ninja -Wno-dev \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=None \
-DBUILD_TESTING="$(want_check && echo ON || echo OFF)" \
-DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \
-DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__ \
-DGOOGLE_CLOUD_CPP_OVERRIDE_GOOGLEAPIS_URL=$srcdir/googleapis-$_googleapis_commit_sha \
$crossopts
cmake --build build
}
check() {
cd build
timeout 1500 \
ctest -LE "integration-test"
}
package() {
DESTDIR="$pkgdir" cmake --install build
}
library() {
local name=${subpkgname#"$pkgname"-}
pkgdesc="$pkgdesc ($name)"
local libname=${name//-/_}
case "$name" in
api-*|type-*)
# API/type proto libraries: subpackage name like "api-annotations"
# maps to library file "libgoogle_cloud_cpp_api_annotations_protos.so"
amove usr/lib/libgoogle_cloud_cpp_${libname}_protos.so*
;;
*-protos)
# Non-GA proto libraries: subpackage name like "rpc-status-protos"
# maps directly to library file "libgoogle_cloud_cpp_rpc_status_protos.so"
amove usr/lib/libgoogle_cloud_cpp_${libname}.so*
;;
*)
# GA libraries: move main library and optional proto variant
# e.g., "bigquery" -> libgoogle_cloud_cpp_bigquery.so + libgoogle_cloud_cpp_bigquery_protos.so
# Some libraries (like compute) have no base library, only variants, so first pattern may not match
amove usr/lib/libgoogle_cloud_cpp_${libname}.so* 2>/dev/null || true
amove usr/lib/libgoogle_cloud_cpp_${libname}_*.so* 2>/dev/null || true
;;
esac
}
sha512sums="
e676fa92b327180274dc5ac74be106608eb172211ab740e014135fe8ca4a12a5f9fe5673ff4d1962f60e2142fe83c6cd41a6c895672d8b89e11f5b1283fe8700 google-cloud-cpp-2.47.0.tar.gz
d48f4d3f7f272b5b18d417a403dc3edf3c14d19d7bb6e4d92a76b54137c20ad5762a086e7acc5cb04c07b1b822e6429425dabf62edbea875bbf53dd714de2878 c0fcb35628690e9eb15dcefae41c651c67cd050b.tar.gz
728545f50a2353d22d391bd01df2da43371d3edff5f71ec85902d6c009b07fa3ec487e21d1521246b23bef896de7044b95cb1e08171f6a775feb811aa6ff363e gcc-15.patch
"