tags 400001 + patch
thanks
Hi,
Attached is a possible patch to fix this issue. I tested it here by
creating an error in a private module:
$ sudo /var/lib/dpkg/info/linda.postinst configure
WARNING: compile error while trying to byte-compile
/usr/share/linda/checks/shebang.py: File
"/usr/share/linda/checks/shebang.py", line 4
; + beur
^
SyntaxError: invalid syntax
(sid) [EMAIL PROTECTED]:~/local/debian$ echo $?
0
Note however that the problem only existed with private modules since the
public modules are byte-compiled by compile_all which is spawned as a
separate process and whose return value we don't check. However the process
displays similar warnings.
For consistency of output I decided to ask compile() to raise an exception but
in fact it's not really needed. I could have checked only the IOError
exception (or only the generic one).
Feel free to adapt to suit your needs.
Cheers,
--
Raphaël Hertzog
Premier livre français sur Debian GNU/Linux :
http://www.ouaza.com/livre/admin-debian/
diff -Nru /tmp/9tKXsR3naN/python-support-0.5.5/debian/changelog
/tmp/9DkRb9y0Lf/python-support-0.5.6/debian/changelog
--- /tmp/9tKXsR3naN/python-support-0.5.5/debian/changelog 2006-11-14
21:27:26.000000000 +0100
+++ /tmp/9DkRb9y0Lf/python-support-0.5.6/debian/changelog 2006-11-23
14:12:08.000000000 +0100
@@ -1,3 +1,11 @@
+python-support (0.5.6) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Don't raise IOError while trying to byte-compile an *.py file (for example,
+ when the file is a symlink to a non-existent file). Closes: #400001
+
+ -- Raphael Hertzog <[EMAIL PROTECTED]> Thu, 23 Nov 2006 14:10:25 +0100
+
python-support (0.5.5) unstable; urgency=high
* dh_pysupport, pysupport-movemodules, debian/rules,
diff -Nru /tmp/9tKXsR3naN/python-support-0.5.5/update-python-modules
/tmp/9DkRb9y0Lf/python-support-0.5.6/update-python-modules
--- /tmp/9tKXsR3naN/python-support-0.5.5/update-python-modules 2006-09-22
21:12:04.000000000 +0200
+++ /tmp/9DkRb9y0Lf/python-support-0.5.6/update-python-modules 2006-11-23
14:19:45.000000000 +0100
@@ -6,7 +6,7 @@
import sys,os,os.path
from optparse import OptionParser
-from py_compile import compile
+from py_compile import compile, PyCompileError
basepath='/var/lib/python-support'
sourcepath='/usr/share/python-support'
@@ -87,7 +87,15 @@
if file.endswith('.py'):
fullpath=os.path.join(basedir,dir,file)
debug("compile "+fullpath+'c')
- compile(fullpath)
+ try:
+ # Not that compile doesn't raise PyCompileError by default
+ compile(fullpath, doraise=True)
+ except IOError, (errno, strerror):
+ print >>sys.stderr, "WARNING: I/O error while trying to byte-compile %s
(%s): %s" % (fullpath, errno, strerror)
+ except PyCompileError, inst:
+ print >>sys.stderr, "WARNING: compile error while trying to byte-compile
%s: %s" % (fullpath, inst.msg)
+ except:
+ print >>sys.stderr, "WARNING: unexpected error while trying to
byte-compile %s: %s" % (fullpath, sys.exc_info()[0])
def clean_simple(basedir,dir,file):
if file.endswith('.py'):