diff --git a/docs/.gitignore b/docs/.gitignore index f635075..e76b2db 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,3 +1,4 @@ *-stamp _build/ /swh-* +sources/ diff --git a/docs/Makefile b/docs/Makefile index 8448383..8ba2548 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,70 +1,70 @@ SPHINXOPTS ?= SPHINXBUILD = python3 -c 'import sphinx, sys; sys.exit(sphinx.main(sys.argv))' SOURCEDIR = . BUILDDIR = _build HTMLDIR = $(BUILDDIR)/html -SWHPKGDIR = `python3 -c 'import swh; print(swh.__path__[0])'` +SWHPKGDIR = sources/swh/ INSTALL_HOST = pergamon.internal.softwareheritage.org INSTALL_DIR = /srv/softwareheritage/docs/webroot/devel INSTALL_GROUP = swhdev INSTALL_PERMS = g+rwX SPHINXAPIDOC = sphinx-apidoc APIDOC_DIR = apidoc APIDOC_OPTS = --ext-viewcode APIDOC_EXCLUDES = */tests */tests/* */*/tests/* */*/*/tests/* APIDOC_EXCLUDES += */migrations */migrations/* */*/migrations/* */*/*/migrations/* APIDOC_EXCLUDES += */wsgi.py */*/wsgi.py */*/*/wsgi.py */*/*/wsgi.py APIDOC_SWH_EXCLUDES = $(patsubst %,$(SWHPKGDIR)/%,$(APIDOC_EXCLUDES)) html: sphinx/html sphinx/html: links-stamp apidoc-stamp images-stamp rec-build-stamp links-stamp: bin/ln-sphinx-subprojects touch $@ apidoc: apidoc-stamp -apidoc-stamp: images-stamp - $(SPHINXAPIDOC) $(APIDOC_OPTS) -o $(APIDOC_DIR) $(SWHPKGDIR) $(APIDOC_SWH_EXCLUDES) +apidoc-stamp: links-stamp images-stamp + $(SPHINXAPIDOC) --implicit-namespaces $(APIDOC_OPTS) -o $(APIDOC_DIR) $(SWHPKGDIR) $(APIDOC_SWH_EXCLUDES) touch $@ images-stamp: $(MAKE) -C images touch $@ # Build documentation recursively in all packages, to make sure that auxiliary, # non-sphinx managed documentation artifacts (e.g., schema diagrams) are also # built. rec-build-stamp: $(wildcard ../../swh-*/docs/*.rst) $(MAKE) -C ../../ docs-assets touch $@ clean: sphinx/clean bin/ln-sphinx-subprojects --remove $(MAKE) -C images clean rm -f *-stamp rm -f $(APIDOC_DIR)/* distclean: clean make -C ../../ docs-clean help: sphinx/help sphinx/clean: $(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) sphinx/%: $(SPHINXBUILD) -b $* "$(SOURCEDIR)" "$(BUILDDIR)/$*" $(SPHINXOPTS) install: html test -d $(HTMLDIR) rsync -rlvuz --delete $(BUILDDIR)/html/ $(INSTALL_HOST):$(INSTALL_DIR)/ ssh $(INSTALL_HOST) \ "find $(INSTALL_DIR) -not -group $(INSTALL_GROUP) -exec chgrp -v $(INSTALL_GROUP) {} + ; \ find $(INSTALL_DIR) -not -perm -ug=rw,o=r -exec chmod -v ug+rw,o+r {} + ; \ find $(INSTALL_DIR) -type d -not -perm -g=xs,ou=x -exec chmod -v g+xs,ou+x {} +" .PHONY: help html clean distclean install diff --git a/docs/bin/ln-sphinx-subprojects b/docs/bin/ln-sphinx-subprojects index 91d806f..2ab0c1c 100755 --- a/docs/bin/ln-sphinx-subprojects +++ b/docs/bin/ln-sphinx-subprojects @@ -1,30 +1,35 @@ #!/bin/bash set -e create_links () { + mkdir -p sources/swh/ for pymodule in $(cd ../../ && bin/ls-py-modules) ; do if [ "$pymodule" = 'swh-docs' ] ; then continue fi if [ ! -e "$pymodule" -a -d "../../${pymodule}/docs" ] ; then ln -s "../../${pymodule}/docs" "$pymodule" fi + if [ -d "../../${pymodule}/swh" ] ; then + cp -fr --link "../../${pymodule}/swh/" "sources/" + fi done } remove_links () { for pymodule in $(cd ../../ && bin/ls-py-modules) ; do if [ "$pymodule" = 'swh-docs' ] ; then continue fi if [ -L "$pymodule" ] ; then rm "$pymodule" fi done + rm -rf sources } if [ "$1" = "--remove" ] ; then remove_links else create_links fi