Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5a4372b

Browse files
authored
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.
1 parent 835e083 commit 5a4372b

File tree

3 files changed

+80
-96
lines changed

3 files changed

+80
-96
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ venv/
55
.DS_Store
66
.pospell/
77
.potodo/
8+
locales/

Makefile

Lines changed: 77 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
# Here is what you can do:
44
#
5-
# - make # Automatically build an html local version
5+
# - make # Automatically build an HTML local version
66
# - make todo # To list remaining tasks
77
# - make verifs # To check for correctness: wrapping, spelling
88
# - make wrap # To check for wrapping
@@ -33,12 +33,10 @@ EXCLUDED := whatsnew/ c-api/
3333
# Internal variables
3434

3535
UPSTREAM := https://github.com/python/cpython
36-
VENV := $(shell pwd)/venv/
36+
3737
PYTHON := $(shell which python3)
3838
MODE := html
3939
POSPELL_TMP_DIR := .pospell/
40-
WORKTREES := $(VENV)/worktrees/
41-
WORKTREE := $(WORKTREES)/$(CPYTHON_CURRENT_COMMIT)/
4240
JOBS := auto
4341

4442
# Detect OS
@@ -59,132 +57,117 @@ else
5957
endif
6058

6159
.PHONY: all
62-
all: setup
63-
mkdir -p $(WORKTREE)/locales/$(LANGUAGE)/LC_MESSAGES/
64-
$(CP_CMD) -uv --parents *.po */*.po $(WORKTREE)/locales/$(LANGUAGE)/LC_MESSAGES/ | cut -d"'" -f2
65-
$(MAKE) -C $(WORKTREE)/Doc/ VENVDIR=$(WORKTREE)/Doc/venv/ PYTHON=$(PYTHON) \
66-
SPHINXOPTS='-qW -j$(JOBS) \
67-
-D locale_dirs=../locales \
68-
-D language=$(LANGUAGE) \
69-
-D gettext_compact=0 \
70-
-D latex_engine=xelatex \
71-
-D latex_elements.inputenc= \
72-
-D latex_elements.fontenc=' \
73-
$(MODE) && echo "Build success, open file://$(WORKTREE)/Doc/build/html/index.html or run 'make serve' to see them."
74-
75-
76-
.PHONY: setup
77-
setup: venv
78-
echo "Setup the main clone"
79-
if ! [ -d $(CPYTHON_PATH) ]; then \
80-
git clone --depth 16 --branch $(BRANCH) $(UPSTREAM) $(CPYTHON_PATH); \
60+
all: ensure_prerequisites
61+
git -C $(CPYTHON_PATH) checkout $(CPYTHON_CURRENT_COMMIT)
62+
mkdir -p locales/$(LANGUAGE)/LC_MESSAGES/
63+
$(CP_CMD) -u --parents *.po */*.po locales/$(LANGUAGE)/LC_MESSAGES/
64+
$(MAKE) -C $(CPYTHON_PATH)/Doc/ \
65+
SPHINXOPTS='-qW -j$(JOBS) \
66+
-D locale_dirs=$(abspath locales) \
67+
-D language=$(LANGUAGE) \
68+
-D gettext_compact=0 \
69+
-D latex_engine=xelatex \
70+
-D latex_elements.inputenc= \
71+
-D latex_elements.fontenc=' \
72+
$(MODE)
73+
git -C $(CPYTHON_PATH) checkout -
74+
@echo "Build success, open file://$(abspath $(CPYTHON_PATH))/Doc/build/html/index.html or run 'make serve' to see them."
75+
76+
77+
.PHONY: ensure_prerequisites
78+
ensure_prerequisites:
79+
@if [ -z $(CPYTHON_PATH) ]; then \
80+
echo "Your CPYTHON_PATH is empty, please provide one."; \
81+
exit 1; \
8182
fi
82-
83-
echo "Setup the current worktree"
84-
if ! [ -d $(WORKTREE) ]; then \
85-
rm -fr $(WORKTREES); \
86-
git -C $(CPYTHON_PATH) worktree prune; \
87-
mkdir -p $(WORKTREES); \
88-
if [ -n "$(CPYTHON_CURRENT_COMMIT)" ]; \
89-
then \
90-
depth=32; \
91-
while ! git -C $(CPYTHON_PATH) cat-file -e $(CPYTHON_CURRENT_COMMIT); \
92-
do \
93-
depth=$$((depth * 2)); \
94-
git -C $(CPYTHON_PATH) fetch --depth $$depth $(UPSTREAM) $(BRANCH); \
95-
done \
96-
else \
97-
git -C $(CPYTHON_PATH) fetch --depth 1 $(UPSTREAM); \
98-
fi; \
99-
git -C $(CPYTHON_PATH) worktree add $(WORKTREE)/ $(CPYTHON_CURRENT_COMMIT); \
100-
$(MAKE) -C $(WORKTREE)/Doc/ VENVDIR=$(WORKTREE)/Doc/venv/ PYTHON=$(PYTHON) venv; \
83+
@if ! [ -d $(CPYTHON_PATH) ]; then \
84+
echo "Building the translation requires a cpython clone."; \
85+
echo "Please provide the path to a clone using the CPYTHON_PATH variable."; \
86+
echo "(Currently CPYTHON_PATH is $(CPYTHON_PATH)."; \
87+
echo "So you may want to run:"; \
88+
echo ""; \
89+
echo " git clone $(UPSTREAM) $(CPYTHON_PATH)"; \
90+
exit 1; \
10191
fi
102-
103-
104-
.PHONY: venv
105-
venv:
106-
echo "Setup venv in $(VENV)"
107-
if [ ! -d $(VENV) ]; then $(PYTHON) -m venv --prompt python-docs-fr $(VENV); fi
108-
$(VENV)/bin/python -m pip install -q -r requirements.txt 2> $(VENV)/pip-install.log
109-
if grep -q 'pip install --upgrade pip' $(VENV)/pip-install.log; then \
110-
$(VENV)/bin/pip install -q --upgrade pip; \
92+
@if [ -n "$$(git -C $(CPYTHON_PATH) status --porcelain)" ]; then \
93+
echo "Your cpython clone at $(CPYTHON_PATH) is not clean."; \
94+
echo "In order to avoid breaking things, please clean it first."; \
95+
exit 1; \
96+
fi
97+
@if ! (blurb help >/dev/null 2>&1 && sphinx-build --version >/dev/null 2>&1); then \
98+
echo "You're missing dependencies, please enable a venv and install:"; \
99+
echo ""; \
100+
echo " python -m pip install -r requirements.txt -r $(CPYTHON_PATH)/Doc/requirements.txt"; \
101+
exit 1; \
111102
fi
112-
113103

114104
.PHONY: serve
115105
serve:
116-
$(MAKE) -C $(WORKTREE)/Doc/ serve
106+
$(MAKE) -C $(CPYTHON_PATH)/Doc/ serve
117107

118108

119109
.PHONY: progress
120110
progress:
121-
$(PYTHON) -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \
111+
@$(PYTHON) -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \
122112
$(shell msgcat *.po */*.po | msgattrib --translated | grep -c '^msgid') \
123113
$(shell msgcat *.po */*.po | grep -c '^msgid')
124114

125115

126116
.PHONY: todo
127-
todo: venv
128-
$(VENV)/bin/potodo --exclude $(VENV) $(EXCLUDED)
117+
todo: ensure_prerequisites
118+
potodo --exclude venv .venv $(EXCLUDED)
129119

130120
.PHONY: wrap
131-
wrap: venv
132-
echo "Verify wrapping"
133-
$(VENV)/bin/powrap --check --quiet *.po **/*.po
121+
wrap: ensure_prerequisites
122+
@echo "Verify wrapping"
123+
powrap --check --quiet *.po **/*.po
134124

135125
SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$')
136126
# foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out
137127
DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS)))
138128

139129
.PHONY: spell
140-
spell: venv $(DESTS)
130+
spell: ensure_prerequisites $(DESTS)
141131

142132
$(POSPELL_TMP_DIR)/%.po.out: %.po dict
143-
echo "Pospell checking $<..."
133+
@echo "Pospell checking $<..."
144134
mkdir -p $(@D)
145-
$(VENV)/bin/pospell -p dict -l fr_FR $< && touch $@
135+
pospell -p dict -l fr_FR $< && touch $@
146136

147137
.PHONY: fuzzy
148-
fuzzy: venv
149-
$(VENV)/bin/potodo -f --exclude $(VENV) $(EXCLUDED)
138+
fuzzy: ensure_prerequisites
139+
potodo -f --exclude venv .venv $(EXCLUDED)
150140

151141
.PHONY: verifs
152142
verifs: wrap spell
153143

154144
.PHONY: merge
155-
merge: setup
156-
echo "Merge from $(UPSTREAM)"
157-
git -C $(CPYTHON_PATH) fetch $(UPSTREAM)
158-
rm -fr $(WORKTREES)/$(BRANCH)
159-
git -C $(CPYTHON_PATH) worktree prune
160-
git -C $(CPYTHON_PATH) worktree add $(WORKTREES)/$(BRANCH) $(word 1,$(shell git -C $(CPYTHON_PATH) remote -v | grep python/cpython))/$(BRANCH)
161-
$(MAKE) -C $(WORKTREES)/$(BRANCH)/Doc/ VENVDIR=$(WORKTREES)/$(BRANCH)/Doc/venv/ PYTHON=$(PYTHON) venv;
162-
(cd $(WORKTREES)/$(BRANCH)/Doc; $(WORKTREES)/$(BRANCH)/Doc/venv/bin/sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot)
163-
find $(WORKTREES)/$(BRANCH) -name '*.pot' |\
164-
while read -r POT;\
165-
do\
166-
PO="./$$(echo "$$POT" | sed "s#$(WORKTREES)/$(BRANCH)/pot/##; s#\.pot\$$#.po#")";\
167-
mkdir -p "$$(dirname "$$PO")";\
168-
if [ -f "$$PO" ];\
169-
then\
170-
case "$$POT" in\
171-
*whatsnew*) msgmerge --backup=off --force-po --no-fuzzy-matching -U "$$PO" "$$POT" ;;\
172-
*) msgmerge --backup=off --force-po -U "$$PO" "$$POT" ;;\
173-
esac\
174-
else\
175-
msgcat -o "$$PO" "$$POT";\
176-
fi\
145+
merge: ensure_prerequisites
146+
@echo "Merge from $(UPSTREAM)"
147+
git -C $(CPYTHON_PATH) checkout $(BRANCH)
148+
git -C $(CPYTHON_PATH) pull --ff-only
149+
(cd $(CPYTHON_PATH)/Doc; sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot)
150+
find $(CPYTHON_PATH)/pot/ -name '*.pot' |\
151+
while read -r POT; \
152+
do \
153+
PO="./$$(echo "$$POT" | sed "s#$(CPYTHON_PATH)/pot/##; s#\.pot\$$#.po#")"; \
154+
mkdir -p "$$(dirname "$$PO")"; \
155+
if [ -f "$$PO" ]; \
156+
then \
157+
msgmerge --backup=off --force-po -U "$$PO" "$$POT"; \
158+
else \
159+
msgcat -o "$$PO" "$$POT"; \
160+
fi \
177161
done
178-
echo "Replacing CPYTHON_CURRENT_COMMIT Makefile by: " $(shell git -C $(WORKTREES)/$(BRANCH) rev-parse HEAD)
179-
sed -i 's/^CPYTHON_CURRENT_COMMIT :=.*/CPYTHON_CURRENT_COMMIT := $(shell git -C $(WORKTREES)/$(BRANCH) rev-parse HEAD)/' Makefile
180-
rm -fr $(WORKTREES)/$(BRANCH)
181-
git -C $(CPYTHON_PATH) worktree prune
162+
rm -fr $(CPYTHON_PATH)/pot/
163+
@echo "Replacing CPYTHON_CURRENT_COMMIT in Makefile by: " $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)
164+
sed -i 's/^CPYTHON_CURRENT_COMMIT :=.*/CPYTHON_CURRENT_COMMIT := $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)/' Makefile
182165
sed -i 's|^#: .*Doc/|#: |' *.po */*.po
183-
-$(VENV)/bin/powrap -m
184-
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'
166+
powrap -m
167+
@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'
185168

186169
.PHONY: clean
187170
clean:
188-
echo "Cleaning *.mo, $(VENV), and $(POSPELL_TMP_DIR)"
189-
rm -fr $(VENV) $(POSPELL_TMP_DIR)
171+
@echo "Cleaning *.mo and $(POSPELL_TMP_DIR)"
172+
rm -fr $(POSPELL_TMP_DIR)
190173
find -name '*.mo' -delete

c-api/arg.po

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ msgstr ""
66
"Project-Id-Version: Python 3\n"
77
"Report-Msgid-Bugs-To: \n"
88
"POT-Creation-Date: 2020-10-01 16:00+0200\n"
9-
"PO-Revision-Date: 2018-10-04 12:14+0200\n"
9+
"PO-Revision-Date: 2020-12-10 16:23+0100\n"
1010
"Last-Translator: Julien Palard <[email protected]>\n"
1111
"Language-Team: FRENCH <[email protected]>\n"
1212
"Language: fr\n"
@@ -688,7 +688,7 @@ msgstr "``n`` (:class:`int`) [``Py_ssize_t``]"
688688

689689
#: c-api/arg.rst:292
690690
msgid "Convert a Python integer to a C :c:type:`Py_ssize_t`."
691-
msgstr "Convertit un entier Python en un :c:type:`short int` C."
691+
msgstr "Convertit un entier Python en un :c:type:`Py_ssize_t`."
692692

693693
#: c-api/arg.rst:299
694694
msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]"

0 commit comments

Comments
 (0)