~sircmpwn/sr.ht-docs

ref: 442f378483185ef5c2596b54d3f7d6430ded207b sr.ht-docs/hacking.md -rw-r--r-- 2.2 KiB
442f3784Conrad Hoffmann Add database setup to "hacking" instructions 7 days ago

#title: Hacking on SourceHut toc: false

This document provides information for those interested in hacking on or contributing to SourceHut.

#Installation

Here are some tips to expedite the installation procedure:

  • A PostgreSQL database and Redis server are always required.
  • Some services require (or may optionally make use of) an S3-compatible storage backend. Minio is recommended for this purpose.
  • Generally, you can skip the webhooks daemons unless you need them.
  • Always prefer package installations for obtaining dependencies.
  • You can usually get away without configuring the outgoing mail settings, but you may still have to generate a PGP key to get things started up.
  • You can skip setting up a reverse proxy and use our development servers via python3 run.py instead.
  • Some services depend on other services. Some such integrations are optional, but all services depend on meta.sr.ht.

#Dev dependencies

In addition to the runtime dependencies of our packages, building packages from source requires additional build-time dependencies:

  • sassc for CSS pre-processing
  • npm for minifying CSS
  • go for compiling the Go APIs

#Generic instructions

Do this once, when starting with meta.sr.ht:

  • In addition to meta.sr.ht, check out core.sr.ht
  • Copy meta.sr.ht's config.example.ini to config.ini and configure everything following the instructions in the comments.

Then, for each SERVICE:

  • export SRHT_PATH=/path/to/core.sr.ht/srht
  • export PYTHONPATH=/path/to/core.sr.ht:/path/to/$SERVICE
  • make all

For each service except meta.sr.ht:

  • Copy the service's section(s) from its 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
  • ./$SRV-initdb (e.g. ./metasrht-initdb)

To run a service:

  • ./api/api
  • python run.py

#Sending Patches

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.