diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index a509303..983ecd3 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -8,7 +8,7 @@ # Contributor: Daniel J Griffiths pkgbase='protobuf' -pkgname=('protobuf' 'python-protobuf') +pkgname=('protobuf' 'python-protobuf' 'ruby-google-protobuf') pkgver=21.12 pkgrel=2 pkgdesc="Protocol Buffers - Google's data interchange format" @@ -27,6 +27,8 @@ makedepends=( 'python-installer' 'python-setuptools' 'python-wheel' + 'ruby' + 'ruby-rake-compiler' ) checkdepends=( python-pytest @@ -40,10 +42,16 @@ sha512sums=('2dc8f552388438268d8b9f7a9e84c6abf1736be3d5031438c789c317410c9f4b5ce 'a297e74ee4f807b3fad7da7d0de6dd9647963521be66cd2a2370343f5bd191cbb38759157ac0cdb161a5893a30a10520a5098e88a292c800859af33db5cf7a41' 'acc38a761cb164caf4c9fcb6181be999ce95899658cefd3253f6104c13265a595bb5e671b9df959ac88d2044f8c21f1e29796e9f7a772291b44d2eaab7723645') +_gemname=google-protobuf + prepare() { patch -d $pkgbase-$pkgver -Rp1 < 101b6199.patch # Revert ABI break patch -Np1 -d $pkgbase-$pkgver -i ../$pkgname-21.12-python3.11.patch patch -Np1 -d $pkgbase-$pkgver -i ../$pkgname-21.12-pep517.patch + + cd $pkgbase-$pkgver/ruby + # update gemspec/Gemfile to allow newer version of the dependencies + sed --in-place --regexp-extended 's|~>|>=|g' "${_gemname}.gemspec" Gemfile } build() { @@ -61,16 +69,70 @@ build() { cmake --build build --verbose ln -rs build $pkgbase-$pkgver/src/.libs - cd $pkgbase-$pkgver/python + pushd $pkgbase-$pkgver/python PROTOC="$srcdir"/build/protoc \ python -m build --wheel --no-isolation + popd + + pushd $pkgbase-$pkgver/ruby + local _gemdir="$(gem env gemdir)" + CFLAGS+=' -fno-lto' + LDFLAGS+=' -fno-lto' + + PROTOC="$srcdir"/build/protoc \ + rake genproto + + gem build "${_gemname}.gemspec" + + local _gemver=3.$pkgver + gem install \ + --local \ + --verbose \ + --ignore-dependencies \ + --no-user-install \ + --install-dir "tmp_install/${_gemdir}" \ + --bindir "tmp_install/usr/bin" \ + "${_gemname}-${_gemver}.gem" -- \ + --with-cflags=$CFLAGS \ + --with-ldflags=$LDFLAGS + + # 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() { cmake --build build --target check - cd $pkgbase-$pkgver/python + pushd $pkgbase-$pkgver/python pytest -vv google/$pkgbase/internal/ + popd + + pushd $pkgbase-$pkgver/ruby + local _gemdir="$(gem env gemdir)" + IN_DOCKER=true GEM_HOME="tmp_install/${_gemdir}" rake test } package_protobuf() { @@ -97,3 +159,15 @@ package_python-protobuf() { python -m installer --destdir="$pkgdir" $pkgbase-$pkgver/python/dist/*.whl install -vDm 644 $pkgbase-$pkgver/LICENSE -t "$pkgdir/usr/share/licenses/$pkgname/" } + +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}" +}