I could probably be happy with the following:
diff --git a/make/lilypond-vars.make b/make/lilypond-vars.make
index 3f1e992626..3ac59f19a4 100644
--- a/make/lilypond-vars.make
+++ b/make/lilypond-vars.make
@@ -18,6 +18,8 @@ endif
LANGS=$(shell $(PYTHON) $(top-src-dir)/python/langdefs.py)
export PYTHONPATH:=$(top-src-dir)/python:$(PYTHONPATH)
+# Don't create __pycache__ in the source directory.
+export PYTHONDONTWRITEBYTECODE=1
the-script-dir=$(wildcard $(script-dir))
diff --git a/python/GNUmakefile b/python/GNUmakefile
index b541206df3..efe9329038 100644
--- a/python/GNUmakefile
+++ b/python/GNUmakefile
@@ -2,7 +2,7 @@ depth = ..
SUBDIRS=auxiliar
-STEPMAKE_TEMPLATES=install-out po
+STEPMAKE_TEMPLATES=install-out install po
PY_MODULES_IN = $(call src-wildcard,*.py)
OUT_PY_MODULES = $(PY_MODULES_IN:%=$(outdir)/%)
@@ -17,13 +17,11 @@ $(outdir)/%.py: %.py
default: $(OUT_PY_MODULES)
-INSTALLATION_OUT_SUFFIXES = 1 2
+INSTALLATION_DIR = $(local_lilypond_datadir)/python
+INSTALLATION_FILES = $(filter-out $(call src-wildcard, *_test.py),
$(PY_MODULES_IN))
-INSTALLATION_OUT_DIR1=$(local_lilypond_datadir)/python
-INSTALLATION_OUT_FILES1=$(PY_MODULES_IN)
-
-INSTALLATION_OUT_DIR2 = $(local_lilypond_datadir)/python/__pycache__
-INSTALLATION_OUT_FILES2 = $(wildcard $(outdir)/__pycache__/*.pyc)
+INSTALLATION_OUT_DIR = $(local_lilypond_datadir)/python/__pycache__
+INSTALLATION_OUT_FILES = $(wildcard $(outdir)/__pycache__/*.pyc)
local-test: book_base_test.py
$(PYTHON) $<
Afterwards I can submit a change to avoid copying the .py files over and
have them only in the source directory:
diff --git a/python/GNUmakefile b/python/GNUmakefile
index efe9329038..731fadb8e5 100644
--- a/python/GNUmakefile
+++ b/python/GNUmakefile
@@ -5,17 +5,16 @@ SUBDIRS=auxiliar
STEPMAKE_TEMPLATES=install-out install po
PY_MODULES_IN = $(call src-wildcard,*.py)
-OUT_PY_MODULES = $(PY_MODULES_IN:%=$(outdir)/%)
include $(depth)/make/stepmake.make
-$(outdir)/%.py: %.py
+$(outdir)/%.pyc.dummy: %.py
$(call ly_progress,Making,$@,(py compile))
- cp $< $@
- PYTHONOPTIMIZE= $(PYTHON) -c 'import py_compile;
py_compile.compile ("$@", doraise=True)'
- chmod 755 $@
+ # Do not use buildscript-dir, this has not been traversed yet.
+ $(PYTHON) $(top-src-dir)/scripts/build/compile.py $<
+ touch $@
-default: $(OUT_PY_MODULES)
+default: $(PY_MODULES_IN:%.py=$(outdir)/%.pyc.dummy)
INSTALLATION_DIR = $(local_lilypond_datadir)/python
INSTALLATION_FILES = $(filter-out $(call src-wildcard, *_test.py),
$(PY_MODULES_IN))
diff --git a/scripts/build/compile.py b/scripts/build/compile.py
new file mode 100644
index 00..294abbaf4a
--- /dev/null
+++ b/scripts/build/compile.py
@@ -0,0 +1,14 @@
+#!@PYTHON@
+
+from importlib.util import cache_from_source
+from os.path import basename
+import py_compile
+import sys
+
+if len (sys.argv) != 2:
+print ('Usage: compile.py ')
+sys.exit (1)
+
+src = sys.argv[1]
+cfile = cache_from_source (basename(src))
+py_compile.compile (src, cfile=cfile, doraise=True)
https://codereview.appspot.com/549810043/