2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/data-service.git synced 2023-12-14 03:23:03 +01:00
Service to store and provide data about Guix https://git.savannah.gnu.org/cgit/guix/data-service.git
Find a file
Christopher Baines ea253c4515 Add a new script to process emails in an mbox file
This can be used with the mbox files for the guix-commits mailing list to add
older emails in to the database.
2019-09-28 23:55:11 +01:00
assets Tweak screen.css to display paragraphs and lists better 2019-09-21 12:41:52 +01:00
build-aux Add missing build-aux files 2019-04-16 22:21:07 +01:00
guix-data-service Add JSON output for the branch package versions page 2019-09-27 17:53:45 +01:00
scripts Add a new script to process emails in an mbox file 2019-09-28 23:55:11 +01:00
sqitch Add a new table to store package versions by revision ranges 2019-09-27 17:28:46 +01:00
tests Improve the package and package-metadata modules 2019-09-05 16:07:23 +02:00
.dir-locals.el Add .dir-locals.el 2019-04-14 10:08:49 +01:00
.envrc Add support for a .local.envrc file 2019-09-21 11:28:24 +01:00
.gitattributes Add a .gitattributes file 2019-04-14 10:01:58 +01:00
.gitignore Add a new script to process emails in an mbox file 2019-09-28 23:55:11 +01:00
bootstrap.sh Initial commit 2019-02-07 22:26:57 +00:00
configure.ac Add a new script to process emails in an mbox file 2019-09-28 23:55:11 +01:00
COPYING Initial commit 2019-02-07 22:26:57 +00:00
guile.am Initial commit 2019-02-07 22:26:57 +00:00
guix-dev.scm Add guix as a dependency 2019-09-21 11:29:10 +01:00
Makefile.am Add a new script to process emails in an mbox file 2019-09-28 23:55:11 +01:00
pre-inst-env.in Initial commit 2019-02-07 22:26:57 +00:00
README Add a Roadmap section to the README 2019-09-23 16:49:20 +01:00
sqitch.conf Remove localhost from the Sqitch config 2019-07-16 18:20:56 +01:00
VERSION Initial commit 2019-02-07 22:26:57 +00:00

-*- mode: org -*-

The Guix Data Service processes, stores and provides data about Guix over
time.

It's written in Guile, stores data in a PostgreSQL database, and provides a
web interface and API to browse and access the data.

* Local Development

There's no one right way of doing local development, but outlined here is a
recommended approach.

You will need to have:
 - The Guix package manager, either installed on any GNU/Linux distribution,
   or be using Guix as a system.
 - A running PostgreSQL service, version 10 or above is recommended
 - Git, so you can clone the repository
 - direnv, to manage environment variables

If you have any problems with the instructions here, you can ask for help on
the #guix IRC channel on Freenode. You can also email help-guix@gnu.org, please
include the step you got to, and the problem you encountered (with the error
message if applicable).

** Setup the database

Dumps of the database behind data.guix.gnu.org are available at
http://data.guix.gnu.org/dumps, use the following URL to download the latest
small dump.

http://data.guix.gnu.org/dumps/latest/guix_data_service_small.dump

There are multiple ways you can setup the database, the instructions here
involve creating a =guix_data_service= user with a password, then connecting
to the database over the local network interface.

To create the user and database use the scripts from PostgreSQL. The
=createuser= command will prompt for a password for the database user, you'll
need this at multiple points so it might be useful to keep it simple.

#+BEGIN_SRC shell
createuser guix_data_service --pwprompt
createdb guix_data_service --owner=guix_data_service
#+END_SRC

You may need to run these commands as the postgres user.

To restore the downloaded dump, run =pg_restore=. This command should prompt
for a password, at which point enter the password for the database user that
you set earlier.

#+BEGIN_SRC shell
pg_restore --jobs=4 --user=guix_data_service --host=127.0.0.1 --dbname=guix_data_service guix_data_service_small.dump
#+END_SRC

** Cloning the repository

To clone the Git repository, run the following command:

#+BEGIN_SRC shell
git clone https://git.savannah.gnu.org/git/guix/data-service.git guix-data-service
#+END_SRC

** Getting direnv working

direnv is used to update the environment within the shell to contain the
dependencies of the Guix Data Service. If you've just installed direnv, check
you've hooked it in to your shell https://direnv.net/docs/hook.html .

Change in to the =guix-data-service= directory. You should see direnv
prompting to trust the =.envrc= file contained within the repository.

Check the contents of the =.envrc= file, and if you trust it, run =direnv
allow=.

To setup the configuration for your local environment, create a file called
.local.envrc. To provide the password you've set for the =guix_data_service=
user, you'll need to set the =GUIX_DATA_SERVICE_DATABASE_PARAMSTRING=
environment variable in this file. Add the following line, replacing
THEPASSWORD with the password you set earlier.

#+BEGIN_SRC shell
export GUIX_DATA_SERVICE_DATABASE_PARAMSTRING="dbname=guix_data_service user=guix_data_service password=THEPASSWORD host=127.0.0.1"
#+END_SRC

After, run =direnv reload= to update the environment in your shell.

** Building the source files

The following three commands will compile the =.go= files and generate the
scripts used as entry points to the Guix Data Service.

#+BEGIN_SRC shell
./bootstrap.sh
./configure
make
#+END_SRC

** Run the web server

The =guix-data-service= script is the main entry point in to the service, run
it from the shell.

#+BEGIN_SRC shell
guix-data-service
#+END_SRC

You should now be able to access the Guix Data Service web interface through a
web browser using the URL http://localhost:8765/

To automatically restart the Guix Data Service when a change to the code is
made, you can use the rerun command:

#+BEGIN_SRC shell
rerun -d guix-data-service -p "**/*.scm" guix-data-service
#+END_SRC

** Checking the setup

You now should be ready to do local development. To double check that you can
change the code and see those changes, try chaging the "Guix Data Service"
text within the index function, in the =(guix-data-service web view html)=
module (contained in the =guix-data-service/web/view/html.scm= file). That
text appears towards the top of the index page (the page with the path =/=).

* Roadmap

Ideas for future enhancements to the Guix Data Service, in no particular
order.

** WebSub support for subscribing to branches and other changable state
** Support for viewing the history of a package on a branch
** Link to other sites (Free Software Directory, Wikidata, Debian, ...)
** Track package replacements (grafts)
** Load in derivations related to =guix pull=
** Load in the derivations for system tests within Guix
** Provide data in RDF formats (TTL, XML, ...)
** Provide statistics about Guix over time (including graphs)
** Pull in data from build servers about derivation builds
** Provide a way to compare two derivations