151 lines
5.3 KiB
Bash
151 lines
5.3 KiB
Bash
|
# Copyright 2016-2025 Gentoo Authors
|
||
|
# Distributed under the terms of the GNU General Public License v2
|
||
|
|
||
|
EAPI=8
|
||
|
|
||
|
inherit fcaps go-module tmpfiles systemd flag-o-matic user-info
|
||
|
|
||
|
DESCRIPTION="A painless self-hosted Git service"
|
||
|
HOMEPAGE="https://gitea.com https://github.com/go-gitea/gitea"
|
||
|
|
||
|
SRC_URI="https://github.com/go-gitea/gitea/releases/download/v${PV}/gitea-src-${PV}.tar.gz -> ${P}.tar.gz"
|
||
|
S="${WORKDIR}/${PN}-src-${PV}"
|
||
|
LICENSE="Apache-2.0 BSD BSD-2 CC0-1.0 ISC MIT MPL-2.0"
|
||
|
SLOT="0"
|
||
|
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86"
|
||
|
IUSE="+acct gogit pam sqlite pie"
|
||
|
|
||
|
DEPEND="
|
||
|
acct? (
|
||
|
acct-group/git
|
||
|
acct-user/git[gitea] )
|
||
|
pam? ( sys-libs/pam )"
|
||
|
RDEPEND="${DEPEND}
|
||
|
!gogit? ( dev-vcs/git )"
|
||
|
BDEPEND=">=dev-lang/go-1.23:="
|
||
|
|
||
|
DOCS=(
|
||
|
custom/conf/app.example.ini CHANGELOG.md CONTRIBUTING.md README.md
|
||
|
)
|
||
|
FILECAPS=(
|
||
|
-m 711 cap_net_bind_service+ep usr/bin/gitea
|
||
|
)
|
||
|
|
||
|
RESTRICT="test"
|
||
|
|
||
|
src_prepare() {
|
||
|
default
|
||
|
|
||
|
sed -i -e "s#^MODE = console#MODE = file#" custom/conf/app.example.ini || die
|
||
|
}
|
||
|
|
||
|
src_configure() {
|
||
|
# bug 832756 - PIE build issues
|
||
|
filter-flags -fPIE
|
||
|
filter-ldflags -fPIE -pie
|
||
|
}
|
||
|
|
||
|
src_compile() {
|
||
|
local gitea_tags
|
||
|
local -a gitea_settings makeenv
|
||
|
|
||
|
# The space-separated list of the -tags flag is deprecated, please
|
||
|
# always use the comma-separated list in the future.
|
||
|
gitea_tags="bindata"
|
||
|
gitea_tags+="$(usex gogit ',gogit' '')"
|
||
|
gitea_tags+="$(usex pam ',pam' '')"
|
||
|
gitea_tags+="$(usex sqlite ',sqlite,sqlite_unlock_notify' '')"
|
||
|
|
||
|
gitea_settings=(
|
||
|
"-X code.gitea.io/gitea/modules/setting.CustomConf=${EPREFIX}/etc/gitea/app.ini"
|
||
|
"-X code.gitea.io/gitea/modules/setting.CustomPath=${EPREFIX}/var/lib/gitea/custom"
|
||
|
"-X code.gitea.io/gitea/modules/setting.AppWorkPath=${EPREFIX}/var/lib/gitea"
|
||
|
)
|
||
|
|
||
|
makeenv=(
|
||
|
LDFLAGS="-extldflags \"${LDFLAGS}\" ${gitea_settings[*]}"
|
||
|
TAGS="${gitea_tags}"
|
||
|
)
|
||
|
|
||
|
if use pie ; then
|
||
|
# Please check the supported platforms when a new keyword request opened,
|
||
|
# refer to file: 'go/src/internal/platform/supported.go'.
|
||
|
# When PIE buildmode is not supported by internal linker, the external
|
||
|
# linker will be used automatically, refer to:
|
||
|
# https://github.com/golang/go/blob/ed817f1c4055a559a94afffecbb91c78e4f39942/src/cmd/link/internal/ld/config.go#L149
|
||
|
makeenv+=( EXTRA_GOFLAGS="-buildmode=pie" )
|
||
|
fi
|
||
|
|
||
|
env "${makeenv[@]}" emake backend
|
||
|
}
|
||
|
|
||
|
src_install() {
|
||
|
dobin gitea
|
||
|
|
||
|
einstalldocs
|
||
|
|
||
|
newconfd "${FILESDIR}/gitea.confd-r1" gitea
|
||
|
newinitd "${FILESDIR}/gitea.initd-r3" gitea
|
||
|
newtmpfiles - gitea.conf <<-EOF
|
||
|
d /run/gitea 0755 git git
|
||
|
EOF
|
||
|
systemd_newunit "${FILESDIR}"/gitea.service-r4 gitea.service
|
||
|
|
||
|
insinto /etc/gitea
|
||
|
newins custom/conf/app.example.ini app.ini
|
||
|
if use acct; then
|
||
|
fowners root:git /etc/gitea/{,app.ini}
|
||
|
fperms g+w,o-rwx /etc/gitea/{,app.ini}
|
||
|
|
||
|
diropts -m0750 -o git -g git
|
||
|
keepdir /var/lib/gitea /var/lib/gitea/custom /var/lib/gitea/data
|
||
|
keepdir /var/log/gitea
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
pkg_postinst() {
|
||
|
fcaps_pkg_postinst
|
||
|
|
||
|
# It is not guaranteed that the git user and group always exist (due to the acct USE Flag),
|
||
|
# but for convenience, the tmpfile uses the git user and group by default.
|
||
|
# To avoid installation errors, a condition needs to be added here:
|
||
|
# if there is no git user or group, the installation of tmpfile will be skipped
|
||
|
# and the user will be notified to handle it by themselves.
|
||
|
if egetent passwd git &>/dev/null && \
|
||
|
egetent group git &>/dev/null; then
|
||
|
tmpfiles_process gitea.conf
|
||
|
else
|
||
|
eerror "Unable to install the tmpfile for gitea due to the git user or group is missing,"
|
||
|
eerror "please install tmpfile manually or rebuild this package with USE flag 'acct'."
|
||
|
eerror "You can simply copy the default tmpfile from '/usr/lib/tmpfiles.d/gitea.conf'"
|
||
|
eerror "to higher priority path '/etc/tmpfiles.d/gitea.conf', and correct it with"
|
||
|
eerror "the right User and Group value (see tmpfiles.d(5) for details), then execute:"
|
||
|
eerror " # systemd-tmpfiles --create /etc/tmpfiles.d/gitea.conf"
|
||
|
eerror "to install it."
|
||
|
fi
|
||
|
|
||
|
if [[ -n ${REPLACING_VERSIONS} ]]; then
|
||
|
if ver_test "${REPLACING_VERSIONS}" -lt 1.22; then
|
||
|
ewarn "Since version 1.22.0:"
|
||
|
ewarn " 1. Minimum database requirements updated to MySQL 8.0, PostgreSQL 12, and MSSQL 2012."
|
||
|
ewarn " 2. There are a lot of refactoring changes related to customizing templates."
|
||
|
ewarn " 3. The default duration of the 'Remember login' feature has been"
|
||
|
ewarn " changed from one week to one month."
|
||
|
ewarn " 4. Enhanced auth token/remember me, the obsolete setting"
|
||
|
ewarn " '[security].COOKIE_USERNAME' has been removed."
|
||
|
ewarn " 5. For MinIO storage, adds a prefix path for all MinIO storage"
|
||
|
ewarn " and override base path will override the path."
|
||
|
ewarn " 6. Now use a more restricted sanitizer for the repository description."
|
||
|
ewarn "For more details, see <https://github.com/go-gitea/gitea/releases/tag/v1.22.0>."
|
||
|
fi
|
||
|
if ver_test "${REPLACING_VERSIONS}" -lt 1.23; then
|
||
|
ewarn "Since version 1.23.0:"
|
||
|
ewarn " 1. The config option '[camo].Allways' has been renamed to '[camo].Always'."
|
||
|
ewarn " 2. The SHA1 for support for SSH RSA signing has been removed."
|
||
|
ewarn " 3. Use UTC as the default timezone when scheduling Actions cron tasks."
|
||
|
ewarn " 4. Make OIDC introspection authentication strictly require Client ID and secret."
|
||
|
ewarn "For other breaking changes, see <https://github.com/go-gitea/gitea/releases/tag/v1.23.0>."
|
||
|
fi
|
||
|
fi
|
||
|
}
|