# Maintainer: Lukas Fleischer # Contributor: David Runge # Contributor: Aleksey Filippov # Contributor: Bartłomiej Piotrowski # Contributor: Sven-Hendrik Haase # Contributor: Thomas S Hatch # Contributor: Geoffroy Carrier # Contributor: Daniel J Griffiths # ALARM: Kevin Mihelich # - remove makedpends on bazel # - remove python package # ALARM: BrainDamage # - re-enable python package # - split off python-protobuf to its own PKGBUILD file pkgbase='protobuf' pkgname=('protobuf' 'ruby-google-protobuf') pkgver=28.1 pkgrel=1 # Note: python-protobuf needs to be updated alongside this package to the same version pkgdesc="Protocol Buffers - Google's data interchange format" arch=('x86_64') url='https://developers.google.com/protocol-buffers/' license=('BSD-3-Clause') depends=( 'gcc-libs' 'glibc' 'zlib' 'abseil-cpp' ) makedepends=( 'cmake' 'gtest' 'python-build' 'python-installer' 'python-setuptools' 'python-wheel' 'ruby' 'ruby-rake' 'ruby-rake-compiler' ) checkdepends=( python-pytest python-numpy ) source=(https://github.com/protocolbuffers/protobuf/archive/v$pkgver/$pkgname-$pkgver.tar.gz protobuf-fix-build-type-none.patch $pkgbase-25.3-ruby-disable-LTO.patch) # https://github.com/protocolbuffers/protobuf/issues/11935 sha512sums=('769ef61206e39336d93df786a25c08cdf1acb12f2f5818ae31afb268aad8b02076eeba15c41c68aadbf140c6e1653c0aaefc2a637278c7695ded1b5d72888d81' '18bc71031bbcbc3810a9985fa670465040f06a6c104ab8079b56bdfc499bb6cec40805a0cefd455031142490a576dc60aa8000523877ac0353b93558e9beabbd' '1ebdea4e533ee0f71baf1b3fe2623ca723b36a08c6b97475ea5996b10aeb6873cf94d9120596ddd1216bd2f6feb991f8c33078e8104008a5078ace5be5431efd') options=(!lto) _gemname=google-protobuf prepare() { patch -d $pkgname-$pkgver -p1 < protobuf-fix-build-type-none.patch # Fix cmake config compatibility mode patch -d $pkgbase-$pkgver -p1 < $pkgbase-25.3-ruby-disable-LTO.patch } build() { local cmake_options=( -B build -D CMAKE_BUILD_TYPE=None -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_C_FLAGS="$CFLAGS -ffat-lto-objects" -D CMAKE_CXX_FLAGS="$CXXFLAGS -ffat-lto-objects" -D protobuf_BUILD_SHARED_LIBS=ON -D protobuf_USE_EXTERNAL_GTEST=ON -D protobuf_ABSL_PROVIDER=package -S "$pkgbase-$pkgver" -W no-dev ) cmake "${cmake_options[@]}" cmake --build build --verbose cd $pkgbase-$pkgver/ruby local _gemdir="$(gem env gemdir)" local _gemver=4.$pkgver PROTOC="$srcdir"/build/protoc \ rake genproto rake copy_third_party gem build --verbose "${_gemname}.gemspec" gem install \ --local \ --verbose \ --ignore-dependencies \ --no-user-install \ --install-dir "tmp_install${_gemdir}" \ --bindir "tmp_install/usr/bin" \ "${_gemname}-${_gemver}.gem" # remove unrepreducible files rm --force --recursive --verbose \ "tmp_install${_gemdir}/cache/" \ "tmp_install${_gemdir}/gems/${_gemname}-${_gemver}/vendor/" \ "tmp_install${_gemdir}/doc/${_gemname}-${_gemver}/ri/ext/" find "tmp_install${_gemdir}/gems/" \ -type f \ \( \ -iname "*.o" -o \ -iname "*.c" -o \ -iname "*.so" -o \ -iname "*.time" -o \ -iname "gem.build_complete" -o \ -iname "Makefile" \ \) \ -delete find "tmp_install${_gemdir}/extensions/" \ -type f \ \( \ -iname "mkmf.log" -o \ -iname "gem_make.out" \ \) \ -delete } check() { ctest --test-dir build } package_protobuf() { replaces=('protobuf-cpp') provides=('libprotoc.so' 'libprotobuf.so' 'libprotobuf-lite.so') DESTDIR="$pkgdir" cmake --install build cd $pkgbase-$pkgver install -vDm 644 LICENSE -t "$pkgdir/usr/share/licenses/$pkgname" install -vDm 644 editors/protobuf-mode.el \ -t "$pkgdir/usr/share/emacs/site-lisp/" install -vDm 644 editors/proto.vim \ -t "${pkgdir}/usr/share/vim/vimfiles/syntax" } package_ruby-google-protobuf() { pkgdesc='Ruby bindings for Google Protocol Buffers' depends=( 'ruby' ) cp -a $pkgbase-$pkgver/ruby/tmp_install/* "$pkgdir" install -vDm 644 $pkgbase-$pkgver/LICENSE -t "$pkgdir/usr/share/licenses/$pkgname/" install -Dm 0644 $pkgbase-$pkgver/ruby/*.md -t "$pkgdir/usr/share/doc/${pkgname}" }