This document provides information for those interested in hacking on or contributing to SourceHut.
Here are some tips to expedite the installation procedure:
python3 run.py
instead.In addition to the runtime dependencies of our packages, building packages from source requires additional build-time dependencies:
sassc
for CSS pre-processingminify
for minifying CSSgo
for compiling the Go APIsmake
for makingAll services rely on shared assets that are kept in core.sr.ht. They need to be installed once (and potentially updated when they change):
--recurse-submodules
.make PREFIX=~/.local install
to install the shared assets.Do this once, when starting with meta.sr.ht:
config.example.ini
to config.ini
and configure
everything following the instructions in the comments.When filling in the config.ini
file, remember the following:
srht-keygen
—
these can be found in the core.sr.ht repository.?sslmode=disable
to the end of your Postgres URL.Then, for each SERVICE
(e.g. meta.sr.ht
):
make PREFIX=~/.local all
(PREFIX
must match the one used during shared
assets installation)export PYTHONPATH=/path/to/core.sr.ht:/path/to/$SERVICE
To avoid conflicts with the email
package, you should be careful what you run
while $PYTHONPATH
is set like this.
Note that core.sr.ht is not a service, but merely a repository of code shared between services.
For each service except meta.sr.ht:
config.example.ini
into meta.sr.ht's
config.ini
, modifying it according to the comments.ln -s /path/to/meta.sr.ht/config.ini config.ini
For each SERVICE
:
createdb $SERVICE
(e.g. createdb meta.sr.ht
)psql -d $SERVICE -f schema.sql
(e.g. psql -d meta.sr.ht -f schema.sql
)To run a service:
./$SERVICE-api
(e.g. ./meta.sr.ht-api
, must be run first)python3 run.py
We use git send-email and discuss patches (and other development topics) on the sr.ht-dev list. Please send your patches and development questions there.
commit 66d4f9c91f0c5472f85e2bd590f7a9c999df4132 Author: Drew DeVault <drew@ddevault.org> Date: 2025-04-22T10:08:38+02:00 git tutorial: add note about init.defaultBranch