Re: git: 00770786d88e - main - www/forgejo: New port
- In reply to: Muhammad Moinur Rahman : "git: 00770786d88e - main - www/forgejo: New port"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 09 Mar 2024 13:44:46 UTC
This is supposed to go with: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269065 > On Mar 9, 2024, at 2:43 PM, Muhammad Moinur Rahman <bofh@FreeBSD.org> wrote: > > The branch main has been updated by bofh: > > URL: https://cgit.FreeBSD.org/ports/commit/?id=00770786d88e06602a7dd3ed9cf0b2c96da4527f > > commit 00770786d88e06602a7dd3ed9cf0b2c96da4527f > Author: Vladimir Timofeev <vovkasm@gmail.com> > AuthorDate: 2024-02-18 02:11:55 +0000 > Commit: Muhammad Moinur Rahman <bofh@FreeBSD.org> > CommitDate: 2024-03-09 13:43:11 +0000 > > www/forgejo: New port > --- > www/Makefile | 1 + > www/forgejo/Makefile | 82 ++++++++++++++++++++++++++++++++ > www/forgejo/distinfo | 3 ++ > www/forgejo/files/app.ini.sample.in | 93 +++++++++++++++++++++++++++++++++++++ > www/forgejo/files/forgejo.in | 51 ++++++++++++++++++++ > www/forgejo/pkg-descr | 5 ++ > www/forgejo/pkg-message | 13 ++++++ > www/forgejo/pkg-plist | 3 ++ > 8 files changed, 251 insertions(+) > > diff --git a/www/Makefile b/www/Makefile > index fb80cc0f6e75..a087e573b1fe 100644 > --- a/www/Makefile > +++ b/www/Makefile > @@ -186,6 +186,7 @@ > SUBDIR += flexget > SUBDIR += flickcurl > SUBDIR += foreign-cdm > + SUBDIR += forgejo > SUBDIR += formication > SUBDIR += foswiki > SUBDIR += free-sa-devel > diff --git a/www/forgejo/Makefile b/www/forgejo/Makefile > new file mode 100644 > index 000000000000..90d360ab57d9 > --- /dev/null > +++ b/www/forgejo/Makefile > @@ -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> > diff --git a/www/forgejo/distinfo b/www/forgejo/distinfo > new file mode 100644 > index 000000000000..29ac3152c0f2 > --- /dev/null > +++ b/www/forgejo/distinfo > @@ -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 > diff --git a/www/forgejo/files/app.ini.sample.in b/www/forgejo/files/app.ini.sample.in > new file mode 100644 > index 000000000000..d625a9ebabab > --- /dev/null > +++ b/www/forgejo/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/forgejo/files/forgejo.in b/www/forgejo/files/forgejo.in > new file mode 100644 > index 000000000000..ad5aee48f95d > --- /dev/null > +++ b/www/forgejo/files/forgejo.in > @@ -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" > diff --git a/www/forgejo/pkg-descr b/www/forgejo/pkg-descr > new file mode 100644 > index 000000000000..f7e721e96eea > --- /dev/null > +++ b/www/forgejo/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/forgejo/pkg-message b/www/forgejo/pkg-message > new file mode 100644 > index 000000000000..5c8f0b5d39b4 > --- /dev/null > +++ b/www/forgejo/pkg-message > @@ -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 > +} > +] > diff --git a/www/forgejo/pkg-plist b/www/forgejo/pkg-plist > new file mode 100644 > index 000000000000..2a0da44d59ac > --- /dev/null > +++ b/www/forgejo/pkg-plist > @@ -0,0 +1,3 @@ > +@sample %%ETCDIR%%/conf/app.ini.sample > +%%ETCDIR%%/conf/app.ini.defaults > +sbin/forgejo