← Back to team overview

apport-hackers team mailing list archive

[Merge] lp:~ev/apport/1059621 into lp:apport

 

Evan Dandrea has proposed merging lp:~ev/apport/1059621 into lp:apport.

Requested reviews:
  Apport upstream developers (apport-hackers)

For more details, see:
https://code.launchpad.net/~ev/apport/1059621/+merge/127445

Bug 1059621 explains how a crash in gnat-gps is currently breaking apport-retrace. This is because it has a symlink to a directory that one of its dependencies (gnat-gps-common) creates. Dpkg -i handles this just fine, but dpkg -x does not.
-- 
https://code.launchpad.net/~ev/apport/1059621/+merge/127445
Your team Apport upstream developers is requested to review the proposed merge of lp:~ev/apport/1059621 into lp:apport.
=== modified file 'NEWS'
--- NEWS	2012-10-01 09:59:21 +0000
+++ NEWS	2012-10-02 10:19:24 +0000
@@ -1,7 +1,11 @@
 This file summarizes the major and interesting changes for each release. For a
 detailled list of changes, please see ChangeLog.
 
+<<<<<<< TREE
 2.6.1 (2012-10-01):
+=======
+2.5.4 (2012-09-28):
+>>>>>>> MERGE-SOURCE
 -------------------
  * setup.py: Specify "-source 1.5" javac option as well, to avoid build failure
    with OpenJDK 7.

=== modified file 'apport/ui.py'
--- apport/ui.py	2012-10-01 09:59:21 +0000
+++ apport/ui.py	2012-10-02 10:19:24 +0000
@@ -13,7 +13,11 @@
 # option) any later version.  See http://www.gnu.org/copyleft/gpl.html for
 # the full text of the license.
 
+<<<<<<< TREE
 __version__ = '2.6.1'
+=======
+__version__ = '2.5.4'
+>>>>>>> MERGE-SOURCE
 
 import glob, sys, os.path, optparse, traceback, locale, gettext
 import errno, zlib

=== modified file 'backends/packaging-apt-dpkg.py'
--- backends/packaging-apt-dpkg.py	2012-09-28 15:12:27 +0000
+++ backends/packaging-apt-dpkg.py	2012-10-02 10:19:24 +0000
@@ -29,6 +29,7 @@
 
 import apport
 from apport.packaging import PackageInfo
+import apt_inst
 
 
 class __AptDpkgPackageInfo(PackageInfo):
@@ -665,7 +666,10 @@
             print('Extracting downloaded debs...')
         for i in fetcher.items:
             if not permanent_rootdir or os.path.getctime(i.destfile) > last_written:
-                subprocess.check_call(['dpkg', '-x', i.destfile, rootdir])
+                # Don't use 'dpkg -x' as it lacks the 'skip if target directory
+                # exists' logic present in other parts of dpkg.
+                df = apt_inst.DebFile(i.destfile)
+                df.data.extractall(rootdir)
             real_pkgs.remove(os.path.basename(i.destfile).split('_', 1)[0])
 
         if tmp_aptroot: