aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Druzenko <vvd@FreeBSD.org>2024-09-04 20:53:13 +0000
committerVladimir Druzenko <vvd@FreeBSD.org>2024-09-04 21:12:16 +0000
commit4abb8e753d4635821fa9377fde9433a4d2c5527a (patch)
tree0bb2f549a6ef7cc3563d91025ce159b178ad03d0
parent1054fc2ae4a857c574d61b83e67aab3e723318b6 (diff)
downloadports-4abb8e753d4635821fa9377fde9433a4d2c5527a.tar.gz
ports-4abb8e753d4635821fa9377fde9433a4d2c5527a.zip
www/forgejo7: New port forgejo branch 7.x, copy from www/forgejo before update to 8.x
Copy from www/forgejo after commit be43fb2830c94e23e0d9aa49ef9b982b0ab31e2c "update to 7.0.4 (fixes security vulnerabilities)". PR: 280532
-rw-r--r--www/Makefile1
-rw-r--r--www/forgejo7/Makefile87
-rw-r--r--www/forgejo7/distinfo3
-rw-r--r--www/forgejo7/files/app.ini.sample.in93
-rw-r--r--www/forgejo7/files/forgejo.in65
-rw-r--r--www/forgejo7/files/pkg-message.in27
-rw-r--r--www/forgejo7/pkg-descr5
-rw-r--r--www/forgejo7/pkg-plist8
8 files changed, 289 insertions, 0 deletions
diff --git a/www/Makefile b/www/Makefile
index 555a3fd23c1f..ec0336715f5b 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -186,6 +186,7 @@
SUBDIR += flickcurl
SUBDIR += foreign-cdm
SUBDIR += forgejo
+ SUBDIR += forgejo7
SUBDIR += formication
SUBDIR += foswiki
SUBDIR += free-sa-devel
diff --git a/www/forgejo7/Makefile b/www/forgejo7/Makefile
new file mode 100644
index 000000000000..a923be71c492
--- /dev/null
+++ b/www/forgejo7/Makefile
@@ -0,0 +1,87 @@
+PORTNAME= forgejo
+DISTVERSIONPREFIX= v
+DISTVERSION= 7.0.4
+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.22,no_targets
+USE_RC_SUBR= forgejo
+
+EXTRACT_AFTER_ARGS= --strip-components 1
+SUB_FILES= app.ini.sample pkg-message
+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
+LDFLAGS+= "'-X "code.gitea.io/gitea/modules/setting.CustomPath=${PREFIX}/etc/forgejo"'"
+LDFLAGS+= "'-X "code.gitea.io/gitea/modules/setting.AppWorkPath=${PREFIX}/share/forgejo"'"
+MAKE_ARGS= GOPATH=${WRKDIR} \
+ TAGS="${GO_TAGS}" \
+ GOFLAGS="-buildvcs=false"
+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
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+ ${MKDIR} ${STAGEDIR}/var/db/forgejo/data
+ ${MKDIR} ${STAGEDIR}/var/db/forgejo/forgejo-repositories
+ ${MKDIR} ${STAGEDIR}/var/log/forgejo
+
+do-install-BINDATA-off:
+ cd ${WRKSRC} && \
+ ${COPYTREE_SHARE} "options public templates" ${STAGEDIR}${DATADIR}
+
+.include <bsd.port.mk>
diff --git a/www/forgejo7/distinfo b/www/forgejo7/distinfo
new file mode 100644
index 000000000000..e60439031aae
--- /dev/null
+++ b/www/forgejo7/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1718527772
+SHA256 (forgejo-src-7.0.4.tar.gz) = 881e55d92a4145238a8e7a39dd5c64d547c7629361005ded0393f33ec9e6bba4
+SIZE (forgejo-src-7.0.4.tar.gz) = 54935871
diff --git a/www/forgejo7/files/app.ini.sample.in b/www/forgejo7/files/app.ini.sample.in
new file mode 100644
index 000000000000..d625a9ebabab
--- /dev/null
+++ b/www/forgejo7/files/app.ini.sample.in
@@ -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
diff --git a/www/forgejo7/files/forgejo.in b/www/forgejo7/files/forgejo.in
new file mode 100644
index 000000000000..c635f3a9a9b1
--- /dev/null
+++ b/www/forgejo7/files/forgejo.in
@@ -0,0 +1,65 @@
+#!/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_configcheck_enable:="YES"}
+: ${forgejo_facility:="daemon"}
+: ${forgejo_priority:="info"}
+: ${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"
+start_precmd="${name}_prestart"
+
+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
+}
+
+forgejo_prestart() {
+ if checkyesno forgejo_configcheck_enable; then
+ if su -m ${forgejo_user} -c "%%PREFIX%%/sbin/${name} doctor check >/dev/null"; then
+ else
+ echo "cannot start ${name} because of configuration errors. Run" >&2
+ echo " su -m git -c '${name} doctor check'" >&2
+ echo "for further details"
+ return 1
+ fi
+ fi
+}
+
+run_rc_command "$1"
diff --git a/www/forgejo7/files/pkg-message.in b/www/forgejo7/files/pkg-message.in
new file mode 100644
index 000000000000..03164efe7264
--- /dev/null
+++ b/www/forgejo7/files/pkg-message.in
@@ -0,0 +1,27 @@
+[
+{ type: install
+ message: <<EOM
+Before starting forgejo for the first time, you must set a number of
+secrets in the configuration file. For your convenience, a sample file
+has been copied to %%PREFIX%%/etc/forgejo/conf/app.ini.
+
+You need to replace every occurence of CHANGE_ME in the file with
+sensible values. Please refer to the official documentation at
+https://forgejo.org for details.
+
+You will also likely need to create directories for persistent storage.
+Run
+ su -m git -c 'forgejo doctor check'
+to check if all prerequisites have been met.
+EOM
+}
+{ type: upgrade
+ maximum_version: "1.21"
+ message: <<EOM
+Since forgejo version 7, the startup script will run forgejo doctor check
+to verify that forgejo can be started successfully. If you are sure that
+forgejo will start even if doctor has identified an issue, you can disable
+the check by setting forgejo_configcheck_enabled=NO in rc.conf.
+EOM
+}
+]
diff --git a/www/forgejo7/pkg-descr b/www/forgejo7/pkg-descr
new file mode 100644
index 000000000000..f7e721e96eea
--- /dev/null
+++ b/www/forgejo7/pkg-descr
@@ -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.
diff --git a/www/forgejo7/pkg-plist b/www/forgejo7/pkg-plist
new file mode 100644
index 000000000000..cfdd317d833c
--- /dev/null
+++ b/www/forgejo7/pkg-plist
@@ -0,0 +1,8 @@
+@sample %%ETCDIR%%/conf/app.ini.sample
+%%ETCDIR%%/conf/app.ini.defaults
+sbin/forgejo
+@dir share/forgejo
+@dir(git,git,755) /var/db/forgejo
+@dir(git,git,755) /var/db/forgejo/data
+@dir(git,git,755) /var/db/forgejo/forgejo-repositories
+@dir(git,git,755) /var/log/forgejo