]> granicus.if.org Git - python/commitdiff
Minimal changes to make the "freeze" tool work again.
authorGuido van Rossum <guido@python.org>
Tue, 12 Jun 2007 00:28:30 +0000 (00:28 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 12 Jun 2007 00:28:30 +0000 (00:28 +0000)
There are other issues left, but these were basics (e.g. keys().sort()).

Objects/fileobject.c
Python/ast.c
Tools/freeze/bkfile.py
Tools/freeze/freeze.py
Tools/freeze/makefreeze.py
Tools/freeze/makemakefile.py
Tools/freeze/parsesetup.py
runtests.sh

index 469eacd2f213527d8deef958f3c2f1e1a643b165..2d9fcf9b17d23e82e321987ba137a04cd5c63338 100644 (file)
@@ -265,24 +265,19 @@ cleanup:
 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 *
index b34411ba41ffad19039f96c90627dea1e949390d..b313ef2aa459f2c388c5fbc4b78ded4da0644294 100644 (file)
@@ -193,8 +193,11 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
     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);
index c67a6c415aad956f34a2382f1b0059004cedbbf8..0e895f28169e3ebd552a4cb50828e46d3a2b3f8e 100644 (file)
@@ -21,7 +21,10 @@ class _BkFile:
         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
index 93b1abc3b74f4d3e568c450d57beab37e98d4f6e..80db69ea1d6635cf841b0d26299a51c177ff1f86 100755 (executable)
@@ -386,8 +386,7 @@ def main():
     # 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
index e359db95d25f63d446711b38cb4fa308223cae45..4cd1e96990d981059accb202142056951327a70e 100644 (file)
@@ -33,8 +33,7 @@ def makefreeze(base, dict, debug=0, entry_point=None, fail_import=()):
     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 @@ def writecode(outfp, mod, str):
     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):
index ff8b15a1995bb15bb8bc44d67a13bb8ba06e7040..32e804c551e7544f0a8db66c3aa279fdd8a0148a 100644 (file)
@@ -5,8 +5,7 @@ import os
 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)
index ae0bc43d579ec7ea133f8e518cdada1bc5262488..158847614dcc018c7ae6c51d71b48caff065034c 100644 (file)
@@ -102,8 +102,7 @@ def test():
             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))
index c90460e2fa560d14d51c863744fc6151c9fe2d3c..7372d8ee20c620227c436d4a67773d0ef916c7ff 100755 (executable)
@@ -24,6 +24,9 @@ mkdir -p OUT
 >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 @@ esac
 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 @@ do
     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