[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Upload of dpkg 1.14.21 to unstable



Hi,

So, the next upload is ready, there might be still some translation
updates meanwhile, but no other changes for now, if something else comes
up we'll probably queue it for the next upload (which ideally should
only contain translation updates).

Most of the changes have either been pre-aproved, are important fixes,
regressions fixes and/or low-risk to be included. I'm attaching the
debdiff with the uninteresting stuff trimmed down, and links to the git
repo per commit, if you'd prefer each patch attached instead, please
ask and I'll send another mail with them.

If everything seems fine with you, I'll proceed with the upload.


Proposed debian/changelog
=========================

dpkg (1.14.21) unstable; urgency=low

  [ Raphael Hertzog ]
  * Small fix in "3.0 (quilt)" source format when using non-standard name
    of the quilt series.
  * Handle debian.tar.gz files like diff.gz in dpkg-buildpackage and
    dpkg-genchanges to detect the kind of upload.
  * Add "armel" to /usr/share/dpkg/archtable. Closes: #487768
  * Modified Dpkg::BuildOptions to recognize and use spaces as separator
    in DEB_BUILD_OPTIONS (in order to conform with the Debian policy
    ruling established in #430649).
  * Fix dpkg-source to not use -i and -I by default with "1.0" source
    packages. Closes: #495138

  [ Guillem Jover ]
  * When loading the status file fix up any inconsistent package in state
    triggers-awaited w/o the corresponding package with pending triggers.
    Closes: #487637, #486843, #489068
  * Fix --no-act in triggers related code. Closes: #495097
  * Do not assert when dpkg stops processing packages due to too many
    errors occurred while configuring or removing packages.
    Thanks to Ian Jackson <ian@davenant.greenend.org.uk>. Closes: #483655
  * Move lzma from dpkg Suggests to Pre-Depends. Closes: #456332
  * Match description of -si option in dpkg-buildpackage to the one in
    dpkg-genchanges. Closes: #493743
  * Close --status-fd file descriptors on exec, so that they are not
    inherited by the childs. Closes: #471488, #487684
  * State that the preferred front-end is aptitude and replace one instance
    of dselect usage with apt-get. Closes: #483785

  [ Updated manpages translations ]
  * French (Florent Usseil).
  * German (Helge Kreutzmann).

  [ Updated scripts translations ]
  * Russian (Yuri Kozlov). Closes: #490076
  * German (Helge Kreutzmann).

  [ Updated dpkg translations ]
  * Basque (Piarres Beobide). Closes: #490905
  * Korean (Changwoo Ryu).
  * Thai (Theppitak Karoonboonyanan). Closes: #488090
  * Romanian (Eddy Petrișor).
  * Russian (Yuri Kozlov). Closes: #488689
  * Slovak (Ivan Masár). Closes: #488903
  * French (Christian Perrier).

  [ Added dpkg translations ]
  * Lithuanian (Gintautas Miliauskas). Closes: #493326

  [ Updated dselect translations ]
  * Romanian (Eddy Petrișor).


Detailed list of non-translation commits
========================================

Misc fixes
----------

Changes related to dpkg-source v3:

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=9e780c86920150be
  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=de193419c89d9507

Add armel to list of official architectures

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=7e24b87a5367ac4e

dpkg-buildpackage: use space as separator in DEB_BUILD_OPTIONS

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=9f484513e477dc29

dpkg: Move lzma from Suggests to Pre-Depends

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=91798ddd126ee367

Close --status-fd file descriptors on exec

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=8fe053cbfd17ca08

Regression fixes
----------------

Fix up packages in an inconsistent triggers-awaited state

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=587b8d8696cb92a4

Fix --no-act in triggers related code

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=df21e28ec2ea8baf

dpkg: Do not assert when configure or remove produced too many errors

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=5a39b7b59a228dbf

dpkg-source: don't use -i/-I by default for "1.0" source packages

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=21d69014f424f670

Doc fixes
---------

Match -si option description in dpkg-buildpackage to dpkg-genchanges

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=9e212bce41b6a62c

State that the preferred front-end is aptitude

  http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=da41337d96b4b2ef


thanks,
guillem
diff -Nru dpkg-1.14.20/ChangeLog dpkg-1.14.21/ChangeLog
--- dpkg-1.14.20/ChangeLog	2008-06-18 10:33:46.000000000 +0300
+++ dpkg-1.14.21/ChangeLog	2008-08-17 19:01:24.000000000 +0300
@@ -1,3 +1,86 @@
+2008-08-17  Guillem Jover  <guillem@debian.org>
+
+	* configure.ac: Release 1.14.21.
+
+2008-08-17  Guillem Jover  <guillem@debian.org>
+
+	* man/dpkg.1: Change reference to dselect as being the preferred
+	fron-end to aptitude. And 'apt-get dselect-upgrade' to be used to
+	act on the current package selections. Add references to aptitude
+	and apt man pages in 'SEE ALSO'.
+
+2008-08-16  Guillem Jover  <guillem@debian.org>
+
+	* src/main.c (setpipe): Set file descriptors to close on exec.
+
+2008-08-15  Guillem Jover  <guillem@debian.org>
+
+	* scripts/dpkg-buildpackage.pl (usage): Fix description of -si option.
+	* man/dpkg-buildpackage.1: Match description of -si option with the
+	one from dpkg-genchanges.1.
+
+2008-08-15  Raphael Hertzog  <hertzog@debian.org>
+
+	* Dpkg/Source/Package.pm (new): Call init_options() only if
+	initialize() has been called as it's supposed to be called
+	only after the object has been upgraded to its target type.
+	(init_options): add a comment that explains that this function is
+	not called by Dpkg::Source::Package::V1::init_options() and
+	render the function more robust.
+
+2008-08-15  Ian Jackson  <ian@davenant.greenend.org.uk>
+
+	* src/packages.c (process_queue): When onerr_abort is bigger than 0
+	return instead of breaking out of the loop, to avoid wrongly
+	asserting that !queue.length.
+
+2008-08-15  Guillem Jover  <guillem@debian.org>
+
+	* lib/dbmodify.c (modstatdb_note): Do not call modstatdb_note_core if
+	cstatus does not allow writting. Move the core functionallity to ...
+	(modstatdb_note_core): ... here. New function.
+	* src/help.c (post_postinst_tasks_core): Do not call trig_incorporate
+	if running under --no-act.
+	* src/trigproc.c (trigproc): Do not call maintainer_script_postinst
+	if running under --no-act.
+	(trig_transitional_activate): Do not call trig_file_interests_save
+	if cstatus does not allow writting.
+
+2008-08-15  Guillem Jover  <guillem@debian.org>
+
+	* lib/dpkg-db.h (trig_enqueue_awaited_pend): New function prototype.
+	(trig_fixup_awaiters): Likewise.
+	* lib/dbmodify.c (modstatdb_init): Call trig_fixup_awaiters.
+	* lib/fields.c (f_trigaw): Call trig_enqueue_awaited_pend.
+	* lib/triglib.c (struct pkg_list): New type.
+	(trig_awaited_pend_head): New variable.
+	(trig_enqueue_awaited_pend): New function definition.
+	(trig_fixup_awaiters): Likewise.
+
+2008-06-24  Raphael Hertzog  <hertzog@debian.org>
+
+	* debian/archtable: Add armel.
+
+2008-06-21  Raphael Hertzog  <hertzog@debian.org>
+
+	* scripts/dpkg-buildpackage.pl, scripts/dpkg-genchanges.pl: Treat
+	debian.tar.gz files (used by 3.0 (quilt) source packages) like
+	diff.gz files when it comes to detection of the kind of upload.
+
+2008-06-21  Raphael Hertzog  <hertzog@debian.org>
+
+	* scripts/Dpkg/Source/Package/V3/quilt.pm: Define QUILT_SERIES
+	when running quilt in order to be able to use quilt series with
+	non-standard names (like debian.series or ubuntu.series).
+
+2008-06-18  Raphael Hertzog  <hertzog@debian.org>
+
+	* configure.ac: Bump version to 1.14.21~.
+
+2008-06-18  Raphael Hertzog  <hertzog@debian.org>
+
+	* configure.ac: Release 1.14.20.
+
 2008-06-16  Guillem Jover  <guillem@debian.org>
 
 	* lib/triglib.c (trig_file_interests_ensure): Pass the proper mask
diff -Nru dpkg-1.14.20/configure.ac dpkg-1.14.21/configure.ac
--- dpkg-1.14.20/configure.ac	2008-06-18 10:34:50.000000000 +0300
+++ dpkg-1.14.21/configure.ac	2008-08-17 19:01:10.000000000 +0300
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([dpkg], [1.14.20], [debian-dpkg@lists.debian.org])
+AC_INIT([dpkg], [1.14.21], [debian-dpkg@lists.debian.org])
 AC_CONFIG_SRCDIR([lib/dpkg.h])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_AUX_DIR([config])
diff -Nru dpkg-1.14.20/debian/archtable dpkg-1.14.21/debian/archtable
--- dpkg-1.14.20/debian/archtable	2007-07-28 18:29:49.000000000 +0300
+++ dpkg-1.14.21/debian/archtable	2008-08-15 09:14:39.000000000 +0300
@@ -17,6 +17,7 @@
 alpha-linux-gnu			alpha
 x86_64-linux-gnu		amd64
 arm-linux-gnu			arm
+arm-linux-gnueabi		armel
 hppa-linux-gnu			hppa
 m68k-linux-gnu			m68k
 mips-linux-gnu			mips
diff -Nru dpkg-1.14.20/debian/control dpkg-1.14.21/debian/control
--- dpkg-1.14.20/debian/control	2008-06-18 10:33:27.000000000 +0300
+++ dpkg-1.14.21/debian/control	2008-08-15 09:29:15.000000000 +0300
@@ -18,11 +18,11 @@
 Package: dpkg
 Architecture: any
 Essential: yes
-Pre-Depends: ${shlibs:Depends}, coreutils (>= 5.93-1)
+Pre-Depends: ${shlibs:Depends}, coreutils (>= 5.93-1), lzma
 Conflicts: sysvinit (<< 2.82-1), dpkg-iasearch (<< 0.11),
  dpkg-dev (<< 1.14.16), apt (<< 0.7.7), aptitude (<< 0.4.7-1)
 Replaces: manpages-de (<= 0.4-3), manpages-pl (<= 20051117-1)
-Suggests: apt, lzma
+Suggests: apt
 Description: Debian package management system
  This package privides the low-level infrastructure for handling the
  installation and removal of Debian software packages.
diff -Nru dpkg-1.14.20/lib/dbmodify.c dpkg-1.14.21/lib/dbmodify.c
--- dpkg-1.14.20/lib/dbmodify.c	2008-06-18 10:33:27.000000000 +0300
+++ dpkg-1.14.21/lib/dbmodify.c	2008-08-15 09:29:15.000000000 +0300
@@ -196,6 +196,7 @@
     uvb.buf= m_malloc(uvb.size);
   }
 
+  trig_fixup_awaiters(cstatus);
   trig_incorporate(cstatus, admindir);
 
   return cstatus;
@@ -240,6 +241,41 @@
   free(updatefnbuf);
 }
 
+static void
+modstatdb_note_core(struct pkginfo *pkg)
+{
+  assert(cstatus >= msdbrw_write);
+
+  varbufreset(&uvb);
+  varbufrecord(&uvb, pkg, &pkg->installed);
+
+  if (fwrite(uvb.buf, 1, uvb.used, importanttmp) != uvb.used)
+    ohshite(_("unable to write updated status of `%.250s'"), pkg->name);
+  if (fflush(importanttmp))
+    ohshite(_("unable to flush updated status of `%.250s'"), pkg->name);
+  if (ftruncate(fileno(importanttmp), uvb.used))
+    ohshite(_("unable to truncate for updated status of `%.250s'"), pkg->name);
+  if (fsync(fileno(importanttmp)))
+    ohshite(_("unable to fsync updated status of `%.250s'"), pkg->name);
+  if (fclose(importanttmp))
+    ohshite(_("unable to close updated status of `%.250s'"), pkg->name);
+  sprintf(updatefnrest, IMPORTANTFMT, nextupdate);
+  if (rename(importanttmpfile, updatefnbuf))
+    ohshite(_("unable to install updated status of `%.250s'"), pkg->name);
+
+  /* Have we made a real mess? */
+  assert(strlen(updatefnrest) <= IMPORTANTMAXLEN);
+
+  nextupdate++;
+
+  if (nextupdate > MAXUPDATES) {
+    modstatdb_checkpoint();
+    nextupdate = 0;
+  }
+
+  createimptmp();
+}
+
 /* Note: If anyone wants to set some triggers-pending, they must also
  * set status appropriately, or we will undo it. That is, it is legal
  * to call this when pkg->status and pkg->trigpend_head disagree and
@@ -249,8 +285,6 @@
 void modstatdb_note(struct pkginfo *pkg) {
   struct trigaw *ta;
 
-  assert(cstatus >= msdbrw_write);
-
   onerr_abort++;
 
   if (pkg->status != stat_triggerspending &&
@@ -267,31 +301,8 @@
 	      versiondescribe(&pkg->installed.version, vdew_nonambig));
   statusfd_send("status: %s: %s", pkg->name, statusinfos[pkg->status].name);
 
-  varbufreset(&uvb);
-  varbufrecord(&uvb, pkg, &pkg->installed);
-  if (fwrite(uvb.buf, 1, uvb.used, importanttmp) != uvb.used)
-    ohshite(_("unable to write updated status of `%.250s'"), pkg->name);
-  if (fflush(importanttmp))
-    ohshite(_("unable to flush updated status of `%.250s'"), pkg->name);
-  if (ftruncate(fileno(importanttmp), uvb.used))
-    ohshite(_("unable to truncate for updated status of `%.250s'"), pkg->name);
-  if (fsync(fileno(importanttmp)))
-    ohshite(_("unable to fsync updated status of `%.250s'"), pkg->name);
-  if (fclose(importanttmp))
-    ohshite(_("unable to close updated status of `%.250s'"), pkg->name);
-  sprintf(updatefnrest, IMPORTANTFMT, nextupdate);
-  if (rename(importanttmpfile, updatefnbuf))
-    ohshite(_("unable to install updated status of `%.250s'"), pkg->name);
-  assert(strlen(updatefnrest)<=IMPORTANTMAXLEN); /* or we've made a real mess */
-
-  nextupdate++;  
-
-  if (nextupdate > MAXUPDATES) {
-    modstatdb_checkpoint();
-    nextupdate= 0;
-  }
-
-  createimptmp();
+  if (cstatus >= msdbrw_write)
+    modstatdb_note_core(pkg);
 
   if (!pkg->trigpend_head && pkg->othertrigaw_head) {
     /* Automatically remove us from other packages' Triggers-Awaited.
diff -Nru dpkg-1.14.20/lib/dpkg-db.h dpkg-1.14.21/lib/dpkg-db.h
--- dpkg-1.14.20/lib/dpkg-db.h	2008-06-18 10:33:27.000000000 +0300
+++ dpkg-1.14.21/lib/dpkg-db.h	2008-08-15 09:29:14.000000000 +0300
@@ -289,6 +289,9 @@
 int trig_note_aw(struct pkginfo *pend, struct pkginfo *aw);
 void trig_clear_awaiters(struct pkginfo *notpend);
 
+void trig_enqueue_awaited_pend(struct pkginfo *pend);
+void trig_fixup_awaiters(enum modstatdb_rw cstatus);
+
 void trig_file_interests_ensure(void);
 void trig_file_interests_save(void);
 
diff -Nru dpkg-1.14.20/lib/fields.c dpkg-1.14.21/lib/fields.c
--- dpkg-1.14.20/lib/fields.c	2008-06-18 10:33:27.000000000 +0300
+++ dpkg-1.14.21/lib/fields.c	2008-08-15 09:29:14.000000000 +0300
@@ -543,6 +543,8 @@
     if (!trig_note_aw(pend, aw))
       parseerr(NULL, filename, lno, warnto, warncount, aw, 0,
                _("duplicate awaited trigger package `%.255s'"), word);
+
+    trig_enqueue_awaited_pend(pend);
   }
 }
 
diff -Nru dpkg-1.14.20/lib/triglib.c dpkg-1.14.21/lib/triglib.c
--- dpkg-1.14.20/lib/triglib.c	2008-06-18 10:33:27.000000000 +0300
+++ dpkg-1.14.21/lib/triglib.c	2008-08-15 09:29:14.000000000 +0300
@@ -169,6 +169,52 @@
 	}
 }
 
+/* FIXME: switch to use the generic pkg list for lenny+1 */
+struct pkg_list {
+	struct pkg_list *next;
+	struct pkginfo *pkg;
+};
+
+static struct pkg_list *trig_awaited_pend_head;
+
+void
+trig_enqueue_awaited_pend(struct pkginfo *pend)
+{
+	struct pkg_list *tp;
+
+	for (tp = trig_awaited_pend_head; tp; tp = tp->next)
+		if (tp->pkg == pend)
+			return;
+
+	tp = nfmalloc(sizeof(*tp));
+	tp->pkg = pend;
+	tp->next = trig_awaited_pend_head;
+	trig_awaited_pend_head = tp;
+}
+
+/*
+ * Fix up packages in state triggers-awaited w/o the corresponding package
+ * with pending triggers. This can happen when dpkg was interrupted
+ * while in modstatdb_note, and the package in triggers-pending had its
+ * state modified but dpkg could not clearing the awaiters.
+ *
+ * XXX: possibly get rid of some of the checks done somewhere else for
+ *      this condition at run-time.
+ */
+void
+trig_fixup_awaiters(enum modstatdb_rw cstatus)
+{
+	struct pkg_list *tp;
+
+	if (cstatus < msdbrw_write)
+		return;
+
+	for (tp = trig_awaited_pend_head; tp; tp = tp->next)
+		if (!tp->pkg->trigpend_head)
+			trig_clear_awaiters(tp->pkg);
+	trig_awaited_pend_head = NULL;
+}
+
 /*---------- generalised handling of trigger kinds ----------*/
 
 static const struct trigkindinfo tki_explicit, tki_file, tki_unknown;
diff -Nru dpkg-1.14.20/man/dpkg.1 dpkg-1.14.21/man/dpkg.1
--- dpkg-1.14.20/man/dpkg.1	2008-06-18 10:33:27.000000000 +0300
+++ dpkg-1.14.21/man/dpkg.1	2008-08-17 18:05:07.000000000 +0300
@@ -19,7 +19,7 @@
 .SH DESCRIPTION
 \fBdpkg\fP is a tool to install, build, remove and manage
 Debian packages. The primary and more user-friendly
-front-end for \fBdpkg\fP is \fBdselect\fP(1). \fBdpkg\fP itself is
+front-end for \fBdpkg\fP is \fBaptitude\fP(1). \fBdpkg\fP itself is
 controlled entirely via command line parameters, which consist of exactly
 one action and zero or more options. The action-parameter tells \fBdpkg\fP
 what to do and options control the behavior of the action in some way.
@@ -641,7 +641,7 @@
 Note that this will not actually install or remove anything, but just
 set the selection state on the requested packages. You will need some
 other application to actually download and install the requested
-packages. For example, run \fBdselect\fP and choose \fIInstall\fP.
+packages. For example, run \fBapt\-get dselect\-upgrade\fP.
 
 Ordinarily, you will find that \fBdselect\fP(1) provides a more
 convenient way to modify the package selection states.
@@ -652,6 +652,8 @@
 following packages: \fBapt\fR, \fBaptitude\fR and \fBdebsums\fR.
 .
 .SH SEE ALSO
+\fBaptitude\fP(1),
+\fBapt\fP(1),
 \fBdselect\fP(1),
 \fBdpkg\-deb\fP(1),
 \fBdpkg\-query\fP(1),
diff -Nru dpkg-1.14.20/man/dpkg-buildpackage.1 dpkg-1.14.21/man/dpkg-buildpackage.1
--- dpkg-1.14.20/man/dpkg-buildpackage.1	2008-05-05 20:07:01.000000000 +0300
+++ dpkg-1.14.21/man/dpkg-buildpackage.1	2008-08-17 18:05:07.000000000 +0300
@@ -1,4 +1,4 @@
-.TH dpkg\-buildpackage 1 "2008-03-14" "Debian Project" "dpkg utilities"
+.TH dpkg\-buildpackage 1 "2008-08-15" "Debian Project" "dpkg utilities"
 .SH NAME
 dpkg\-buildpackage \- build binary or source packages from sources
 .
@@ -30,11 +30,10 @@
 haven't been used).
 .TP
 .B \-si
-By default, or if specified, the original source will be included if the
-version number ends in
-.BR \-0 " or " \-1 ,
-i.e. if the Debian revision part of the version number is
-.BR 0 " or " 1 .
+By default, or if specified, the original source will be included only if
+the upstream version number (the version without epoch and without Debian
+revision) differs from the upstream version number of the previous
+changelog entry.
 .TP
 .B \-sa
 Forces the inclusion of the original source.
diff -Nru dpkg-1.14.20/scripts/Dpkg/BuildOptions.pm dpkg-1.14.21/scripts/Dpkg/BuildOptions.pm
--- dpkg-1.14.20/scripts/Dpkg/BuildOptions.pm	2008-06-18 10:33:30.000000000 +0300
+++ dpkg-1.14.21/scripts/Dpkg/BuildOptions.pm	2008-07-19 19:10:22.000000000 +0300
@@ -3,6 +3,9 @@
 use strict;
 use warnings;
 
+use Dpkg::Gettext;
+use Dpkg::ErrorHandling qw(warning);
+
 sub parse {
     my ($env) = @_;
 
@@ -12,16 +15,16 @@
 
     my %opts;
 
-    foreach (split(/[\s,]+/, $env)) {
-	# FIXME: This is pending resolution of Debian bug #430649
-	/^([a-z][a-z0-9_-]*)(=(\w*))?$/;
+    foreach (split(/\s+/, $env)) {
+	unless (/^([a-z][a-z0-9_-]*)(=(\S*))?$/) {
+            warning(_g("invalid flag in DEB_BUILD_OPTIONS: %s"), $_);
+            next;
+        }
 
 	my ($k, $v) = ($1, $3 || '');
 
 	# Sanity checks
-	if (!$k) {
-	    next;
-	} elsif ($k =~ /^(noopt|nostrip|nocheck)$/ && length($v)) {
+	if ($k =~ /^(noopt|nostrip|nocheck)$/ && length($v)) {
 	    $v = '';
 	} elsif ($k eq 'parallel' && $v !~ /^-?\d+$/) {
 	    next;
@@ -37,18 +40,15 @@
     my ($opts, $overwrite) = @_;
     $overwrite = 1 if not defined($overwrite);
 
-    my $env = $overwrite ? '' : $ENV{DEB_BUILD_OPTIONS}||'';
-    if ($env) { $env .= ',' }
-
+    my $new = {};
+    $new = parse() unless $overwrite;
     while (my ($k, $v) = each %$opts) {
-	if ($v) {
-	    $env .= "$k=$v,";
-	} else {
-	    $env .= "$k,";
-	}
+        $new->{$k} = $v;
     }
 
-    $ENV{DEB_BUILD_OPTIONS} = $env if $env;
+    my $env = join(" ", map { $new->{$_} ? $_ . "=" . $new->{$_} : $_ } sort keys %$new);
+
+    $ENV{DEB_BUILD_OPTIONS} = $env;
     return $env;
 }
 
diff -Nru dpkg-1.14.20/scripts/Dpkg/Source/Package/V3/quilt.pm dpkg-1.14.21/scripts/Dpkg/Source/Package/V3/quilt.pm
--- dpkg-1.14.20/scripts/Dpkg/Source/Package/V3/quilt.pm	2008-06-18 10:33:30.000000000 +0300
+++ dpkg-1.14.21/scripts/Dpkg/Source/Package/V3/quilt.pm	2008-08-15 09:14:41.000000000 +0300
@@ -105,8 +105,13 @@
     unless (File::Spec->file_name_is_absolute($absdir)) {
         $absdir = File::Spec->rel2abs($dir);
     }
+    my $series = $self->get_series_file($dir);
+    unless (File::Spec->file_name_is_absolute($series)) {
+        $series = File::Spec->rel2abs($series);
+    }
     my %opts = (
-        env => { QUILT_PATCHES => "$absdir/debian/patches" },
+        env => { QUILT_PATCHES => "$absdir/debian/patches",
+                 QUILT_SERIES => $series },
         'chdir' => $dir,
         'exec' => [ 'quilt', '--quiltrc', '/dev/null', @$params ],
         %more_opts
diff -Nru dpkg-1.14.20/scripts/Dpkg/Source/Package.pm dpkg-1.14.21/scripts/Dpkg/Source/Package.pm
--- dpkg-1.14.20/scripts/Dpkg/Source/Package.pm	2008-06-18 10:33:30.000000000 +0300
+++ dpkg-1.14.21/scripts/Dpkg/Source/Package.pm	2008-08-16 00:04:42.000000000 +0300
@@ -100,22 +100,27 @@
         'options' => {},
     };
     bless $self, $class;
+    if (exists $args{'options'}) {
+        $self->{'options'} = $args{'options'};
+    }
     if (exists $args{"filename"}) {
         $self->initialize($args{"filename"});
+        $self->init_options();
     }
-    if (exists $args{"options"}) {
-        $self->{'options'} = $args{'options'};
-    }
-    $self->init_options();
     return $self;
 }
 
 sub init_options {
     my ($self) = @_;
     # Use full ignore list by default
+    # note: this function is not called by V1 packages
     $self->{'options'}{'diff_ignore_regexp'} ||= $diff_ignore_default_regexp;
-    $self->{'options'}{'tar_ignore'} = [ @tar_ignore_default_pattern ]
+    if (defined $self->{'options'}{'tar_ignore'}) {
+        $self->{'options'}{'tar_ignore'} = [ @tar_ignore_default_pattern ]
             unless @{$self->{'options'}{'tar_ignore'}};
+    } else {
+        $self->{'options'}{'tar_ignore'} = [ @tar_ignore_default_pattern ];
+    }
 }
 
 sub initialize {
diff -Nru dpkg-1.14.20/scripts/dpkg-buildpackage.pl dpkg-1.14.21/scripts/dpkg-buildpackage.pl
--- dpkg-1.14.20/scripts/dpkg-buildpackage.pl	2008-05-05 20:07:01.000000000 +0300
+++ dpkg-1.14.21/scripts/dpkg-buildpackage.pl	2008-08-16 00:04:43.000000000 +0300
@@ -59,7 +59,7 @@
   -m<maint>      maintainer for package is <maint>.    }
   -e<maint>      maintainer for release is <maint>.    } only passed
   -C<descfile>   changes are described in <descfile>.  } to dpkg-genchanges
-  -si (default)  src includes orig for rev. 0 or 1.    }
+  -si (default)  src includes orig if new upstream.    }
   -sa            uploaded src always includes orig.    }
   -sd            uploaded src is diff and .dsc only.   }
   -sn            force Debian native source format.      }
@@ -414,10 +414,10 @@
 close OUT or syserr(_g('write changes file'));
 
 my $srcmsg;
-sub fileomitted { return $files !~ /$_[0]/ }
+sub fileomitted($) { return $files !~ /$_[0]/ }
 if (fileomitted '\.deb') {
     # source only upload
-    if (fileomitted "\.diff\.$comp_regex") {
+    if (fileomitted "\.diff\.$comp_regex" and fileomitted "\.debian\.tar\.$comp_regex") {
 	$srcmsg = _g('source only upload: Debian-native package');
     } elsif (fileomitted "\.orig\.tar\.$comp_regex") {
 	$srcmsg = _g('source only, diff-only upload (original source NOT included)');
@@ -428,7 +428,7 @@
     $srcmsg = _g('full upload (original source is included)');
     if (fileomitted '\.dsc') {
 	$srcmsg = _g('binary only upload (no source included)');
-    } elsif (fileomitted "\.diff\.$comp_regex") {
+    } elsif (fileomitted "\.diff\.$comp_regex" and fileomitted "\.debian\.tar\.$comp_regex") {
 	$srcmsg = _g('full upload; Debian-native package (full source is included)');
     } elsif (fileomitted "\.orig\.tar\.$comp_regex") {
 	$srcmsg = _g('binary and diff upload (original source NOT included)');
diff -Nru dpkg-1.14.20/scripts/dpkg-genchanges.pl dpkg-1.14.21/scripts/dpkg-genchanges.pl
--- dpkg-1.14.20/scripts/dpkg-genchanges.pl	2008-05-05 20:07:01.000000000 +0300
+++ dpkg-1.14.21/scripts/dpkg-genchanges.pl	2008-08-15 09:14:41.000000000 +0300
@@ -453,12 +453,12 @@
 
     if ((($sourcestyle =~ m/i/ && not($include_tarball)) ||
 	 $sourcestyle =~ m/d/) &&
-	grep(m/\.diff\.$comp_regex$/,@sourcefiles)) {
+	grep(m/\.(debian\.tar|diff)\.$comp_regex$/,@sourcefiles)) {
 	$origsrcmsg= _g("not including original source code in upload");
 	@sourcefiles= grep(!m/\.orig\.tar\.$comp_regex$/,@sourcefiles);
     } else {
 	if ($sourcestyle =~ m/d/ &&
-	    !grep(m/\.diff\.$comp_regex$/,@sourcefiles)) {
+	    !grep(m/\.(debian\.tar|diff)\.$comp_regex$/,@sourcefiles)) {
 	    warning(_g("ignoring -sd option for native Debian package"));
 	}
         $origsrcmsg= _g("including full source code in upload");
diff -Nru dpkg-1.14.20/scripts/t/300_Dpkg_BuildOptions.t dpkg-1.14.21/scripts/t/300_Dpkg_BuildOptions.t
--- dpkg-1.14.20/scripts/t/300_Dpkg_BuildOptions.t	2008-06-18 10:33:31.000000000 +0300
+++ dpkg-1.14.21/scripts/t/300_Dpkg_BuildOptions.t	2008-07-19 19:10:22.000000000 +0300
@@ -7,7 +7,14 @@
 
 use_ok('Dpkg::BuildOptions');
 
-$ENV{DEB_BUILD_OPTIONS} = 'noopt,foonostripbar,parallel=3,bazNOCHECK';
+{
+    no warnings;
+    # Disable warnings related to invalid values fed during
+    # the tests
+    $Dpkg::ErrorHandling::quiet_warnings = 1;
+}
+
+$ENV{DEB_BUILD_OPTIONS} = 'noopt foonostripbar parallel=3 bazNOCHECK';
 
 my $dbo = Dpkg::BuildOptions::parse();
 
@@ -26,14 +33,14 @@
 
 is_deeply($dbo, \%dbo, 'parse');
 
-$dbo = Dpkg::BuildOptions::parse('no opt,no-strip,parallel = 5,nocheck');
+$dbo = Dpkg::BuildOptions::parse('no opt no-strip parallel = 5 nocheck');
 
 is_deeply($dbo, \%dbo2, 'parse (param)');
 
 $dbo->{parallel} = 5;
 $dbo->{noopt} = '';
 
-my $env = Dpkg::BuildOptions::set($dbo,1);
+my $env = Dpkg::BuildOptions::set($dbo, 1);
 
 is($ENV{DEB_BUILD_OPTIONS}, $env, 'set (return value)');
 is_deeply(Dpkg::BuildOptions::parse(), $dbo, 'set (env)');
@@ -41,4 +48,4 @@
 $ENV{DEB_BUILD_OPTIONS} = 'foobar';
 $dbo = { noopt => '' };
 $env = Dpkg::BuildOptions::set($dbo, 0);
-is($env, "foobar,noopt,", 'set (append)');
+is($env, "foobar noopt", 'set (append)');
diff -Nru dpkg-1.14.20/src/help.c dpkg-1.14.21/src/help.c
--- dpkg-1.14.20/src/help.c	2008-06-18 10:33:31.000000000 +0300
+++ dpkg-1.14.21/src/help.c	2008-08-15 09:29:15.000000000 +0300
@@ -239,8 +239,10 @@
 {
   modstatdb_note(pkg);
 
-  debug(dbg_triggersdetail, "post_postinst_tasks_core - trig_incorporate");
-  trig_incorporate(msdbrw_write, admindir);
+  if (!f_noact) {
+    debug(dbg_triggersdetail, "post_postinst_tasks_core - trig_incorporate");
+    trig_incorporate(msdbrw_write, admindir);
+  }
 }
 
 static void
diff -Nru dpkg-1.14.20/src/main.c dpkg-1.14.21/src/main.c
--- dpkg-1.14.20/src/main.c	2008-06-18 10:33:31.000000000 +0300
+++ dpkg-1.14.21/src/main.c	2008-08-16 00:10:02.000000000 +0300
@@ -299,6 +299,8 @@
   if (*ep || v > INT_MAX)
     badusage(_("invalid integer for --%s: `%.250s'"),cip->olong,value);
 
+  setcloexec(v, _("<package status and progress file descriptor>"));
+
   lastpipe= cip->parg;
   if (*lastpipe) {
     (*lastpipe)->next= nfmalloc(sizeof(struct pipef));
diff -Nru dpkg-1.14.20/src/packages.c dpkg-1.14.21/src/packages.c
--- dpkg-1.14.20/src/packages.c	2008-06-18 10:33:31.000000000 +0300
+++ dpkg-1.14.21/src/packages.c	2008-08-15 09:29:15.000000000 +0300
@@ -228,7 +228,8 @@
       /* give up on it from the point of view of other packages, ie reset istobe */
       pkg->clientdata->istobe= itb_normal;
       error_unwind(ehflag_bombout);
-      if (onerr_abort > 0) break;
+      if (onerr_abort > 0)
+        return;
       continue;
     }
     push_error_handler(&ejbuf,print_error_perpackage,pkg->name);
diff -Nru dpkg-1.14.20/src/trigproc.c dpkg-1.14.21/src/trigproc.c
--- dpkg-1.14.20/src/trigproc.c	2008-05-05 20:07:01.000000000 +0300
+++ dpkg-1.14.21/src/trigproc.c	2008-08-15 09:29:15.000000000 +0300
@@ -298,9 +298,11 @@
 		pkg->status = stat_halfconfigured;
 		modstatdb_note(pkg);
 
-		sincenothing = 0;
-		maintainer_script_postinst(pkg, "triggered",
-		                           namesarg.buf + 1, NULL);
+		if (!f_noact) {
+			sincenothing = 0;
+			maintainer_script_postinst(pkg, "triggered",
+			                           namesarg.buf + 1, NULL);
+		}
 
 		/* This is to cope if the package triggers itself: */
 		pkg->status = pkg->trigaw.head ? stat_triggersawaited :
@@ -361,10 +363,10 @@
 		              transitional_interest_callback_ro, NULL, pkg);
 	}
 	iterpkgend(it);
-	if (cstatus >= msdbrw_write)
+	if (cstatus >= msdbrw_write) {
 		modstatdb_checkpoint();
-
-	trig_file_interests_save();
+		trig_file_interests_save();
+	}
 }
 
 /*========== hook setup ==========*/

Reply to: