Index: Makefile =================================================================== --- Makefile (revision 398467) +++ Makefile (working copy) @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= ply -PORTVERSION= 3.6 -PORTREVISION= 1 +PORTVERSION= 3.8 CATEGORIES= devel python MASTER_SITES= http://www.dabeaz.com/ply/ PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -20,14 +19,6 @@ OPTIONS_DEFINE= DOCS EXAMPLES -post-extract: - @${FIND} ${WRKSRC}/example -name "*.pyc" -type f -delete - @${FIND} ${WRKSRC}/example -name "__pycache__" -type d -delete - -pre-configure: - @${REINPLACE_CMD} -e 's|from setuptools import setup|from distutils.core import setup|' \ - ${WRKSRC}/setup.py - post-install: @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/doc/ply.html ${STAGEDIR}${DOCSDIR} Index: distinfo =================================================================== --- distinfo (revision 398467) +++ distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (ply-3.6.tar.gz) = 61367b9eb2f4b819f69ea116750305270f1df8859992c9e356d6a851f25a4b47 -SIZE (ply-3.6.tar.gz) = 281690 +SHA256 (ply-3.8.tar.gz) = e7d1bdff026beb159c9942f7a17e102c375638d9478a7ecd4cc0c76afd8de0b8 +SIZE (ply-3.8.tar.gz) = 157286 Index: files/patch-CHANGES =================================================================== --- files/patch-CHANGES (revision 398467) +++ files/patch-CHANGES (working copy) @@ -1,12 +0,0 @@ ---- CHANGES.orig 2015-04-25 14:15:57 UTC -+++ CHANGES -@@ -1,3 +1,9 @@ -+Version 3.7 -+--------------------- -+05/07/15: beazley -+ Fixed regression in handling of table modules if specified as module -+ objects. See https://github.com/dabeaz/ply/issues/63 -+ - Version 3.6 - --------------------- - 04/25/15: beazley Index: files/patch-ply_lex.py =================================================================== --- files/patch-ply_lex.py (revision 398467) +++ files/patch-ply_lex.py (working copy) @@ -1,82 +0,0 @@ ---- ply/lex.py.orig 2015-04-26 21:17:41 UTC -+++ ply/lex.py -@@ -171,7 +171,10 @@ class Lexer: - # ------------------------------------------------------------ - # writetab() - Write lexer information to a table file - # ------------------------------------------------------------ -- def writetab(self, basetabmodule, outputdir=''): -+ def writetab(self, lextab, outputdir=''): -+ if isinstance(lextab, types.ModuleType): -+ raise IOError("Won't overwrite existing lextab module") -+ basetabmodule = lextab.split('.')[-1] - filename = os.path.join(outputdir, basetabmodule) + '.py' - with open(filename, 'w') as tf: - tf.write('# %s.py. This file automatically created by PLY (version %s). Don\'t edit!\n' % (basetabmodule, __version__)) -@@ -856,6 +859,10 @@ class LexerReflect(object): - # ----------------------------------------------------------------------------- - def lex(module=None, object=None, debug=False, optimize=False, lextab='lextab', - reflags=0, nowarn=False, outputdir=None, debuglog=None, errorlog=None): -+ -+ if lextab is None: -+ lextab = 'lextab' -+ - global lexer - - ldict = None -@@ -885,29 +892,13 @@ def lex(module=None, object=None, debug= - else: - ldict = get_caller_module_dict(2) - -- if outputdir is None: -- # If no output directory is set, the location of the output files -- # is determined according to the following rules: -- # - If lextab specifies a package, files go into that package directory -- # - Otherwise, files go in the same directory as the specifying module -- if '.' not in lextab: -- srcfile = ldict['__file__'] -- else: -- parts = lextab.split('.') -- pkgname = '.'.join(parts[:-1]) -- exec('import %s' % pkgname) -- srcfile = getattr(sys.modules[pkgname], '__file__', '') -- outputdir = os.path.dirname(srcfile) -- - # Determine if the module is package of a package or not. - # If so, fix the tabmodule setting so that tables load correctly - pkg = ldict.get('__package__') -- if pkg: -+ if pkg and isinstance(lextab, str): - if '.' not in lextab: - lextab = pkg + '.' + lextab - -- baselextab = lextab.split('.')[-1] -- - # Collect parser information from the dictionary - linfo = LexerReflect(ldict, log=errorlog, reflags=reflags) - linfo.get_all() -@@ -1029,8 +1020,24 @@ def lex(module=None, object=None, debug= - - # If in optimize mode, we write the lextab - if lextab and optimize: -+ if outputdir is None: -+ # If no output directory is set, the location of the output files -+ # is determined according to the following rules: -+ # - If lextab specifies a package, files go into that package directory -+ # - Otherwise, files go in the same directory as the specifying module -+ if isinstance(lextab, types.ModuleType): -+ srcfile = lextab.__file__ -+ else: -+ if '.' not in lextab: -+ srcfile = ldict['__file__'] -+ else: -+ parts = lextab.split('.') -+ pkgname = '.'.join(parts[:-1]) -+ exec('import %s' % pkgname) -+ srcfile = getattr(sys.modules[pkgname], '__file__', '') -+ outputdir = os.path.dirname(srcfile) - try: -- lexobj.writetab(baselextab, outputdir) -+ lexobj.writetab(lextab, outputdir) - except IOError as e: - errorlog.warning("Couldn't write lextab module %r. %s" % (lextab, e)) - Index: files/patch-ply_yacc.py =================================================================== --- files/patch-ply_yacc.py (revision 398467) +++ files/patch-ply_yacc.py (working copy) @@ -1,79 +0,0 @@ ---- ply/yacc.py.orig 2015-04-26 21:19:12 UTC -+++ ply/yacc.py -@@ -2692,7 +2692,11 @@ class LRGeneratedTable(LRTable): - # This function writes the LR parsing tables to a file - # ----------------------------------------------------------------------------- - -- def write_table(self, basemodulename, outputdir='', signature=''): -+ def write_table(self, tabmodule, outputdir='', signature=''): -+ if isinstance(tabmodule, types.ModuleType): -+ raise IOError("Won't overwrite existing tabmodule") -+ -+ basemodulename = tabmodule.split('.')[-1] - filename = os.path.join(outputdir, basemodulename) + '.py' - try: - f = open(filename, 'w') -@@ -2705,7 +2709,7 @@ _tabversion = %r - _lr_method = %r - - _lr_signature = %r -- ''' % (filename, __tabversion__, self.lr_method, signature)) -+ ''' % (os.path.basename(filename), __tabversion__, self.lr_method, signature)) - - # Change smaller to 0 to go back to original tables - smaller = 1 -@@ -3179,6 +3183,9 @@ def yacc(method='LALR', debug=yaccdebug, - check_recursion=True, optimize=False, write_tables=True, debugfile=debug_file, - outputdir=None, debuglog=None, errorlog=None, picklefile=None): - -+ if tabmodule is None: -+ tabmodule = tab_module -+ - # Reference to the parsing method of the last built parser - global parse - -@@ -3204,22 +3211,26 @@ def yacc(method='LALR', debug=yaccdebug, - # is determined according to the following rules: - # - If tabmodule specifies a package, files go into that package directory - # - Otherwise, files go in the same directory as the specifying module -- if '.' not in tabmodule: -- srcfile = pdict['__file__'] -+ if isinstance(tabmodule, types.ModuleType): -+ srcfile = tabmodule.__file__ - else: -- parts = tabmodule.split('.') -- pkgname = '.'.join(parts[:-1]) -- exec('import %s' % pkgname) -- srcfile = getattr(sys.modules[pkgname], '__file__', '') -+ if '.' not in tabmodule: -+ srcfile = pdict['__file__'] -+ else: -+ parts = tabmodule.split('.') -+ pkgname = '.'.join(parts[:-1]) -+ exec('import %s' % pkgname) -+ srcfile = getattr(sys.modules[pkgname], '__file__', '') - outputdir = os.path.dirname(srcfile) - - # Determine if the module is package of a package or not. - # If so, fix the tabmodule setting so that tables load correctly - pkg = pdict.get('__package__') -- if pkg and '.' not in tabmodule: -- tabmodule = pkg + '.' + tabmodule -+ if pkg and isinstance(tabmodule, str): -+ if '.' not in tabmodule: -+ tabmodule = pkg + '.' + tabmodule -+ - -- basetabmodule = tabmodule.split('.')[-1] - - # Set start symbol if it's specified directly using an argument - if start is not None: -@@ -3432,7 +3443,7 @@ def yacc(method='LALR', debug=yaccdebug, - # Write the table file if requested - if write_tables: - try: -- lr.write_table(basetabmodule, outputdir, signature) -+ lr.write_table(tabmodule, outputdir, signature) - except IOError as e: - errorlog.warning("Couldn't create %r. %s" % (tabmodule, e)) - Index: pkg-plist =================================================================== --- pkg-plist (revision 398467) +++ pkg-plist (working copy) @@ -1,28 +1,5 @@ -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ansic/README -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ansic/clex.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ansic/cparse.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calc/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calc/parser.out -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calc/parsetab.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calceof/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calcdebug/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/classcalc/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/classcalc/calc_Calc_parsetab.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/closurecalc/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hedit/hedit.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/newclasscalc/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/newclasscalc/calc_Calc_parsetab.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/optcalc/README -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/optcalc/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/optcalc/lextab.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/optcalc/parser.out -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/optcalc/parsetab.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/unicalc/calc.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/README -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/ylex.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/yparse.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/yply.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/sqrt2.bas +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/README +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/basic.py %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/basiclex.py %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/basiclog.py %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/basinterp.py @@ -36,12 +13,28 @@ %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/maxsin.bas %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/powers.bas %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/rand.bas -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/README %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/sales.bas %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/sears.bas %%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/sqrt1.bas -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/basic.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/BASIC/sqrt2.bas %%PORTEXAMPLES%%%%EXAMPLESDIR%%/GardenSnake/GardenSnake.py %%PORTEXAMPLES%%%%EXAMPLESDIR%%/GardenSnake/README %%PORTEXAMPLES%%%%EXAMPLESDIR%%/README +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ansic/README +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ansic/clex.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ansic/cparse.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calc/calc.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calcdebug/calc.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calceof/calc.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/classcalc/calc.py %%PORTEXAMPLES%%%%EXAMPLESDIR%%/cleanup.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/closurecalc/calc.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hedit/hedit.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/newclasscalc/calc.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/optcalc/README +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/optcalc/calc.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/unicalc/calc.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/README +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/ylex.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/yparse.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yply/yply.py