Requirements
Source: docs/requirements.md
hzforge runs on the HUBzero web node and configures Apache there. It must be run
as root (sudo).
Host
- Rocky / RHEL 8 with Apache httpd 2.4 (
mod_rewrite, plus the standard HUBzero vhost, which includesIncludeOptional <hub>.conf.d/*.conf— that's how hzforge's drop-ins get loaded). - Root access — hzforge installs packages, writes Apache config, and reloads/restarts httpd.
Python
- Python 3.6+ to run
hzforge.pyitself — it targets RHEL 8's stockpython3(3.6), so it uses f-strings but avoids 3.7+ APIs. - Python 2.7 for the Trac stack it manages — the HUBzero Trac plugins and, for the
mod_wsgi handler, the pip-built
Tracandmod_wsgi==4.9.4(the last Python-2-capable mod_wsgi release).
These are separate interpreters: hzforge is a Python 3 orchestration script that sets up a Python 2 Trac runtime.
Packages & repositories
- The
hubzeroyum repo — provideshubzero-trac,hubzero-trac-mysqlauthz(theHubzeroPermissionStore/hubzeroplugincomponents the Trac environments require), andsubversion-python(the Py2 SVN bindings for the Trac repo browser). - Subversion /
mod_dav_svn— fromwandisco-svn110by default (--svn-source appstreamuses the appstreamsubversion:1.10module instead). hzforge writes the wandisco repo file when it's needed. git— for thegitandgitExternalservices (git-http-backend).- A build toolchain for the pip-built mod_wsgi (
gcc,python2-devel,httpd-devel) — pulled in as needed.
Network
opensource.wandisco.com— when--svn-source wandisco(the svn default).- PyPI — for the mod_wsgi Trac handler (builds
Tracandmod_wsgi==4.9.4). - Local LDAP (
127.0.0.1) — the Trac/loginauth block binds to the hub's LDAP; credentials are auto-detected from the generatedsvn.conf.
Per-tool content
hzforge includes the per-tool svn.conf / git.conf / gitExternal.conf blocks
produced by the hub's existing MySQL-driven generator — it does not generate them. The
Trac environments live under /opt/trac/tools/<name>, paired with the matching
/opt/svn/tools/<name> repositories.