From 47bcfff26be59c3979778b4621cd61f132c1a6d9 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Sat, 8 Sep 2012 18:50:56 -0700 Subject: Issue #15822: Fix installation of lib2to3 grammar pickles to ensure they are created in the install locations and with the proper timestamp. (Solution suggested by MvL) --- Lib/lib2to3/pgen2/driver.py | 17 +++++++++++++++++ Makefile.pre.in | 8 +++++--- Misc/NEWS | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Lib/lib2to3/pgen2/driver.py b/Lib/lib2to3/pgen2/driver.py index e7828ff..4c611c6 100644 --- a/Lib/lib2to3/pgen2/driver.py +++ b/Lib/lib2to3/pgen2/driver.py @@ -138,3 +138,20 @@ def _newer(a, b): if not os.path.exists(b): return True return os.path.getmtime(a) >= os.path.getmtime(b) + + +def main(*args): + """Main program, when run as a script: produce grammar pickle files. + + Calls load_grammar for each argument, a path to a grammar text file. + """ + if not args: + args = sys.argv[1:] + logging.basicConfig(level=logging.INFO, stream=sys.stdout, + format='%(message)s') + for gt in args: + load_grammar(gt, save=True, force=True) + return True + +if __name__ == "__main__": + sys.exit(int(not main())) diff --git a/Makefile.pre.in b/Makefile.pre.in index 5cb6774..6dec272 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -945,8 +945,6 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ unittest unittest/test \ curses pydoc_data $(MACHDEPS) libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - ./$(BUILDPYTHON) -Wi -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()" @for i in $(SCRIPTDIR) $(LIBDEST); \ do \ if test ! -d $(DESTDIR)$$i; then \ @@ -1024,6 +1022,10 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c ./$(BUILDPYTHON) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ -d $(LIBDEST)/site-packages -f \ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + ./$(BUILDPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + ./$(BUILDPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt # Create the PLATDIR source directory, if one wasn't distributed.. $(srcdir)/Lib/$(PLATDIR): @@ -1264,7 +1266,7 @@ clean: pycremoval find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';' find build -name 'fficonfig.h' -exec rm -f {} ';' || true find build -name 'fficonfig.py' -exec rm -f {} ';' || true - -rm -f $(srcdir)/Lib/lib2to3/*Grammar*.pickle + -rm -f Lib/lib2to3/*Grammar*.pickle -rm -f Modules/_testembed profile-removal: diff --git a/Misc/NEWS b/Misc/NEWS index 065f5f6..de76a78 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -525,7 +525,7 @@ Build - Issue #15819: Make sure we can build Python out-of-tree from a readonly source directory. (Somewhat related to Issue #9860.) -- Issue #15645: Ensure 2to3 grammar pickles are properly installed. +- Issue #15822: Ensure 2to3 grammar pickles are properly installed. - Issue #15560: Fix building _sqlite3 extension on OS X with an SDK. -- cgit v0.12