# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 USE_RUBY="ruby27 ruby30 ruby31" inherit go-module ruby-single systemd tmpfiles MY_P="${PN}-v${PV}" DESCRIPTION="Git RPC service for handling GitLab git calls" HOMEPAGE="https://gitlab.com/gitlab-org/gitaly" SRC_URI="https://gitlab.com/gitlab-org/${PN}/-/archive/v${PV}/${MY_P}.tar.bz2 https://files.icw.tools/distfiles/gitaly/${P}-deps.tar.xz" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64" IUSE="" RESTRICT="mirror test" RDEPEND="${RUBY_DEPS} acct-group/gitlab acct-user/gitlab-gitaly ${DEPEND}" DEPEND="dev-libs/gmp:= dev-libs/icu:= dev-libs/libffi:= dev-libs/libgpg-error dev-libs/libpcre2:= dev-libs/libxml2:2 dev-libs/libxslt sys-libs/libxcrypt:=" BDEPEND="dev-ruby/bundler:2 dev-build/cmake virtual/pkgconfig" S="${WORKDIR}/${MY_P}" DOCS=( {CHANGELOG,README}.md ) pkg_setup() { einfo "This package fetches gems during compilation." einfo "Therefore network-sandbox feature (man 5 make.conf) must be disabled for it:" einfo " echo 'FEATURES=\"-network-sandbox\"' > /etc/portage/env/no-network-sandbox.conf" einfo " echo 'dev-vcs/gitaly no-network-sandbox.conf'/etc/portage/package.env/gitaly" } src_prepare() { default pushd ruby || die "pushd failed" bundle config set build.nokogiri --use-system-libraries || die "bundle nokogiri failed" bundle config set build.rugged --use-system-libraries || die "bundle rugged failed" popd || die "popd failed" # Modify config (socket_path, bin_dir, dir in gitlab-gitaly and gitlab-shell sections) sed -i \ -e '/socket_path/s|home/git/gitlab/tmp/sockets/private/|run/gitlab-gitaly/gitlab-|' \ -e '/bin_dir/s|home/git/gitaly|usr/bin|' \ -e '/^path/s|home|var/lib|' \ -e '/dir = "\/home\/git\/gitaly\//s|home/git/gitaly|var/lib/gitlab-gitaly|' \ -e '/dir = "\/home\/git\/gitlab-shell/s|home|var/lib|' \ config.toml.example || die "sed failed for config.toml.example" } src_install() { einstalldocs emake PREFIX="${ED}"/usr install newconfd "${FILESDIR}"/gitlab-gitaly.confd gitlab-gitaly newinitd "${FILESDIR}"/gitlab-gitaly.initd gitlab-gitaly systemd_dounit "${FILESDIR}"/gitlab-gitaly.service newtmpfiles "${FILESDIR}"/gitlab-gitaly.tmpfile gitlab-gitaly.conf insinto /etc/logrotate.d newins "${FILESDIR}"/gitlab-gitaly.logrotate gitlab-gitaly # Install gitaly-ruby diropts -o gitlab-gitaly -g gitlab -m 0755 insinto /var/lib/gitlab-gitaly cp -a ruby "${ED}"/var/lib/gitlab-gitaly/ruby || die "cp failed" fowners -R gitlab-gitaly:gitlab /var/lib/gitlab-gitaly/ruby # Remove empty directories rmdir "${ED}"/var/lib/gitlab-gitaly/ruby/vendor/bundle/ruby/"$(ruby -v | cut -c 6-9)"0/{doc,plugins} \ || die "rmdir failed" # Strict permissions on world writable files find "${ED}"/var/lib/gitlab-gitaly/ruby/vendor/bundle/ruby/"$(ruby -v | cut -c 6-9)"0/gems/gitlab-labkit-0.16.2 \ -type f -exec chmod 644 {} \; || die "find failed" insopts -o gitlab-gitaly -g gitlab -m 0600 insinto /etc/gitlab-gitaly doins config.toml.example diropts -o gitlab-gitaly -g gitlab -m 0700 keepdir /var/log/gitlab-gitaly } pkg_postinst() { tmpfiles_process gitlab-gitaly.conf }