2017-10-13 20:39:17 +00:00
|
|
|
# Makefile for French Python Documentation
|
|
|
|
#
|
|
|
|
# Here is what you can do:
|
|
|
|
#
|
|
|
|
# - make # Automatically build an html local version
|
|
|
|
# - make todo # To list remaining tasks
|
2019-12-10 10:52:16 +00:00
|
|
|
# - make verifs # To check for correctness: wrapping, spelling
|
|
|
|
# - make wrap # To check for wrapping
|
|
|
|
# - make spell # To check for spelling
|
2017-10-13 20:39:17 +00:00
|
|
|
# - make merge # To merge pot from upstream
|
|
|
|
# - make fuzzy # To find fuzzy strings
|
|
|
|
# - make progress # To compute current progression
|
|
|
|
#
|
|
|
|
# Modes are: autobuild-stable, autobuild-dev, and autobuild-html,
|
|
|
|
# documented in gen/src/3.6/Doc/Makefile as we're only delegating the
|
|
|
|
# real work to the Python Doc Makefile.
|
|
|
|
|
2019-12-10 10:52:16 +00:00
|
|
|
# Configuration
|
|
|
|
|
|
|
|
# The CPYTHON_CURRENT_COMMIT is the commit, in the cpython repository,
|
|
|
|
# from which we generated our po files. We use it here so when we
|
|
|
|
# test build, we're building with the .rst files that generated our
|
|
|
|
# .po files.
|
|
|
|
CPYTHON_CURRENT_COMMIT := e21aa61e96f8343200e765d119ebe778873a6bf1
|
|
|
|
|
|
|
|
CPYTHON_PATH := $(realpath ../cpython/)
|
|
|
|
|
2017-10-13 20:39:17 +00:00
|
|
|
LANGUAGE := fr
|
2019-12-10 10:52:16 +00:00
|
|
|
BRANCH := 3.8
|
|
|
|
|
|
|
|
|
|
|
|
# Internal variables
|
|
|
|
|
|
|
|
UPSTREAM := https://github.com/python/cpython
|
2019-12-05 22:58:07 +00:00
|
|
|
VENV := $(shell pwd)/venv/
|
2017-10-13 20:39:17 +00:00
|
|
|
PYTHON := $(shell which python3)
|
2018-11-14 20:47:36 +00:00
|
|
|
MODE := html
|
2019-12-10 12:57:17 +00:00
|
|
|
POSPELL_TMP_DIR := .pospell/
|
2019-12-10 10:52:16 +00:00
|
|
|
WORKTREES := $(VENV)/worktrees/
|
|
|
|
WORKTREE := $(WORKTREES)/$(CPYTHON_CURRENT_COMMIT)/
|
|
|
|
JOBS := auto
|
2017-10-13 20:39:17 +00:00
|
|
|
|
|
|
|
.PHONY: all
|
2019-12-10 10:52:16 +00:00
|
|
|
all: setup
|
|
|
|
mkdir -p $(WORKTREE)/locales/$(LANGUAGE)/LC_MESSAGES/
|
|
|
|
cp --parents *.po */*.po $(WORKTREE)/locales/$(LANGUAGE)/LC_MESSAGES/
|
|
|
|
$(MAKE) -C $(WORKTREE)/Doc/ VENVDIR=$(WORKTREE)/Doc/venv/ PYTHON=$(PYTHON) \
|
|
|
|
SPHINXOPTS='-qW -j$(JOBS) \
|
|
|
|
-D locale_dirs=../locales \
|
|
|
|
-D language=$(LANGUAGE) \
|
|
|
|
-D gettext_compact=0 \
|
|
|
|
-D latex_engine=xelatex \
|
|
|
|
-D latex_elements.inputenc= \
|
|
|
|
-D latex_elements.fontenc=' \
|
|
|
|
$(MODE) && echo "Build success, open file://$(WORKTREE)/Doc/build/html/index.html or run 'make serve' to see them."
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: setup
|
|
|
|
setup: venv
|
|
|
|
# Setup the main clone
|
|
|
|
if ! [ -d $(CPYTHON_PATH) ]; then \
|
|
|
|
git clone --depth 16 --branch $(BRANCH) $(UPSTREAM) $(CPYTHON_PATH); \
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Setup the current worktree
|
|
|
|
if ! [ -d $(WORKTREE) ]; then \
|
|
|
|
rm -fr $(WORKTREES); \
|
|
|
|
git -C $(CPYTHON_PATH) worktree prune; \
|
|
|
|
mkdir -p $(WORKTREES); \
|
|
|
|
if [ -n "$(CPYTHON_CURRENT_COMMIT)" ]; \
|
|
|
|
then \
|
|
|
|
depth=32; \
|
|
|
|
while ! git -C $(CPYTHON_PATH) rev-parse $(CPYTHON_CURRENT_COMMIT); \
|
|
|
|
do \
|
|
|
|
depth=$$((depth * 2)); \
|
|
|
|
git -C $(CPYTHON_PATH) fetch --depth $$depth $(UPSTREAM); \
|
|
|
|
done \
|
|
|
|
else \
|
|
|
|
git -C $(CPYTHON_PATH) fetch --depth 1 $(UPSTREAM); \
|
|
|
|
fi; \
|
|
|
|
git -C $(CPYTHON_PATH) worktree add $(WORKTREE)/ $(CPYTHON_CURRENT_COMMIT); \
|
|
|
|
$(MAKE) -C $(WORKTREE)/Doc/ VENVDIR=$(WORKTREE)/Doc/venv/ PYTHON=$(PYTHON) venv; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: venv
|
|
|
|
venv:
|
|
|
|
if [ ! -d $(VENV) ]; then $(PYTHON) -m venv --prompt python-docs-fr $(VENV); fi
|
|
|
|
$(VENV)/bin/pip install -q -U -r requirements.txt
|
2019-11-15 14:09:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
.PHONY: serve
|
|
|
|
serve:
|
2019-12-10 10:52:16 +00:00
|
|
|
$(MAKE) -C $(WORKTREE)/Doc/ serve
|
2018-08-01 12:57:26 +00:00
|
|
|
|
|
|
|
|
2017-10-13 20:39:17 +00:00
|
|
|
.PHONY: progress
|
|
|
|
progress:
|
|
|
|
@python3 -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \
|
2017-10-26 15:34:21 +00:00
|
|
|
$(shell msgcat *.po */*.po | msgattrib --translated | grep -c '^msgid') \
|
|
|
|
$(shell msgcat *.po */*.po | grep -c '^msgid')
|
2017-10-13 20:39:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
.PHONY: todo
|
2019-12-10 10:52:16 +00:00
|
|
|
todo: venv
|
2019-04-11 22:21:53 +00:00
|
|
|
$(VENV)/bin/potodo
|
2017-10-13 20:39:17 +00:00
|
|
|
|
2019-12-04 21:08:12 +00:00
|
|
|
.PHONY: wrap
|
2019-12-10 10:52:16 +00:00
|
|
|
wrap: venv
|
2019-11-02 09:26:49 +00:00
|
|
|
$(VENV)/bin/powrap --check --quiet *.po **/*.po
|
2019-03-30 08:30:23 +00:00
|
|
|
|
2019-12-10 12:57:17 +00:00
|
|
|
SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$')
|
|
|
|
# foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out
|
|
|
|
DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS)))
|
|
|
|
|
2019-12-04 21:08:12 +00:00
|
|
|
.PHONY: spell
|
2019-12-10 12:57:17 +00:00
|
|
|
spell: venv $(DESTS)
|
|
|
|
|
|
|
|
$(POSPELL_TMP_DIR)/%.po.out: %.po dict
|
|
|
|
@echo "Checking $<..."
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
@$(VENV)/bin/pospell -p dict -l fr_FR $< && touch $@
|
2019-03-30 08:30:23 +00:00
|
|
|
|
2019-12-10 10:52:16 +00:00
|
|
|
.PHONY: fuzzy
|
|
|
|
fuzzy: venv
|
|
|
|
$(VENV)/bin/potodo -f
|
|
|
|
|
|
|
|
.PHONY: verifs
|
|
|
|
verifs: wrap spell
|
|
|
|
|
2017-10-13 20:39:17 +00:00
|
|
|
.PHONY: merge
|
2019-12-10 10:52:16 +00:00
|
|
|
merge: setup
|
|
|
|
git -C $(CPYTHON_PATH) fetch $(UPSTREAM)
|
|
|
|
rm -fr $(WORKTREES)/$(BRANCH)
|
|
|
|
git -C $(CPYTHON_PATH) worktree prune
|
|
|
|
git -C $(CPYTHON_PATH) worktree add $(WORKTREES)/$(BRANCH) $(word 1,$(shell git -C $(CPYTHON_PATH) remote -v | grep python/cpython))/$(BRANCH)
|
|
|
|
$(MAKE) -C $(WORKTREES)/$(BRANCH)/Doc/ VENVDIR=$(WORKTREES)/$(BRANCH)/Doc/venv/ PYTHON=$(PYTHON) venv;
|
|
|
|
(cd $(WORKTREES)/$(BRANCH); $(WORKTREES)/$(BRANCH)/Doc/venv/bin/sphinx-build -Q -b gettext -D gettext_compact=0 Doc pot/)
|
|
|
|
find $(WORKTREES)/$(BRANCH) -name '*.pot' |\
|
2017-10-13 20:39:17 +00:00
|
|
|
while read -r POT;\
|
|
|
|
do\
|
2019-12-10 10:52:16 +00:00
|
|
|
PO="./$$(echo "$$POT" | sed "s#$(WORKTREES)/$(BRANCH)/pot/##; s#\.pot\$$#.po#")";\
|
2017-10-13 20:39:17 +00:00
|
|
|
mkdir -p "$$(dirname "$$PO")";\
|
|
|
|
if [ -f "$$PO" ];\
|
|
|
|
then\
|
2018-05-01 22:09:15 +00:00
|
|
|
case "$$POT" in\
|
|
|
|
*whatsnew*) msgmerge --backup=off --force-po --no-fuzzy-matching -U "$$PO" "$$POT" ;;\
|
|
|
|
*) msgmerge --backup=off --force-po -U "$$PO" "$$POT" ;;\
|
|
|
|
esac\
|
2017-10-13 20:39:17 +00:00
|
|
|
else\
|
|
|
|
msgcat -o "$$PO" "$$POT";\
|
|
|
|
fi\
|
|
|
|
done
|
2019-12-10 10:52:16 +00:00
|
|
|
sed -i 's/^CPYTHON_CURRENT_COMMIT :=.*/CPYTHON_CURRENT_COMMIT := $(shell git -C $(WORKTREES)/$(BRANCH) rev-parse HEAD)/' Makefile
|
|
|
|
rm -fr $(WORKTREES)/$(BRANCH)
|
|
|
|
git -C $(CPYTHON_PATH) worktree prune
|
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
2019-12-10 12:57:17 +00:00
|
|
|
rm -fr venv $(POSPELL_TMP_DIR)
|
2019-12-10 10:52:16 +00:00
|
|
|
find -name '*.mo' -delete
|