Skip to content

Commit

Permalink
www/forgejo: New port
Browse files Browse the repository at this point in the history
  • Loading branch information
vovkasm authored and 5u623l20 committed Mar 9, 2024
1 parent 8f6ae14 commit 0077078
Show file tree
Hide file tree
Showing 8 changed files with 251 additions and 0 deletions.
1 change: 1 addition & 0 deletions www/Makefile
Expand Up @@ -186,6 +186,7 @@
SUBDIR += flexget
SUBDIR += flickcurl
SUBDIR += foreign-cdm
SUBDIR += forgejo
SUBDIR += formication
SUBDIR += foswiki
SUBDIR += free-sa-devel
Expand Down
82 changes: 82 additions & 0 deletions 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>
3 changes: 3 additions & 0 deletions 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
93 changes: 93 additions & 0 deletions 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
51 changes: 51 additions & 0 deletions 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"
5 changes: 5 additions & 0 deletions 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.
13 changes: 13 additions & 0 deletions 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
}
]
3 changes: 3 additions & 0 deletions www/forgejo/pkg-plist
@@ -0,0 +1,3 @@
@sample %%ETCDIR%%/conf/app.ini.sample
%%ETCDIR%%/conf/app.ini.defaults
sbin/forgejo

0 comments on commit 0077078

Please sign in to comment.