From 889ff6ad1edf8c04d948f86f4de527253af6377e Mon Sep 17 00:00:00 2001 From: "Orville Q. Song" Date: Fri, 28 Feb 2025 02:51:39 +0000 Subject: [PATCH] Codeberg Pages Server v6.2.1 --- www/codeberg-pages-server/Makefile | 47 +++++++++++++++++ www/codeberg-pages-server/distinfo | 3 ++ .../files/codeberg-pages-server.in | 46 +++++++++++++++++ .../files/config-generater.sh | 50 +++++++++++++++++++ .../files/patch-Justfile | 11 ++++ www/codeberg-pages-server/pkg-descr | 5 ++ www/codeberg-pages-server/pkg-plist | 4 ++ 7 files changed, 166 insertions(+) create mode 100644 www/codeberg-pages-server/Makefile create mode 100644 www/codeberg-pages-server/distinfo create mode 100644 www/codeberg-pages-server/files/codeberg-pages-server.in create mode 100755 www/codeberg-pages-server/files/config-generater.sh create mode 100644 www/codeberg-pages-server/files/patch-Justfile create mode 100644 www/codeberg-pages-server/pkg-descr create mode 100644 www/codeberg-pages-server/pkg-plist diff --git a/www/codeberg-pages-server/Makefile b/www/codeberg-pages-server/Makefile new file mode 100644 index 0000000000..86a7784730 --- /dev/null +++ b/www/codeberg-pages-server/Makefile @@ -0,0 +1,47 @@ +PORTNAME= codeberg-pages-server +DISTVERSIONPREFIX= v +DISTVERSION= 6.2.1 +CATEGORIES= www +MASTER_SITES= https://codeberg.org/Codeberg/pages-server/archive/ +DISTNAME= ${DISTVERSIONFULL} + +MAINTAINER= orville@anislet.dev +COMMENT= Codeberg Pages Server +WWW= https://codeberg.org/Codeberg/pages-server + +LICENSE= EUPL12 +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= cpe go:1.23 +BUILD_DEPENDS= just:deskutils/just bash:shells/bash + +WRKSRC= ${WRKDIR}/pages-server + +USERS= www +GROUPS= www + +USE_RC_SUBR= codeberg-pages-server + +pre-build: + @${MKDIR} ${WRKDIR}/bin + @${LN} -sf ${GO_CMD} ${WRKDIR}/bin/go + +do-build: + cd ${WRKSRC} && \ + PATH=${WRKDIR}/bin:${PATH} just build-tag ${DISTVERSIONFULL} + +post-build: + @${WRKSRC}/build/codeberg-pages-server --help | \ + ${FILESDIR}/config-generater.sh > \ + ${WRKSRC}/codeberg-pages-server-config.in + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/build/codeberg-pages-server \ + ${STAGEDIR}${PREFIX}/bin/codeberg-pages-server + + ${INSTALL} -m0600 ${WRKSRC}/codeberg-pages-server-config.in \ + ${STAGEDIR}${PREFIX}/etc/rc.conf.d/codeberg-pages-server.sample + + @${MKDIR} ${STAGEDIR}/var/db/codeberg-pages-server + +.include diff --git a/www/codeberg-pages-server/distinfo b/www/codeberg-pages-server/distinfo new file mode 100644 index 0000000000..d26e5aa84b --- /dev/null +++ b/www/codeberg-pages-server/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1740709713 +SHA256 (v6.2.1.tar.gz) = a7fbf8110701da2a480a58f824a79d5a1ef949173c2543f6af0754f3e3a60883 +SIZE (v6.2.1.tar.gz) = 160292 diff --git a/www/codeberg-pages-server/files/codeberg-pages-server.in b/www/codeberg-pages-server/files/codeberg-pages-server.in new file mode 100644 index 0000000000..1421e4a627 --- /dev/null +++ b/www/codeberg-pages-server/files/codeberg-pages-server.in @@ -0,0 +1,46 @@ +#!/bin/sh +# +# PROVIDE: codeberg_pages_server +# REQUIRE: LOGIN +# KEYWORD: shutdown + +. /etc/rc.subr + +name="codeberg_pages_server" +rcvar="${name}_enable" + +load_rc_config codeberg-pages-server + +: ${codeberg_pages_server_enable:="NO"} +: ${codeberg_pages_server_user:="www"} +: ${codeberg_pages_server_group:="www"} +: ${codeberg_pages_server_log:="/var/log/codeberg-pages-server.log"} +: ${codeberg_pages_server_chdir:="/var/db/codeberg-pages-server"} + +command="/usr/sbin/daemon" +task="/usr/local/bin/codeberg-pages-server" +pidfile="/var/run/codeberg-pages-server/codeberg-pages-server.pid" +procname="${task}" + +command_args="-p ${pidfile} -o ${codeberg_pages_server_log} ${task}" + +start_precmd="${name}_prestart" + +codeberg_pages_server_prestart() { + if [ ! -d "${codeberg_pages_server_chdir}" ]; then + mkdir "${codeberg_pages_server_chdir}" + chown ${codeberg_pages_server_user} "${codeberg_pages_server_chdir}" + fi + + if [ ! -f "${codeberg_pages_server_log}" ]; then + touch "${codeberg_pages_server_log}" + chown ${codeberg_pages_server_user}:${codeberg_pages_server_group} "${codeberg_pages_server_log}" + chmod 640 "${codeberg_pages_server_log}" + fi + + if [ ! -d "/var/run/codeberg-pages-server" ] ; then + install -d -o ${codeberg_pages_server_user} -g ${codeberg_pages_server_group} "/var/run/codeberg-pages-server" + fi +} + +run_rc_command "$1" diff --git a/www/codeberg-pages-server/files/config-generater.sh b/www/codeberg-pages-server/files/config-generater.sh new file mode 100755 index 0000000000..11dea06f58 --- /dev/null +++ b/www/codeberg-pages-server/files/config-generater.sh @@ -0,0 +1,50 @@ +#!/usr/local/bin/bash + +echo "# See https://codeberg.org/Codeberg/pages-server" +echo + +while IFS= read -r line; do + if [[ "$line" =~ ^\ *--([a-zA-Z0-9_-]+)\ value.*\[\$([A-Z0-9_]+)\] ]]; then + export=export + + option_name="${BASH_REMATCH[2]}" + + description=$(echo "$line" | sed -E "s/^.*value[[:space:]]+(.*)(\(default.*\)|\[.*\]).*$/\1/" | sed -e "s/[[:space:]]*$//") + + if [[ "$description" =~ ^\] ]]; then + description=$(echo "$description" | sed -E "s/^\] *//") + fi + + default_value=$(echo "$line" | grep -oE "\(default: [^)]+\)" | sed -E "s/^\(default: (.+)\)$/\1/") + + case "$option_name" in + # "DB_CONN") + # default_value="\"/var/db/codeberg-pages-server/certs.sqlite\"" + # ;; + # "ACME_ACCOUNT_CONFIG") + # default_value="\"/var/db/codeberg-pages-server/acme-account.json\"" + # ;; + "FORBIDDEN_MIME_TYPES"|"ALLOWED_CORS_DOMAINS"|"BLACKLISTED_PATHS"|"CONFIG_FILE"|"PROFILING_ADDRESS"|"ACME_EAB_KID"|"ACME_EAB_HMAC"|"DNS_PROVIDER") + option_name="#${option_name}" + export="#${export}" + ;; + esac + + if [[ -n "$description" ]]; then + echo "# $description" + else + echo "#" + fi + + if [[ -n "$default_value" ]]; then + echo "$option_name=$default_value" + echo "$export $option_name" + else + echo "$option_name=\"\"" + echo "$export $(echo $option_name | sed 's/^#//')" + fi + + echo + fi +done + diff --git a/www/codeberg-pages-server/files/patch-Justfile b/www/codeberg-pages-server/files/patch-Justfile new file mode 100644 index 0000000000..1a6542a784 --- /dev/null +++ b/www/codeberg-pages-server/files/patch-Justfile @@ -0,0 +1,11 @@ +--- Justfile.orig 2025-01-22 13:51:34 UTC ++++ Justfile +@@ -13,7 +13,7 @@ build-tag VERSION: + CGO_ENABLED=1 go build -tags '{{TAGS}}' -ldflags '-s -w {{CGO_FLAGS}}' -v -o build/codeberg-pages-server ./ + + build-tag VERSION: +- CGO_ENABLED=1 go build -tags '{{TAGS}}' -ldflags '-s -w -X "codeberg.org/codeberg/pages/server/version.Version={{VERSION}}" {{CGO_FLAGS}}' -v -o build/codeberg-pages-server ./ ++ CGO_ENABLED=1 go build -tags '{{TAGS}}' -trimpath -ldflags '-s -w -X "codeberg.org/codeberg/pages/server/version.Version={{VERSION}}" {{CGO_FLAGS}}' -v -o build/codeberg-pages-server ./ + + lint: tool-golangci tool-gofumpt + golangci-lint run --timeout 5m --build-tags integration diff --git a/www/codeberg-pages-server/pkg-descr b/www/codeberg-pages-server/pkg-descr new file mode 100644 index 0000000000..cc3508f377 --- /dev/null +++ b/www/codeberg-pages-server/pkg-descr @@ -0,0 +1,5 @@ +Gitea/Forgejo lacks the ability to host static pages from Git. +The Codeberg Pages Server addresses this lack by implementing a +standalone service that connects to Gitea/Forgejo via API. It is +suitable to be deployed by other Gitea/Forgejo instances, too, +to offer static pages hosting to their users. diff --git a/www/codeberg-pages-server/pkg-plist b/www/codeberg-pages-server/pkg-plist new file mode 100644 index 0000000000..833779860d --- /dev/null +++ b/www/codeberg-pages-server/pkg-plist @@ -0,0 +1,4 @@ +bin/codeberg-pages-server +@sample etc/rc.conf.d/codeberg-pages-server.sample +@dir etc/rc.conf.d +@dir(www,www,755) /var/db/codeberg-pages-server -- 2.47.1