ayaports/user/protobuf/APKBUILD

168 lines
4.2 KiB
Text

# Contributor: Sheila Aman <sheila@vulpine.house>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=protobuf
_gemname=google-protobuf
pkgver=23.4
_rubyver=3.23.4
pkgrel=2
pkgdesc="Library for extensible, efficient structure packing"
url="https://github.com/protocolbuffers/protobuf"
arch="all"
license="BSD-3-Clause"
depends="
protoc=$pkgver-r$pkgrel
libprotoc=$pkgver-r$pkgrel
libprotobuf=$pkgver-r$pkgrel
libprotobuf-lite=$pkgver-r$pkgrel
"
depends_dev="
protoc=$pkgver-r$pkgrel
zlib-dev
"
makedepends="
$depends_dev
abseil-cpp-dev
cmake
ruby3.2
ruby3.2-dev
ruby3.2-rake
samurai
"
checkdepends="gtest-dev"
subpackages="
ruby3.2-$_gemname:_ruby
$pkgname-dev
$pkgname-vim::noarch
protoc
libprotoc
libprotobuf
libprotobuf-lite
"
# exclude.patch
source="$pkgname-$pkgver.tar.gz::https://github.com/protocolbuffers/protobuf/archive/refs/tags/v$pkgver.tar.gz
exclude.patch
protoc-cmake.patch
ruby-fix-cflags.patch
skip-failing-tests.patch
soversion.patch
trim-rakefile.patch
"
# fails some
case "$CARCH" in
armhf) options="$options !check" ;;
esac
build() {
export CFLAGS="$CFLAGS -DNDEBUG -O2 -flto=auto"
export CXXFLAGS="$CXXFLAGS -DNDEBUG -O2 -flto=auto -Wno-deprecated-declarations"
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_SHARED_LIBS=ON \
-Dprotobuf_BUILD_TESTS="$(want_check && echo ON || echo OFF)" \
-Dprotobuf_BUILD_LIBPROTOC=ON \
-Dprotobuf_ABSL_PROVIDER="package" \
-Dprotobuf_ALLOW_CCACHE=ON \
-Dprotobuf_USE_EXTERNAL_GTEST=ON
cmake --build build
cd "$builddir"/ruby
export PATH="$PATH:$builddir/build"
# Generate proto files for built-in protocols.
rake genproto
gem build $_gemname.gemspec
gem install --local \
--install-dir dist \
--ignore-dependencies \
--no-document \
--verbose \
$_gemname
}
# TODO: Run tests for ruby gem.
check() {
ctest --test-dir build --output-on-failure
}
package() {
DESTDIR="$pkgdir" cmake --install build
sed -i \
-e "/Requires:/s|;| |g" \
-e "/Requires:/s|::|_|g" \
"$pkgdir"/usr/lib/pkgconfig/protobuf.pc
install -Dm644 editors/proto.vim \
"$pkgdir"/usr/share/vim/vimfiles/syntax/proto.vim
local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
cd ruby/dist
mkdir -p "$gemdir"
cp -r extensions gems specifications "$gemdir"/
# Remove duplicated .so libs (should be only in extensions directory).
find "$gemdir"/gems/ -name "*.so" -delete
# Remove unnecessary files.
cd "$gemdir"/gems/$_gemname-$_rubyver
rm -r ext/
}
_ruby() {
depends=""
pkgdesc="Ruby bindings to Google's data interchange format"
amove usr/lib/ruby/gems
}
vim() {
pkgdesc="Vim syntax for $pkgname"
depends=""
install_if="$pkgname=$pkgver-r$pkgrel vim"
amove usr/share/vim/vimfiles/syntax/proto.vim
}
libprotoc() {
depends=""
pkgdesc="Runtime library for Protocol Buffer compiler"
amove usr/lib/libprotoc.so.*
}
protoc() {
depends=""
pkgdesc="Protocol buffer compiler binary and library"
amove usr/bin/protoc*
}
libprotobuf() {
depends=""
pkgdesc="Runtime library for C++ users of protocol buffers"
amove usr/lib/libprotobuf.so.*
}
lite() {
depends=""
pkgdesc="Runtime library for C++ users with 'lite runtime' setting of protocol buffers"
amove usr/lib/libprotobuf-lite.so.*
}
sha512sums="
b93a4e0339ecbe085796de5b6c61feae35229d40db9019c043090bcaa483a1cce78a99487c5638482c68832fcede5579a0e5ec731221a88359b80db9bb6dc566 protobuf-23.4.tar.gz
0d46d105a0670ab5cfcb04ed534927a71613234a88efede0b20d426e1caaa708e6ff275a09c5dab7786fe26e69e0882f022b893302e4869006b4ac55fc6172e5 exclude.patch
16b8ee0e50dbb2144ddb83654a63e410b4218e667b6b8b77c7b6f9797508f63c3e8be0f9711841bb6ebbed0883cda2394b219a62b468240f65f4dac418b5a56e protoc-cmake.patch
0cb202a6151ae3746c09e85f2e4ce9abb0d810d4a3c84cb647fde407cf8d13894d3c9b340e06d7a3a85669da1899db265d26d8309d59249f841a40a66e045c83 ruby-fix-cflags.patch
b5070f8e150920c316130ba40f46c66eefddc634844f5d6b8ee11f6824a3707b3e74f68aa0612c16305bf096050214c6120e693225e07e0cea80e68a7830f863 skip-failing-tests.patch
850dc1d6fd3ea01f1689fd700ac35e7da0882092ab34c616702e01bdf4b5327b8ab27381ecf291431a94f54c89d31707a4a171929937e880543974cb64f9e685 soversion.patch
13514a456a50d7243baa23fe43586fc4544cda87b9e2a5afe9d2fac8afca8e8853f9b42232c3fff4c5cf2df443af32f944f451daa1d604d80fd03ee4e7abed3e trim-rakefile.patch
"