Bug#584554: meld: fails on modified CVS files

Andreas Hoenen andreas at hoenen-terstappen.de
Fri Jun 4 14:33:06 UTC 2010


Package: meld
Version: 1.3.1-1
Severity: important
Tags: patch

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

With release 1.3.1-1, meld fails on CVS files that have been modified locally,
which worked properly in release 1.3.0-2.  The exception thrown is:

$ cvs status file1
===================================================================
File: file1            	Status: Locally Modified

   Working revision:	1.1	2010-05-29 16:02:17 +0200
   Repository revision:	1.1	/home/ah/work/vcs_backup/cvs/repos/a/b/c/file1,v
   Commit Identifier:	STUxZ50VmFTJhGAu
   Sticky Tag:		(none)
   Sticky Date:		(none)
   Sticky Options:	(none)

$ meld file1
Traceback (most recent call last):
  File "/usr/lib/meld/task.py", line 130, in iteration
    ret = task()
  File "/usr/lib/meld/vcview.py", line 353, in run_diff_iter
    diff = difffunc()
  File "/usr/lib/meld/vcview.py", line 419, in _command_iter
    r = readfunc()
  File "/usr/lib/meld/misc.py", line 209, in __call__
    self.proc = subprocess.Popen(command, cwd=workdir, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "/usr/lib/python2.5/subprocess.py", line 594, in __init__
    errread, errwrite)
  File "/usr/lib/python2.5/subprocess.py", line 1153, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory: ''

The problem is that variable workdir gets determined as the empty string instead
of None at various locations, which subprocess.Popen() can't handle.  The
obvious workaround patch with mapping '' to None is attached.

Setting severity to important analoguous to meld BTS report #545359, as for
those (like me) that use meld for CVS version control the program is completely
broken.

- -- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages meld depends on:
ii  python                        2.5.4-9    An interactive high-level object-o
ii  python-glade2                 2.17.0-2   GTK+ bindings: Glade support
ii  python-gtk2                   2.17.0-2   Python bindings for the GTK+ widge
ii  python-support                1.0.8      automated rebuilding support for P

Versions of packages meld recommends:
ii  python-gconf                  2.28.1-1   Python bindings for the GConf conf
pn  python-gnome2                 <none>     (no description available)
pn  python-gtksourceview2         <none>     (no description available)
pn  yelp                          <none>     (no description available)

meld suggests no packages.

- -- no debconf information

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkwJDpoACgkQco2LfriI0s60ywCg37MhM3MIPj/fQtBUCSKpxE9a
KGwAoI9nGoYPLjal2nUc95R8bbJytZr3
=GYAa
-----END PGP SIGNATURE-----
-------------- next part --------------
--- /usr/lib/meld/misc.py	2010-06-04 16:06:25.000000000 +0200
+++ /tmp/misc.py	2010-06-04 16:00:14.000000000 +0200
@@ -197,6 +197,8 @@
     When all the data is read, the entire string is yielded.
     If 'workdir' is specified the command is run from that directory.
     """
+    if workdir == '':
+        workdir = None
     class sentinel(object):
         def __init__(self):
             self.proc = None


More information about the pkg-gnome-maintainers mailing list