summaryrefslogtreecommitdiff
path: root/www-apps/forgejo/forgejo-15.0.2.ebuild
blob: 2f60f9ae86408ba9cd32d53e0c3a5a16d4ea6ee4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# 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.2"

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}" backend
}

src_install() {
	cp gitea forgejo
	dobin forgejo

	einstalldocs

	newconfd "${FILESDIR}/forgejo.confd-r1" forgejo
	newinitd "${FILESDIR}/forgejo.initd-r3" 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."

	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
}