Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 02 Jun 2026 11:50:23 +0000
From:      Dan Langille <dvl@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 39a18f0792af - main - devel/viewvc: resurrect old port to 1.3.0
Message-ID:  <6a1ec37f.1e071.7ca24362@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by dvl:

URL: https://cgit.FreeBSD.org/ports/commit/?id=39a18f0792af8d242d7bd0fedaf24dd516ea3b27

commit 39a18f0792af8d242d7bd0fedaf24dd516ea3b27
Author:     Dan Langille <dvl@FreeBSD.org>
AuthorDate: 2026-06-02 11:46:11 +0000
Commit:     Dan Langille <dvl@FreeBSD.org>
CommitDate: 2026-06-02 11:50:03 +0000

    devel/viewvc: resurrect old port to 1.3.0
    
    This port was removed because it needed Python 2.7
    This release works with Python >= 3.10
    
    re: https://github.com/viewvc/viewvc/releases/tag/1.3.0
    PR:             295729
---
 devel/Makefile                    |   1 +
 devel/viewvc/Makefile             |  79 ++++++++++++++++++
 devel/viewvc/distinfo             |   3 +
 devel/viewvc/files/pkg-message.in |  84 +++++++++++++++++++
 devel/viewvc/files/viewvc.in      |  68 ++++++++++++++++
 devel/viewvc/pkg-descr            |   6 ++
 devel/viewvc/pkg-plist            | 167 ++++++++++++++++++++++++++++++++++++++
 7 files changed, 408 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index d0f42c284e61..c761a9797658 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -8745,6 +8745,7 @@
     SUBDIR += venom
     SUBDIR += vera++
     SUBDIR += vexcl
+    SUBDIR += viewvc
     SUBDIR += viewvc-devel
     SUBDIR += violet
     SUBDIR += vipack
diff --git a/devel/viewvc/Makefile b/devel/viewvc/Makefile
new file mode 100644
index 000000000000..ebaab5cd5bb2
--- /dev/null
+++ b/devel/viewvc/Makefile
@@ -0,0 +1,79 @@
+PORTNAME=	viewvc
+DISTVERSION=	1.3.0
+CATEGORIES=	devel python
+MASTER_SITES=	https://www.viewvc.org/downloads/
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	dvl@FreeBSD.org
+COMMENT=	Web-based Version Control Repository Browsing
+WWW=		https://www.viewvc.org/
+
+LICENSE=	BSD2CLAUSE
+
+USES=		cpe python
+USE_PYTHON=	flavors
+USE_RC_SUBR=	viewvc
+
+NO_BUILD=		yes
+NO_OPTIONS_SORT=	yes
+OPTIONS_DEFINE=		APMOD HTPASSWD SUBVERSION WEBSRV
+OPTIONS_DEFAULT=	APACHE SUBVERSION WEBSRV
+
+OPTIONS_SINGLE=		APMOD WEBSRV
+OPTIONS_SINGLE_WEBSRV=	APACHE LIGHTTPD
+OPTIONS_SINGLE_APMOD=	MODWSGI
+
+WEBSRV_DESC=	Enable web server support
+APMOD_DESC=	depend on Apache module
+
+HTPASSWD_DESC=	Use htpasswd feature on standalone server
+MODWSGI_DESC=	Add mod_wsgi to the list of package dependencies
+APACHE_USES=	apache:run
+
+HTPASSWD_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}passlib>=1.7.0:security/py-passlib@${PY_FLAVOR}
+LIGHTTPD_RUN_DEPENDS=	lighttpd:www/lighttpd
+MODWSGI_RUN_DEPENDS=	${APACHE_PKGNAMEPREFIX}${PYTHON_PKGNAMEPREFIX}mod_wsgi>=4.4.13:www/mod_wsgi@${PY_FLAVOR}
+
+.if ${WITH_SUBVERSION_VER:U} == LTS
+SUBVERSION_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}subversion-lts>=0:devel/py-subversion@${PY_FLAVOR}
+.else
+SUBVERSION_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}subversion>=0:devel/py-subversion@${PY_FLAVOR}
+.endif
+
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}pygments>=1.1:textproc/py-pygments@${PY_FLAVOR}
+
+CONFLICTS_INSTALL=	viewvc-devel-1.[1-4].[0-9]*
+
+.include <bsd.port.options.mk>
+
+SUB_FILES=	pkg-message
+SUB_LIST=	CHOWN=${CHOWN} \
+		ECHO=${ECHO} \
+		EGREP=${EGREP} \
+		PYTHON_CMD=${PYTHON_CMD} \
+		RM=${RM:Q} \
+		TOUCH=${TOUCH}
+
+pre-everything::
+.if ${PORT_OPTIONS:MAPMOD} && !${PORT_OPTIONS:MAPACHE}
+IGNORE=		apache module needs Apache server, please re-run 'make config' then choose WEBSRV and APACHE
+.endif
+
+post-patch:
+.for i in cvsgraph.conf mimetypes.conf viewvc.conf
+	${MV} ${WRKSRC}/conf/${i}.dist ${WRKSRC}/conf/${i}.sample
+	${REINPLACE_CMD} -e '/"${i}"/d' ${WRKSRC}/viewvc-install
+.endfor
+	${REINPLACE_CMD} -e 's/conf.dist/conf.sample/g' \
+		${WRKSRC}/viewvc-install \
+		${WRKSRC}/bin/standalone.py
+# too many files, use own shebangfix
+	${FIND} ${WRKSRC} -type f | ${GREP} -v -e 'png' -e 'images' \
+		| ${XARGS} ${SED} -i '' \
+		-e '1s|^\#![[:space:]]*/usr/bin/env python|\#!${PYTHON_CMD}|' \
+		-e '1s|^\#![[:space:]]*/usr/bin/python|\#!${PYTHON_CMD}|'
+
+do-install:
+	@(cd ${WRKSRC} && ${PYTHON_CMD} viewvc-install --prefix=${PREFIX}/${PORTNAME} --destdir="${STAGEDIR}" --clean-mode=false)
+
+.include <bsd.port.mk>
diff --git a/devel/viewvc/distinfo b/devel/viewvc/distinfo
new file mode 100644
index 000000000000..55700b420b77
--- /dev/null
+++ b/devel/viewvc/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1780159273
+SHA256 (viewvc-1.3.0.tar.gz) = c2982b0ae822e210ca083f9738ea8e2e52fdc1fa1665baa2a10c06e874c5b68f
+SIZE (viewvc-1.3.0.tar.gz) = 305974
diff --git a/devel/viewvc/files/pkg-message.in b/devel/viewvc/files/pkg-message.in
new file mode 100644
index 000000000000..857214c5a932
--- /dev/null
+++ b/devel/viewvc/files/pkg-message.in
@@ -0,0 +1,84 @@
+[
+{ type: install
+  message: <<EOM
+ To use ViewVC, modify the configuration file located at
+ %%PREFIX%%/viewvc/viewvc.conf.
+
+ If no webserver was selected during installation, then
+ a rc script for running ViewVC standalone is installed.
+ To enable the standalone ViewVC server in rc.conf use
+ parameter viewvc_enable="YES".
+
+ You can also adjust the user which runs the ViewVC standalone
+ server with the parameter "viewvc_user".
+
+ If you want to run the ViewVC standalone server with another
+ IP/PORT, use the parameter "viewvc_flags".
+
+ To see all available parameters, use the command
+ %%PREFIX%%/viewvc/bin/standalone.py --help
+
+
+ To use ViewVC with Apache or lighttpd as a CGI script,
+ see the following config examples.
+
+ Example config lines for Apache 2.4
+ ===================================
+ <IfModule wsgi_module>
+   WSGIRestrictSignal Off
+ </IfModule>
+
+ <IfModule !wsgi_module>
+   ScriptAlias "/viewvc" "%%PREFIX%%/viewvc/bin/cgi/viewvc.cgi"
+ </IfModule>
+
+ <IfModule wsgi_module>
+   WSGIScriptAlias "/viewvc" "%%PREFIX%%/viewvc/bin/wsgi/viewvc.wsgi"
+ </IfModule>
+
+ <Location /viewvc>
+     Options NONE +ExecCGI
+ </Location>
+
+ Example config lines for lighttpd
+ =================================
+ server.modules = (
+   "mod_alias",
+   "mod_access"
+ )
+
+ alias.url += ( "/viewvc" => "%%PREFIX%%/viewvc/bin/cgi" )
+
+ $HTTP["url"] =~ "^/viewvc/" {
+   index-file.names  = ( "viewvc.cgi" )
+     cgi.assign = (
+       ".cgi" => "%%PYTHON_CMD%%",
+     )
+ }
+
+ Note: Cvsdb (Bonsai-like repository query) feature is not stable and
+       have some incompatibility on DB data with any released version,
+       (and it may be also incompatible with any feature release). 
+EOM
+}
+{
+  type: upgrade
+  maximum_version: "1.3.0"
+  message: <<EOM
+  Please review your vievc.conf, see viewvc.sample.conf
+  ======================================================
+   - the template path has changed
+   - the vhost notation has changed
+
+  Additional upgrade informations:
+  https://github.com/viewvc/viewvc/blob/master/docs/upgrading-howto.html
+
+  Note: Cvsdb (Bonsai-like repository query) feature is not stable and
+        have some incompatibility on DB data with any released version,
+        (and it may be also incompatible with any feature release). 
+        So if you want to use this feature, make sure to make back up
+        of existing DB and then rebuild your DB data with
+        cvsdbadmin/svndbadmin.
+EOM
+}
+]
diff --git a/devel/viewvc/files/viewvc.in b/devel/viewvc/files/viewvc.in
new file mode 100644
index 000000000000..d18706320861
--- /dev/null
+++ b/devel/viewvc/files/viewvc.in
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+# PROVIDE: viewvc
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following line(s) to /etc/rc.conf to enable ViewVC:
+#
+#  viewvc_enable="YES"
+#  # optional
+#  viewvc_flags="-h localhost -p PORT"
+#  viewvc_user="www"
+#
+# To get available parameters and the default values, use the
+# command %%PREFIX%%/viewvc/bin/standalone.py --help
+# for more info.
+#
+# Note:
+# If you choose a listen port less then 1024 then you have
+# to use a privileged user.
+# If the user www cannot access your cvs/svn repository,
+# adjust the parameter viewvc_user and it should work.
+#
+# INFO:
+# ViewVC default tcp port: 49152
+# see http://viewvc.tigris.org/issues/show_bug.cgi?id=234
+
+. /etc/rc.subr
+
+name=viewvc
+rcvar=viewvc_enable
+load_rc_config $name
+
+# Set defaults
+viewvc_enable=${viewvc_enable:-"NO"}
+viewvc_flags=${viewvc_flags:-"-p 49152"}
+viewvc_user=${viewvc_user:-"www"}
+
+pidfile=/var/run/viewvc.pid
+command=%%PYTHON_CMD%%
+standalone=%%PREFIX%%/viewvc/bin/standalone.py
+
+start_precmd=viewvc_precmd
+start_cmd=viewvc_start
+stop_postcmd=viewvc_cleanup
+
+viewvc_precmd()
+{
+    # with param -d we get another pid so prevent this
+    %%ECHO%% "${viewvc_flags}" | %%EGREP%% -q "(^\-d| \-d)" 2>&1 > /dev/null
+    if [ $? -eq 0 ]; then
+        %%ECHO%% "Please remove parameter -d from viewvc_flags"
+        %%ECHO%%
+        return 1
+    fi
+}
+
+viewvc_start() {
+    echo "Starting viewvc."
+    %%TOUCH%% ${pidfile} && %%CHOWN%% ${viewvc_user} ${pidfile}
+    /usr/sbin/daemon -cf -p ${pidfile} -u ${viewvc_user} ${standalone} ${viewvc_flags}
+}
+
+viewvc_cleanup() {
+    [ -f ${pidfile} ] && %%RM%% ${pidfile}
+}
+
+run_rc_command "$1"
diff --git a/devel/viewvc/pkg-descr b/devel/viewvc/pkg-descr
new file mode 100644
index 000000000000..95b0df42368d
--- /dev/null
+++ b/devel/viewvc/pkg-descr
@@ -0,0 +1,6 @@
+ViewVC is a browser interface for CVS and Subversion version control
+repositories. It generates templatized HTML to present navigable directory,
+revision, and change log listings. It can display specific versions of files as
+well as diffs between those versions. Basically, ViewVC provides the bulk of the
+report-like functionality you expect out of your version control tool, but much
+more prettily than the average textual command-line program output.
diff --git a/devel/viewvc/pkg-plist b/devel/viewvc/pkg-plist
new file mode 100644
index 000000000000..5ad06e5c1bdf
--- /dev/null
+++ b/devel/viewvc/pkg-plist
@@ -0,0 +1,167 @@
+viewvc/bin/cgi/viewvc.cgi
+viewvc/bin/db/cvsdbadmin
+viewvc/bin/db/loginfo-handler
+viewvc/bin/db/make-database
+viewvc/bin/db/schema_0.sql
+viewvc/bin/db/schema_1.sql
+viewvc/bin/db/schema_2.sql
+viewvc/bin/db/svndbadmin
+viewvc/bin/standalone.py
+viewvc/bin/cgi/iis/viewvc.cgi
+viewvc/bin/wsgi/viewvc.fcgi
+viewvc/bin/wsgi/viewvc.wsgi
+@sample viewvc/cvsgraph.conf.sample
+viewvc/lib/__pycache__/accept%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/common%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/config%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/cvsdb%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/dbi%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/ezt%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/idiff%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/popen%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/sapi%%PYTHON_TAG%%.pyc
+viewvc/lib/__pycache__/viewvc%%PYTHON_TAG%%.pyc
+viewvc/lib/accept.py
+viewvc/lib/common.py
+viewvc/lib/config.py
+viewvc/lib/cvsdb.py
+viewvc/lib/dbi.py
+viewvc/lib/ezt.py
+viewvc/lib/idiff.py
+viewvc/lib/popen.py
+viewvc/lib/sapi.py
+viewvc/lib/vcauth/__init__.py
+viewvc/lib/vcauth/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vcauth/forbidden/__init__.py
+viewvc/lib/vcauth/forbidden/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vcauth/forbiddenre/__init__.py
+viewvc/lib/vcauth/forbiddenre/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vcauth/svnauthz/__init__.py
+viewvc/lib/vcauth/svnauthz/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/__init__.py
+viewvc/lib/vclib/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/__init__.py
+viewvc/lib/vclib/ccvs/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/__pycache__/bincvs%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/__pycache__/blame%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/__pycache__/ccvs%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/bincvs.py
+viewvc/lib/vclib/ccvs/blame.py
+viewvc/lib/vclib/ccvs/ccvs.py
+viewvc/lib/vclib/ccvs/rcsparse/__init__.py
+viewvc/lib/vclib/ccvs/rcsparse/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/rcsparse/__pycache__/common%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/rcsparse/__pycache__/debug%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/rcsparse/__pycache__/default%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/rcsparse/__pycache__/parse_rcs_file%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/rcsparse/__pycache__/run-tests%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/ccvs/rcsparse/common.py
+viewvc/lib/vclib/ccvs/rcsparse/debug.py
+viewvc/lib/vclib/ccvs/rcsparse/default.py
+viewvc/lib/vclib/ccvs/rcsparse/parse_rcs_file.py
+viewvc/lib/vclib/ccvs/rcsparse/run-tests.py
+viewvc/lib/vclib/ccvs/rcsparse/test-data/default,v
+viewvc/lib/vclib/ccvs/rcsparse/test-data/default.out
+viewvc/lib/vclib/ccvs/rcsparse/test-data/empty-file,v
+viewvc/lib/vclib/ccvs/rcsparse/test-data/empty-file.out
+viewvc/lib/vclib/svn/__init__.py
+viewvc/lib/vclib/svn/__pycache__/__init__%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/svn/__pycache__/svn_ra%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/svn/__pycache__/svn_repos%%PYTHON_TAG%%.pyc
+viewvc/lib/vclib/svn/svn_ra.py
+viewvc/lib/vclib/svn/svn_repos.py
+viewvc/lib/viewvc.py
+@sample viewvc/mimetypes.conf.sample
+viewvc/templates/classic/_diff_display.ezt
+viewvc/templates/classic/_diff_form.ezt
+viewvc/templates/classic/_dir_footer.ezt
+viewvc/templates/classic/_dir_header.ezt
+viewvc/templates/classic/_file_header.ezt
+viewvc/templates/classic/_footer.ezt
+viewvc/templates/classic/_header.ezt
+viewvc/templates/classic/_log_footer.ezt
+viewvc/templates/classic/_log_header.ezt
+viewvc/templates/classic/_paging.ezt
+viewvc/templates/classic/_pathrev_form.ezt
+viewvc/templates/classic/_props.ezt
+viewvc/templates/classic/_sort.ezt
+viewvc/templates/classic/diff.ezt
+viewvc/templates/classic/dir_new.ezt
+viewvc/templates/classic/directory.ezt
+viewvc/templates/classic/docroot/help.css
+viewvc/templates/classic/docroot/help_dirview.html
+viewvc/templates/classic/docroot/help_log.html
+viewvc/templates/classic/docroot/help_rootview.html
+viewvc/templates/classic/docroot/images/annotate.png
+viewvc/templates/classic/docroot/images/back.png
+viewvc/templates/classic/docroot/images/back_small.png
+viewvc/templates/classic/docroot/images/binary.png
+viewvc/templates/classic/docroot/images/broken.png
+viewvc/templates/classic/docroot/images/chalk.jpg
+viewvc/templates/classic/docroot/images/cvsgraph_16x16.png
+viewvc/templates/classic/docroot/images/cvsgraph_32x32.png
+viewvc/templates/classic/docroot/images/diff.png
+viewvc/templates/classic/docroot/images/dir.png
+viewvc/templates/classic/docroot/images/down.png
+viewvc/templates/classic/docroot/images/download.png
+viewvc/templates/classic/docroot/images/favicon.ico
+viewvc/templates/classic/docroot/images/feed-icon-16x16.jpg
+viewvc/templates/classic/docroot/images/forward.png
+viewvc/templates/classic/docroot/images/image.png
+viewvc/templates/classic/docroot/images/list.png
+viewvc/templates/classic/docroot/images/lock.png
+viewvc/templates/classic/docroot/images/log.png
+viewvc/templates/classic/docroot/images/text.png
+viewvc/templates/classic/docroot/images/up.png
+viewvc/templates/classic/docroot/images/view.png
+viewvc/templates/classic/docroot/images/viewvc-logo.png
+viewvc/templates/classic/docroot/styles.css
+viewvc/templates/classic/error.ezt
+viewvc/templates/classic/file.ezt
+viewvc/templates/classic/graph.ezt
+viewvc/templates/classic/log.ezt
+viewvc/templates/classic/log_table.ezt
+viewvc/templates/classic/query_form.ezt
+viewvc/templates/classic/query_results.ezt
+viewvc/templates/classic/revision.ezt
+viewvc/templates/classic/roots.ezt
+viewvc/templates/classic/rss.ezt
+viewvc/templates/default/_diff_display.ezt
+viewvc/templates/default/_diff_form.ezt
+viewvc/templates/default/_footer.ezt
+viewvc/templates/default/_header.ezt
+viewvc/templates/default/_pathrev_form.ezt
+viewvc/templates/default/_props.ezt
+viewvc/templates/default/diff.ezt
+viewvc/templates/default/directory.ezt
+viewvc/templates/default/docroot/help.css
+viewvc/templates/default/docroot/help_dirview.html
+viewvc/templates/default/docroot/help_log.html
+viewvc/templates/default/docroot/help_rootview.html
+viewvc/templates/default/docroot/images/back.png
+viewvc/templates/default/docroot/images/back_small.png
+viewvc/templates/default/docroot/images/binary.png
+viewvc/templates/default/docroot/images/broken.png
+viewvc/templates/default/docroot/images/cvs-logo.png
+viewvc/templates/default/docroot/images/dir.png
+viewvc/templates/default/docroot/images/down.png
+viewvc/templates/default/docroot/images/feed-icon-16x16.jpg
+viewvc/templates/default/docroot/images/forward.png
+viewvc/templates/default/docroot/images/image.png
+viewvc/templates/default/docroot/images/lock-icon.gif
+viewvc/templates/default/docroot/images/svn-logo.png
+viewvc/templates/default/docroot/images/text.png
+viewvc/templates/default/docroot/images/up.png
+viewvc/templates/default/docroot/images/viewvc-logo.png
+viewvc/templates/default/docroot/scripts.js
+viewvc/templates/default/docroot/styles.css
+viewvc/templates/default/error.ezt
+viewvc/templates/default/file.ezt
+viewvc/templates/default/graph.ezt
+viewvc/templates/default/log.ezt
+viewvc/templates/default/query_form.ezt
+viewvc/templates/default/query_results.ezt
+viewvc/templates/default/revision.ezt
+viewvc/templates/default/roots.ezt
+viewvc/templates/default/rss.ezt
+@sample viewvc/viewvc.conf.sample


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a1ec37f.1e071.7ca24362>