www/forgejo: New port

This commit is contained in:
Vladimir Timofeev 2024-02-18 02:11:55 +00:00 committed by Muhammad Moinur Rahman
commit 00770786d8
No known key found for this signature in database
GPG key ID: BDB9B5A617C0BC91

View file

@ -186,6 +186,7 @@
SUBDIR += flexget
SUBDIR += flickcurl
SUBDIR += foreign-cdm
SUBDIR += forgejo
SUBDIR += formication
SUBDIR += foswiki
SUBDIR += free-sa-devel

82
www/forgejo/Makefile Normal file
View file

@ -0,0 +1,82 @@
PORTNAME= forgejo
DISTVERSIONPREFIX= v
DISTVERSION= 1.21.7-0
CATEGORIES= www
MASTER_SITES= https://codeberg.org/forgejo/forgejo/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/
DISTNAME= forgejo-src-${DISTVERSION}
MAINTAINER= stb@lassitu.de
COMMENT= Compact self-hosted Git service
WWW= https://forgejo.org/
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
RUN_DEPENDS= git:devel/git
USES= cpe gmake go:1.21,no_targets
USE_RC_SUBR= forgejo
EXTRACT_AFTER_ARGS= --strip-components 1
SUB_FILES+= app.ini.sample
SUB_LIST+= GITUSER=${USERS}
NO_WRKSUBDIR= yes
USERS= git
GROUPS= git
PORTDATA= *
OPTIONS_DEFINE= BINDATA GIT_LFS PAM SQLITE
OPTIONS_DEFAULT= BINDATA GIT_LFS PAM SQLITE
OPTIONS_SUB= yes
BINDATA_DESC= Build a single monolithic binary, with all assets included
GIT_LFS_DESC= Support for Git Large File Storage (LFS)
PAM_DESC= Enable support for PAM
BINDATA_VARS= GO_TAGS+=bindata
GIT_LFS_RUN_DEPENDS= git-lfs:devel/git-lfs
PAM_VARS= GO_TAGS+=pam
SQLITE_VARS= GO_TAGS+="sqlite sqlite_unlock_notify"
.include <bsd.port.options.mk>
.if ${OPSYS} == FreeBSD
DAEMONARGS= -S -l \$${forgejo_facility} -s \$${forgejo_priority} -T \
\$${name}
.else
DAEMONARGS= -f
.endif
SUB_LIST+= DAEMONARGS="${DAEMONARGS}"
SSP_UNSAFE= true
# Default LDFLAGS are incompatible with build
MAKE_ENV= LDFLAGS="${LDFLAGS} ${EXTRA_LDFLAGS}"
MAKE_ARGS= GOPATH=${WRKDIR} \
TAGS="${GO_TAGS}"
ALL_TARGET= backend
MAKE_JOBS_UNSAFE= yes
post-patch:
${ECHO_CMD} ${DISTVERSION} >${WRKSRC}/VERSION
# Too lazy to figure out why go install won't work.
do-install:
# Go binary is statically linked and cannot be stripped, so use
# INSTALL_SCRIPT.
${INSTALL_SCRIPT} ${WRKSRC}/gitea \
${STAGEDIR}${PREFIX}/sbin/forgejo
@${MKDIR} ${STAGEDIR}${ETCDIR}/conf
${INSTALL_DATA} ${WRKDIR}/app.ini.sample \
${STAGEDIR}${ETCDIR}/conf/app.ini.sample
${INSTALL_DATA} ${WRKSRC}/custom/conf/app.example.ini \
${STAGEDIR}${ETCDIR}/conf/app.ini.defaults
do-install-BINDATA-off:
cd ${WRKSRC} && \
${COPYTREE_SHARE} "options public templates" ${STAGEDIR}${DATADIR}
.include <bsd.port.mk>

3
www/forgejo/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1709747919
SHA256 (forgejo-src-1.21.7-0.tar.gz) = 9c0148995288839f685d887f7d1c5f4c6f89511d60d6262ae500e2991803eb5c
SIZE (forgejo-src-1.21.7-0.tar.gz) = 58802779

View file

@ -0,0 +1,93 @@
#
# Sample Configuration for Forgejo using SQLite
#
# For information on the available settings, consult the online
# documentation, or see the accompanying file app.ini.defaults, which
# contains the settings incorporated into the forgejo binary.
#
# This sample configuration runs Forgejo with a local database. Before
# running this configuration, make sure to change the INTERNAL_TOKEN,
# JWT_SECRET, and SECRET_KEY variables. SECRET_KEY is a password of your
# choosing, INTERNAL_TOKEN is a 64-byte random number in BASE64 encoding,
# JWT_SECRET is a 32-byte random number in BASE64 encoding.
#
# You can generate the token using for example:
# openssl rand -base64 64
#
# You can let Forgejo add these to the config for you; you need to make
# app.ini writeable by the git user.
#
# There are no pre-configured users; the first user to register becomes an
# admin. In this sample configuration, the HTTP server only listens on
# localhost.
#
# If you'd rather use the web-based installer, remove this conf/app.ini file
# and make %%PREFIX%%/etc/forgejo/conf writeable to the git user.
APP_NAME = Forgejo: A self-hosted lightweight software forge
RUN_MODE = prod
RUN_USER = %%GITUSER%%
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = forgejo
PASSWD =
PATH = /var/db/forgejo/forgejo.db
SSL_MODE = disable
USER = root
[indexer]
ISSUE_INDEXER_PATH = /var/db/forgejo/indexers/issues.bleve
[log]
LEVEL = Info
MODE = file
ROOT_PATH = /var/log/forgejo
[mailer]
ENABLED = false
[oauth2]
JWT_SECRET = CHANGE_ME
[picture]
AVATAR_UPLOAD_PATH = /var/db/forgejo/data/avatars
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = false
[repository]
ROOT = /var/db/forgejo/forgejo-repositories
# Forgejo's default is 'bash', so if you have bash installed, you can comment
# this out.
SCRIPT_TYPE = sh
[repository.upload]
TEMP_PATH = /var/db/forgejo/data/tmp/uploads
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = CHANGE_ME
SECRET_KEY = CHANGE_ME
[session]
PROVIDER = file
PROVIDER_CONFIG = /var/db/forgejo/data/sessions
[server]
APP_DATA_PATH = /var/db/forgejo/data
DISABLE_SSH = false
DOMAIN = localhost
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000
OFFLINE_MODE = false
ROOT_URL = http://localhost:3000/
SSH_DOMAIN = %(DOMAIN)s
SSH_PORT = 22
[service]
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = true
ENABLE_NOTIFY_MAIL = false
REGISTER_EMAIL_CONFIRM = false
REQUIRE_SIGNIN_VIEW = false

View file

@ -0,0 +1,51 @@
#!/bin/sh
# PROVIDE: forgejo
# REQUIRE: NETWORKING SYSLOG
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable forgejo:
#
#forgejo_enable="YES"
. /etc/rc.subr
name="forgejo"
rcvar="forgejo_enable"
load_rc_config $name
: ${forgejo_user:="%%GITUSER%%"}
: ${forgejo_enable:="NO"}
: ${forgejo_facility:="daemon"}
: ${forgejo_priority:="debug"}
: ${forgejo_shared:="%%PREFIX%%/share/${name}"}
: ${forgejo_custom:="%%PREFIX%%/etc/${name}"}
command="%%PREFIX%%/sbin/${name} web"
procname="%%PREFIX%%/sbin/${name}"
githome="$(eval echo ~${forgejo_user})"
pidfile="/var/run/${name}.pid"
start_cmd="${name}_start"
forgejo_start() {
for d in /var/db/forgejo /var/log/forgejo; do
if [ ! -e "$d" ]; then
mkdir "$d"
chown ${forgejo_user} "$d"
fi
done
/usr/sbin/daemon %%DAEMONARGS%% \
-u ${forgejo_user} -p ${pidfile} \
/usr/bin/env -i \
"GITEA_WORK_DIR=${forgejo_shared}" \
"GITEA_CUSTOM=${forgejo_custom}" \
"HOME=${githome}" \
"PATH=%%PREFIX%%/bin:${PATH}" \
"USER=${forgejo_user}" \
$command
}
run_rc_command "$1"

5
www/forgejo/pkg-descr Normal file
View file

@ -0,0 +1,5 @@
A self-hosted Git service.
Forgejo is a community managed soft-fork of Gitea, which is a fork of Gogs,
lightweight code hosting solution written in Go and published under the MIT
license.

13
www/forgejo/pkg-message Normal file
View file

@ -0,0 +1,13 @@
[
{ type: install
message: <<EOM
Before starting forgejo you must create the main configuration file.
cp /usr/local/etc/forgejo/conf/app.ini.sample /usr/local/etc/forgejo/conf/app.ini
${EDITOR} /usr/local/etc/forgejo/conf/app.ini
You need to replace every occurence of CHANGE_ME in the file with sensitive
values. Please refer to the official documentation for details.
EOM
}
]

3
www/forgejo/pkg-plist Normal file
View file

@ -0,0 +1,3 @@
@sample %%ETCDIR%%/conf/app.ini.sample
%%ETCDIR%%/conf/app.ini.defaults
sbin/forgejo