This submitted two things I meant to submit separately; here are the comments:
fileobject.c: make PyFile_FromFile() work (more or less) by calling io.open() and closing the input file. ast.c: When the input is known to be UTF-8, ignore an encoding declaration. (This was a hack to make the freeze tool "work" -- unclear what else to do about this.) On 6/11/07, guido.van.rossum <[email protected]> wrote: > Author: guido.van.rossum > Date: Tue Jun 12 02:28:30 2007 > New Revision: 55919 > > Modified: > python/branches/py3k-struni/Objects/fileobject.c > python/branches/py3k-struni/Python/ast.c > python/branches/py3k-struni/Tools/freeze/bkfile.py > python/branches/py3k-struni/Tools/freeze/freeze.py > python/branches/py3k-struni/Tools/freeze/makefreeze.py > python/branches/py3k-struni/Tools/freeze/makemakefile.py > python/branches/py3k-struni/Tools/freeze/parsesetup.py > python/branches/py3k-struni/runtests.sh > Log: > Minimal changes to make the "freeze" tool work again. > There are other issues left, but these were basics (e.g. keys().sort()). > > > Modified: python/branches/py3k-struni/Objects/fileobject.c > ============================================================================== > --- python/branches/py3k-struni/Objects/fileobject.c (original) > +++ python/branches/py3k-struni/Objects/fileobject.c Tue Jun 12 02:28:30 > 2007 > @@ -265,24 +265,19 @@ > PyObject * > PyFile_FromFile(FILE *fp, char *name, char *mode, int (*close)(FILE *)) > { > - PyErr_SetString(PyExc_SystemError, > - "attempt to create old file from FILE *"); > - return NULL; > -#if 0 > - PyFileObject *f = (PyFileObject *)PyFile_Type.tp_new(&PyFile_Type, > - NULL, NULL); > - if (f != NULL) { > - PyObject *o_name = PyString_FromString(name); > - if (o_name == NULL) > - return NULL; > - if (fill_file_fields(f, fp, o_name, mode, close) == NULL) { > - Py_DECREF(f); > - f = NULL; > - } > - Py_DECREF(o_name); > + PyObject *io = NULL, *stream = NULL; > + > + io = PyImport_ImportModule("io"); > + if (io == NULL) > + return NULL; > + stream = PyObject_CallMethod(io, "open", "ss", name, mode); > + if (stream == NULL) { > + Py_XDECREF(io); > + return NULL; > } > - return (PyObject *) f; > -#endif > + if (close != NULL) > + close(fp); > + return stream; > } > > PyObject * > > Modified: python/branches/py3k-struni/Python/ast.c > ============================================================================== > --- python/branches/py3k-struni/Python/ast.c (original) > +++ python/branches/py3k-struni/Python/ast.c Tue Jun 12 02:28:30 2007 > @@ -193,8 +193,11 @@ > if (flags && flags->cf_flags & PyCF_SOURCE_IS_UTF8) { > c.c_encoding = "utf-8"; > if (TYPE(n) == encoding_decl) { > +#if 0 > ast_error(n, "encoding declaration in Unicode string"); > goto error; > +#endif > + n = CHILD(n, 0); > } > } else if (TYPE(n) == encoding_decl) { > c.c_encoding = STR(n); > > Modified: python/branches/py3k-struni/Tools/freeze/bkfile.py > ============================================================================== > --- python/branches/py3k-struni/Tools/freeze/bkfile.py (original) > +++ python/branches/py3k-struni/Tools/freeze/bkfile.py Tue Jun 12 02:28:30 > 2007 > @@ -21,7 +21,10 @@ > self.mode = self.__file.mode > self.name = self.__file.name > self.read = self.__file.read > - self.readinto = self.__file.readinto > + try: > + self.readinto = self.__file.readinto > + except AttributeError: > + pass > self.readline = self.__file.readline > self.readlines = self.__file.readlines > self.seek = self.__file.seek > > Modified: python/branches/py3k-struni/Tools/freeze/freeze.py > ============================================================================== > --- python/branches/py3k-struni/Tools/freeze/freeze.py (original) > +++ python/branches/py3k-struni/Tools/freeze/freeze.py Tue Jun 12 02:28:30 > 2007 > @@ -386,8 +386,7 @@ > # look for unfrozen modules (builtin and of unknown origin) > builtins = [] > unknown = [] > - mods = dict.keys() > - mods.sort() > + mods = sorted(dict.keys()) > for mod in mods: > if dict[mod].__code__: > continue > > Modified: python/branches/py3k-struni/Tools/freeze/makefreeze.py > ============================================================================== > --- python/branches/py3k-struni/Tools/freeze/makefreeze.py (original) > +++ python/branches/py3k-struni/Tools/freeze/makefreeze.py Tue Jun 12 > 02:28:30 2007 > @@ -33,8 +33,7 @@ > if entry_point is None: entry_point = default_entry_point > done = [] > files = [] > - mods = dict.keys() > - mods.sort() > + mods = sorted(dict.keys()) > for mod in mods: > m = dict[mod] > mangled = "__".join(mod.split(".")) > @@ -81,8 +80,8 @@ > outfp.write('unsigned char M_%s[] = {' % mod) > for i in range(0, len(str), 16): > outfp.write('\n\t') > - for c in str[i:i+16]: > - outfp.write('%d,' % ord(c)) > + for c in bytes(str[i:i+16]): > + outfp.write('%d,' % c) > outfp.write('\n};\n') > > ## def writecode(outfp, mod, str): > > Modified: python/branches/py3k-struni/Tools/freeze/makemakefile.py > ============================================================================== > --- python/branches/py3k-struni/Tools/freeze/makemakefile.py (original) > +++ python/branches/py3k-struni/Tools/freeze/makemakefile.py Tue Jun 12 > 02:28:30 2007 > @@ -5,8 +5,7 @@ > def makemakefile(outfp, makevars, files, target): > outfp.write("# Makefile generated by freeze.py script\n\n") > > - keys = makevars.keys() > - keys.sort() > + keys = sorted(makevars.keys()) > for key in keys: > outfp.write("%s=%s\n" % (key, makevars[key])) > outfp.write("\nall: %s\n\n" % target) > > Modified: python/branches/py3k-struni/Tools/freeze/parsesetup.py > ============================================================================== > --- python/branches/py3k-struni/Tools/freeze/parsesetup.py (original) > +++ python/branches/py3k-struni/Tools/freeze/parsesetup.py Tue Jun 12 > 02:28:30 2007 > @@ -102,8 +102,7 @@ > print('(name must begin with "Makefile" or "Setup")') > > def prdict(d): > - keys = d.keys() > - keys.sort() > + keys = sorted(d.keys()) > for key in keys: > value = d[key] > print("%-15s" % key, str(value)) > > Modified: python/branches/py3k-struni/runtests.sh > ============================================================================== > --- python/branches/py3k-struni/runtests.sh (original) > +++ python/branches/py3k-struni/runtests.sh Tue Jun 12 02:28:30 2007 > @@ -24,6 +24,9 @@ > >BAD > >SKIPPED > > +# The -uall flag (edit this file to change). > +UALL="-uall" > + > # Compute the list of tests to run. > case $# in > 0) > @@ -38,7 +41,7 @@ > for T in $TESTS > do > echo -n $T > - if $PYTHON Lib/test/regrtest.py -uall $T >OUT/$T.out 2>&1 > + if $PYTHON Lib/test/regrtest.py $UALL $T >OUT/$T.out 2>&1 > then > if grep -q "1 test skipped:" OUT/$T.out > then > @@ -51,5 +54,7 @@ > else > echo " BAD" > echo $T >>BAD > + echo "---------- Re-running test in verbose mode ----------" >>OUT/$T > + $PYTHON Lib/test/regrtest.py -v $UALL $T >>OUT/$T.out 2>&1 > fi > done > _______________________________________________ > Python-3000-checkins mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-3000-checkins > -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000-checkins mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000-checkins
