# Copyright 2016-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit fcaps go-module tmpfiles systemd flag-o-matic eapi9-ver DESCRIPTION="A self-hosted lightweight software forge" HOMEPAGE="https://forgejo.org/ https://codeberg.org/forgejo/forgejo" SRC_URI="https://codeberg.org/forgejo/forgejo/releases/download/v${PV}/forgejo-src-${PV}.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/${PN}-src-${PV}" LICENSE="Apache-2.0 BSD BSD-2 ISC MIT MPL-2.0" SLOT="0" KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86" IUSE="+acct pam sqlite pie" DEPEND=" acct? ( acct-group/git acct-user/git[gitea] ) pam? ( sys-libs/pam ) " RDEPEND="${DEPEND} >=dev-vcs/git-2.34.1 !www-apps/gitea" # until acct-user/git[forgejo] BDEPEND=" >=dev-lang/go-1.26.10 " DOCS=( custom/conf/app.example.ini CONTRIBUTING.md README.md ) FILECAPS=( -m 711 cap_net_bind_service+ep usr/bin/forgejo ) RESTRICT="test" src_prepare() { default local sedcmds=( -e "s#^ROOT =#ROOT = ${EPREFIX}/var/lib/gitea/gitea-repositories#" -e "s#^ROOT_PATH =#ROOT_PATH = ${EPREFIX}/var/log/forgejo#" -e "s#^APP_DATA_PATH = data#APP_DATA_PATH = ${EPREFIX}/var/lib/gitea/data#" -e "s#^HTTP_ADDR = 0.0.0.0#HTTP_ADDR = 127.0.0.1#" -e "s#^MODE = console#MODE = file#" -e "s#^LEVEL = Trace#LEVEL = Info#" -e "s#^LOG_SQL = true#LOG_SQL = false#" -e "s#^DISABLE_ROUTER_LOG = false#DISABLE_ROUTER_LOG = true#" ) sed -i "${sedcmds[@]}" custom/conf/app.example.ini || die if use sqlite ; then sed -i -e "s#^DB_TYPE = .*#DB_TYPE = sqlite3#" custom/conf/app.example.ini || die fi } src_configure() { # bug 832756 - PIE build issues filter-flags -fPIE filter-ldflags -fPIE -pie } src_compile() { local forgejo_tags=( bindata $(usev pam) $(usex sqlite 'sqlite sqlite_unlock_notify' '') ) local forgejo_settings=( "-X forgejo.org/modules/setting.CustomConf=${EPREFIX}/etc/forgejo/app.ini" "-X forgejo.org/modules/setting.CustomPath=${EPREFIX}/var/lib/gitea/custom" "-X forgejo.org/modules/setting.AppWorkPath=${EPREFIX}/var/lib/gitea" ) local makeenv=( DRONE_TAG="${PV}" LDFLAGS="-extldflags \"${LDFLAGS}\" ${forgejo_settings[*]}" TAGS="${forgejo_tags[*]}" ) GOFLAGS="" if use pie ; then GOFLAGS+="-buildmode=pie" fi # need to set -j1 or build fails due to a race condition between MAKE jobs. # this does not actually impact build parallelism, because the go compiler # will still build everything in parallel when it's invoked. env "${makeenv[@]}" emake -j1 EXTRA_GOFLAGS="${GOFLAGS}" STRIP=0 backend } src_install() { cp gitea forgejo dobin forgejo einstalldocs newconfd "${FILESDIR}/forgejo.confd-r1" forgejo newinitd "${FILESDIR}/forgejo.initd-r4" forgejo newtmpfiles - forgejo.conf <<-EOF d /run/forgejo 0755 git git EOF systemd_newunit "${FILESDIR}"/forgejo.service-r3 forgejo.service insinto /etc/forgejo newins custom/conf/app.example.ini app.ini if use acct; then fowners root:git /etc/forgejo/{,app.ini} fperms g+w,o-rwx /etc/forgejo/{,app.ini} diropts -m0750 -o git -g git keepdir /var/lib/gitea /var/lib/gitea/custom /var/lib/gitea/data keepdir /var/log/forgejo fi } pkg_postinst() { fcaps_pkg_postinst tmpfiles_process forgejo.conf ewarn "${PN} ${PV} will continue to use /var/lib/gitea as the default home," ewarn "as acct-user/git[gitea] depends on it, and acct-user[forgejo] does not" ewarn "exist yet." ewarn "Forgejo v16.x support will end on 2026.10.29" ewarn "To continue receiving updates, users should upgrade to the stable v17.x" ewarn "or downgrade to LTS v15.x" if ver_replacing -lt 15.0.0; then ewarn "Forgejo 15 has removed admin-level permissions from repo-specific and public-only access tokens" ewarn "To see other breaking changes, as well as all relese notes," ewarn "see https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/15.0.0.md" fi if ver_replacing -lt 14.0.0; then ewarn "If SSH is enabled and Forgejo manages an authorized_keys file, the server may fail to start" ewarn "Fixes can be found at https://codeberg.org/forgejo/forgejo/milestone/27583" ewarn "Users of the Forgejo CLI should also check the release notes, as there are changes to flag formatting" fi if ver_replacing -lt 13.0.0; then ewarn "Make sure your runners are verified before migrating to Forgejo 13" ewarn "More information at: https://code.forgejo.org/forgejo/runner/releases/tag/v9.0.0" ewarn "Warning: the migration will invalidate existing actions artifacts" ewarn "More information at: https://codeberg.org/forgejo/forgejo/pulls/9023" fi if ver_replacing -lt 12.0.0; then ewarn "Warning: upgrade from 11.0.x LTS detected, carefully consider this nontrivial migration!" ewarn "Once upgraded a database cannot be downgraded!" ewarn "11.0.x to 12.0.0 release notes can be found at" ewarn "https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/12.0.0.md" fi }