Trying to simplify the Makefile (#1499)
* Simplify Makefile * Enfin bon il sera bien sur PyPI soon™, laissons le. * Garde fou. * Useless, as rm -fr without argument removes nothing. * Don't remove locales/. * Newline at end of file * I don't get what's happening here. * Still don't get it. * I was not sure it was mandatory, now I am. * Ohh my debug was not debugging. * WTF * Ok, it's a Python upgrade... * Update .github/workflows/tests.yml * Update Makefile * Update .github/workflows/tests.yml * Update Makefile * No longer needed.
This commit is contained in:
parent
835e083e65
commit
5a4372b895
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -5,3 +5,4 @@ venv/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.pospell/
|
.pospell/
|
||||||
.potodo/
|
.potodo/
|
||||||
|
locales/
|
||||||
|
|
167
Makefile
167
Makefile
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# Here is what you can do:
|
# Here is what you can do:
|
||||||
#
|
#
|
||||||
# - make # Automatically build an html local version
|
# - make # Automatically build an HTML local version
|
||||||
# - make todo # To list remaining tasks
|
# - make todo # To list remaining tasks
|
||||||
# - make verifs # To check for correctness: wrapping, spelling
|
# - make verifs # To check for correctness: wrapping, spelling
|
||||||
# - make wrap # To check for wrapping
|
# - make wrap # To check for wrapping
|
||||||
|
@ -33,12 +33,10 @@ EXCLUDED := whatsnew/ c-api/
|
||||||
# Internal variables
|
# Internal variables
|
||||||
|
|
||||||
UPSTREAM := https://github.com/python/cpython
|
UPSTREAM := https://github.com/python/cpython
|
||||||
VENV := $(shell pwd)/venv/
|
|
||||||
PYTHON := $(shell which python3)
|
PYTHON := $(shell which python3)
|
||||||
MODE := html
|
MODE := html
|
||||||
POSPELL_TMP_DIR := .pospell/
|
POSPELL_TMP_DIR := .pospell/
|
||||||
WORKTREES := $(VENV)/worktrees/
|
|
||||||
WORKTREE := $(WORKTREES)/$(CPYTHON_CURRENT_COMMIT)/
|
|
||||||
JOBS := auto
|
JOBS := auto
|
||||||
|
|
||||||
# Detect OS
|
# Detect OS
|
||||||
|
@ -59,132 +57,117 @@ else
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: setup
|
all: ensure_prerequisites
|
||||||
mkdir -p $(WORKTREE)/locales/$(LANGUAGE)/LC_MESSAGES/
|
git -C $(CPYTHON_PATH) checkout $(CPYTHON_CURRENT_COMMIT)
|
||||||
$(CP_CMD) -uv --parents *.po */*.po $(WORKTREE)/locales/$(LANGUAGE)/LC_MESSAGES/ | cut -d"'" -f2
|
mkdir -p locales/$(LANGUAGE)/LC_MESSAGES/
|
||||||
$(MAKE) -C $(WORKTREE)/Doc/ VENVDIR=$(WORKTREE)/Doc/venv/ PYTHON=$(PYTHON) \
|
$(CP_CMD) -u --parents *.po */*.po locales/$(LANGUAGE)/LC_MESSAGES/
|
||||||
SPHINXOPTS='-qW -j$(JOBS) \
|
$(MAKE) -C $(CPYTHON_PATH)/Doc/ \
|
||||||
-D locale_dirs=../locales \
|
SPHINXOPTS='-qW -j$(JOBS) \
|
||||||
-D language=$(LANGUAGE) \
|
-D locale_dirs=$(abspath locales) \
|
||||||
-D gettext_compact=0 \
|
-D language=$(LANGUAGE) \
|
||||||
-D latex_engine=xelatex \
|
-D gettext_compact=0 \
|
||||||
-D latex_elements.inputenc= \
|
-D latex_engine=xelatex \
|
||||||
-D latex_elements.fontenc=' \
|
-D latex_elements.inputenc= \
|
||||||
$(MODE) && echo "Build success, open file://$(WORKTREE)/Doc/build/html/index.html or run 'make serve' to see them."
|
-D latex_elements.fontenc=' \
|
||||||
|
$(MODE)
|
||||||
|
git -C $(CPYTHON_PATH) checkout -
|
||||||
|
@echo "Build success, open file://$(abspath $(CPYTHON_PATH))/Doc/build/html/index.html or run 'make serve' to see them."
|
||||||
|
|
||||||
|
|
||||||
.PHONY: setup
|
.PHONY: ensure_prerequisites
|
||||||
setup: venv
|
ensure_prerequisites:
|
||||||
echo "Setup the main clone"
|
@if [ -z $(CPYTHON_PATH) ]; then \
|
||||||
if ! [ -d $(CPYTHON_PATH) ]; then \
|
echo "Your CPYTHON_PATH is empty, please provide one."; \
|
||||||
git clone --depth 16 --branch $(BRANCH) $(UPSTREAM) $(CPYTHON_PATH); \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
@if ! [ -d $(CPYTHON_PATH) ]; then \
|
||||||
echo "Setup the current worktree"
|
echo "Building the translation requires a cpython clone."; \
|
||||||
if ! [ -d $(WORKTREE) ]; then \
|
echo "Please provide the path to a clone using the CPYTHON_PATH variable."; \
|
||||||
rm -fr $(WORKTREES); \
|
echo "(Currently CPYTHON_PATH is $(CPYTHON_PATH)."; \
|
||||||
git -C $(CPYTHON_PATH) worktree prune; \
|
echo "So you may want to run:"; \
|
||||||
mkdir -p $(WORKTREES); \
|
echo ""; \
|
||||||
if [ -n "$(CPYTHON_CURRENT_COMMIT)" ]; \
|
echo " git clone $(UPSTREAM) $(CPYTHON_PATH)"; \
|
||||||
then \
|
exit 1; \
|
||||||
depth=32; \
|
|
||||||
while ! git -C $(CPYTHON_PATH) cat-file -e $(CPYTHON_CURRENT_COMMIT); \
|
|
||||||
do \
|
|
||||||
depth=$$((depth * 2)); \
|
|
||||||
git -C $(CPYTHON_PATH) fetch --depth $$depth $(UPSTREAM) $(BRANCH); \
|
|
||||||
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
|
fi
|
||||||
|
@if [ -n "$$(git -C $(CPYTHON_PATH) status --porcelain)" ]; then \
|
||||||
|
echo "Your cpython clone at $(CPYTHON_PATH) is not clean."; \
|
||||||
.PHONY: venv
|
echo "In order to avoid breaking things, please clean it first."; \
|
||||||
venv:
|
exit 1; \
|
||||||
echo "Setup venv in $(VENV)"
|
fi
|
||||||
if [ ! -d $(VENV) ]; then $(PYTHON) -m venv --prompt python-docs-fr $(VENV); fi
|
@if ! (blurb help >/dev/null 2>&1 && sphinx-build --version >/dev/null 2>&1); then \
|
||||||
$(VENV)/bin/python -m pip install -q -r requirements.txt 2> $(VENV)/pip-install.log
|
echo "You're missing dependencies, please enable a venv and install:"; \
|
||||||
if grep -q 'pip install --upgrade pip' $(VENV)/pip-install.log; then \
|
echo ""; \
|
||||||
$(VENV)/bin/pip install -q --upgrade pip; \
|
echo " python -m pip install -r requirements.txt -r $(CPYTHON_PATH)/Doc/requirements.txt"; \
|
||||||
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
.PHONY: serve
|
.PHONY: serve
|
||||||
serve:
|
serve:
|
||||||
$(MAKE) -C $(WORKTREE)/Doc/ serve
|
$(MAKE) -C $(CPYTHON_PATH)/Doc/ serve
|
||||||
|
|
||||||
|
|
||||||
.PHONY: progress
|
.PHONY: progress
|
||||||
progress:
|
progress:
|
||||||
$(PYTHON) -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \
|
@$(PYTHON) -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \
|
||||||
$(shell msgcat *.po */*.po | msgattrib --translated | grep -c '^msgid') \
|
$(shell msgcat *.po */*.po | msgattrib --translated | grep -c '^msgid') \
|
||||||
$(shell msgcat *.po */*.po | grep -c '^msgid')
|
$(shell msgcat *.po */*.po | grep -c '^msgid')
|
||||||
|
|
||||||
|
|
||||||
.PHONY: todo
|
.PHONY: todo
|
||||||
todo: venv
|
todo: ensure_prerequisites
|
||||||
$(VENV)/bin/potodo --exclude $(VENV) $(EXCLUDED)
|
potodo --exclude venv .venv $(EXCLUDED)
|
||||||
|
|
||||||
.PHONY: wrap
|
.PHONY: wrap
|
||||||
wrap: venv
|
wrap: ensure_prerequisites
|
||||||
echo "Verify wrapping"
|
@echo "Verify wrapping"
|
||||||
$(VENV)/bin/powrap --check --quiet *.po **/*.po
|
powrap --check --quiet *.po **/*.po
|
||||||
|
|
||||||
SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$')
|
SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$')
|
||||||
# foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out
|
# foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out
|
||||||
DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS)))
|
DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS)))
|
||||||
|
|
||||||
.PHONY: spell
|
.PHONY: spell
|
||||||
spell: venv $(DESTS)
|
spell: ensure_prerequisites $(DESTS)
|
||||||
|
|
||||||
$(POSPELL_TMP_DIR)/%.po.out: %.po dict
|
$(POSPELL_TMP_DIR)/%.po.out: %.po dict
|
||||||
echo "Pospell checking $<..."
|
@echo "Pospell checking $<..."
|
||||||
mkdir -p $(@D)
|
mkdir -p $(@D)
|
||||||
$(VENV)/bin/pospell -p dict -l fr_FR $< && touch $@
|
pospell -p dict -l fr_FR $< && touch $@
|
||||||
|
|
||||||
.PHONY: fuzzy
|
.PHONY: fuzzy
|
||||||
fuzzy: venv
|
fuzzy: ensure_prerequisites
|
||||||
$(VENV)/bin/potodo -f --exclude $(VENV) $(EXCLUDED)
|
potodo -f --exclude venv .venv $(EXCLUDED)
|
||||||
|
|
||||||
.PHONY: verifs
|
.PHONY: verifs
|
||||||
verifs: wrap spell
|
verifs: wrap spell
|
||||||
|
|
||||||
.PHONY: merge
|
.PHONY: merge
|
||||||
merge: setup
|
merge: ensure_prerequisites
|
||||||
echo "Merge from $(UPSTREAM)"
|
@echo "Merge from $(UPSTREAM)"
|
||||||
git -C $(CPYTHON_PATH) fetch $(UPSTREAM)
|
git -C $(CPYTHON_PATH) checkout $(BRANCH)
|
||||||
rm -fr $(WORKTREES)/$(BRANCH)
|
git -C $(CPYTHON_PATH) pull --ff-only
|
||||||
git -C $(CPYTHON_PATH) worktree prune
|
(cd $(CPYTHON_PATH)/Doc; sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot)
|
||||||
git -C $(CPYTHON_PATH) worktree add $(WORKTREES)/$(BRANCH) $(word 1,$(shell git -C $(CPYTHON_PATH) remote -v | grep python/cpython))/$(BRANCH)
|
find $(CPYTHON_PATH)/pot/ -name '*.pot' |\
|
||||||
$(MAKE) -C $(WORKTREES)/$(BRANCH)/Doc/ VENVDIR=$(WORKTREES)/$(BRANCH)/Doc/venv/ PYTHON=$(PYTHON) venv;
|
while read -r POT; \
|
||||||
(cd $(WORKTREES)/$(BRANCH)/Doc; $(WORKTREES)/$(BRANCH)/Doc/venv/bin/sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot)
|
do \
|
||||||
find $(WORKTREES)/$(BRANCH) -name '*.pot' |\
|
PO="./$$(echo "$$POT" | sed "s#$(CPYTHON_PATH)/pot/##; s#\.pot\$$#.po#")"; \
|
||||||
while read -r POT;\
|
mkdir -p "$$(dirname "$$PO")"; \
|
||||||
do\
|
if [ -f "$$PO" ]; \
|
||||||
PO="./$$(echo "$$POT" | sed "s#$(WORKTREES)/$(BRANCH)/pot/##; s#\.pot\$$#.po#")";\
|
then \
|
||||||
mkdir -p "$$(dirname "$$PO")";\
|
msgmerge --backup=off --force-po -U "$$PO" "$$POT"; \
|
||||||
if [ -f "$$PO" ];\
|
else \
|
||||||
then\
|
msgcat -o "$$PO" "$$POT"; \
|
||||||
case "$$POT" in\
|
fi \
|
||||||
*whatsnew*) msgmerge --backup=off --force-po --no-fuzzy-matching -U "$$PO" "$$POT" ;;\
|
|
||||||
*) msgmerge --backup=off --force-po -U "$$PO" "$$POT" ;;\
|
|
||||||
esac\
|
|
||||||
else\
|
|
||||||
msgcat -o "$$PO" "$$POT";\
|
|
||||||
fi\
|
|
||||||
done
|
done
|
||||||
echo "Replacing CPYTHON_CURRENT_COMMIT Makefile by: " $(shell git -C $(WORKTREES)/$(BRANCH) rev-parse HEAD)
|
rm -fr $(CPYTHON_PATH)/pot/
|
||||||
sed -i 's/^CPYTHON_CURRENT_COMMIT :=.*/CPYTHON_CURRENT_COMMIT := $(shell git -C $(WORKTREES)/$(BRANCH) rev-parse HEAD)/' Makefile
|
@echo "Replacing CPYTHON_CURRENT_COMMIT in Makefile by: " $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)
|
||||||
rm -fr $(WORKTREES)/$(BRANCH)
|
sed -i 's/^CPYTHON_CURRENT_COMMIT :=.*/CPYTHON_CURRENT_COMMIT := $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)/' Makefile
|
||||||
git -C $(CPYTHON_PATH) worktree prune
|
|
||||||
sed -i 's|^#: .*Doc/|#: |' *.po */*.po
|
sed -i 's|^#: .*Doc/|#: |' *.po */*.po
|
||||||
-$(VENV)/bin/powrap -m
|
powrap -m
|
||||||
printf 'To add, you can use:\n git status -s | grep "^ M .*\.po" | cut -d" " -f3 | while read -r file; do if [ $$(git diff "$$file" | wc -l) -gt 13 ]; then git add "$$file"; fi ; done'
|
@printf 'To add, you can use:\n git status -s | grep "^ M .*\.po" | cut -d" " -f3 | while read -r file; do if [ $$(git diff "$$file" | wc -l) -gt 13 ]; then git add "$$file"; fi ; done'
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
echo "Cleaning *.mo, $(VENV), and $(POSPELL_TMP_DIR)"
|
@echo "Cleaning *.mo and $(POSPELL_TMP_DIR)"
|
||||||
rm -fr $(VENV) $(POSPELL_TMP_DIR)
|
rm -fr $(POSPELL_TMP_DIR)
|
||||||
find -name '*.mo' -delete
|
find -name '*.mo' -delete
|
||||||
|
|
|
@ -6,7 +6,7 @@ msgstr ""
|
||||||
"Project-Id-Version: Python 3\n"
|
"Project-Id-Version: Python 3\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-10-01 16:00+0200\n"
|
"POT-Creation-Date: 2020-10-01 16:00+0200\n"
|
||||||
"PO-Revision-Date: 2018-10-04 12:14+0200\n"
|
"PO-Revision-Date: 2020-12-10 16:23+0100\n"
|
||||||
"Last-Translator: Julien Palard <julien@palard.fr>\n"
|
"Last-Translator: Julien Palard <julien@palard.fr>\n"
|
||||||
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
|
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
|
@ -688,7 +688,7 @@ msgstr "``n`` (:class:`int`) [``Py_ssize_t``]"
|
||||||
|
|
||||||
#: c-api/arg.rst:292
|
#: c-api/arg.rst:292
|
||||||
msgid "Convert a Python integer to a C :c:type:`Py_ssize_t`."
|
msgid "Convert a Python integer to a C :c:type:`Py_ssize_t`."
|
||||||
msgstr "Convertit un entier Python en un :c:type:`short int` C."
|
msgstr "Convertit un entier Python en un :c:type:`Py_ssize_t`."
|
||||||
|
|
||||||
#: c-api/arg.rst:299
|
#: c-api/arg.rst:299
|
||||||
msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]"
|
msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user