Procházet zdrojové kódy

Merge commit '1.16.1.1'

Raphaël Hertzog před 14 roky
rodič
revize
d768b53b81

+ 30 - 0
debian/changelog

@@ -48,6 +48,36 @@ dpkg (1.16.2) UNRELEASED; urgency=low
 
  -- Helge Kreutzmann <debian@helgefjell.de>  Fri, 23 Sep 2011 17:29:38 +0200
 
+dpkg (1.16.1.1) unstable; urgency=low
+
+  [ Raphaël Hertzog ]
+  * Fix dpkg-source to not ignore the automatic patch when checking
+    for unrecorded changes. Closes: #643148
+  * Let dpkg-source --commit create debian/patches when required.
+    Closes: #643037
+  * Fix dpkg-buildflags --dump to return 0 as exit code and not 1.
+  * Update dpkg-buildflags(1) to not include quotes in the examples
+    setting DEB_BUILD_MAINT_OPTIONS.
+  * Stop outputting build flags in dpkg-buildpackage as it confuses
+    maintainers who are overriding them in debian/rules and who
+    are not seeing the expected value in the build log.
+  * Fix trigger setup code to not reset the status of packages
+    when they are in a status different from triggers-awaited,
+    triggers-pending or installed. Closes: #644492
+  * Fix dpkg-source to ignore changes on debian/patches/.dpkg-source-applied
+    when building a "2.0" source package. Closes: #642656
+  * Fix buildflags.mk to re-export the environment variables that
+    the maintainer can use to change the build flags. Closes: #644412
+
+  [ Guillem Jover ]
+  * Change dpkg-buildflags to set preprocessor option -D_FORTIFY_SOURCE=2
+    in CPPFLAGS, instead of CFLAGS and CXXFLAGS. Closes: #642521, #643632
+  * Fix typo to correctly set DEB_*_ARCH_BITS instead of DEB_*_ARCH in
+    architecture.mk. Thanks to Thorsten Glaser <tg@mirbsd.org>.
+  * Make dpkg-buildflags disable full relro (bindnow) if relro is not enabled.
+
+ -- Guillem Jover <guillem@debian.org>  Fri, 14 Oct 2011 07:08:31 +0200
+
 dpkg (1.16.1) unstable; urgency=low
 
   [ Raphaël Hertzog ]

+ 2 - 2
man/dpkg-buildflags.1

@@ -175,13 +175,13 @@ value with the "+" and "\-" modifier. For example, to enable the
 "pie" feature and disable the "fortify" feature you can do this
 in \fBdebian/rules\fP:
 .P
-  export DEB_BUILD_MAINT_OPTIONS="hardening=+pie,\-fortify"
+  export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,\-fortify
 .P
 The special feature \fBall\fP can be used to enable or disable all
 hardening features at the same time. Thus disabling everything and
 enabling only "format" and "fortify" can be achieved with:
 .P
-  export DEB_BUILD_MAINT_OPTIONS="hardening=\-all,+format,+fortify"
+  export DEB_BUILD_MAINT_OPTIONS=hardening=\-all,+format,+fortify
 .
 .TP
 .B format

+ 14 - 8
scripts/Dpkg/Source/Package/V2.pm

@@ -287,7 +287,8 @@ sub after_build {
 sub prepare_build {
     my ($self, $dir) = @_;
     $self->{'diff_options'} = {
-        diff_ignore_regexp => $self->{'options'}{'diff_ignore_regexp'},
+        diff_ignore_regexp => $self->{'options'}{'diff_ignore_regexp'} .
+                              '|(^|/)debian/patches/.dpkg-source-applied$',
         include_removal => $self->{'options'}{'include_removal'},
         include_timestamp => $self->{'options'}{'include_timestamp'},
         use_dev_null => 1,
@@ -369,7 +370,8 @@ sub generate_patch {
     subprocerr(_g("copy of the debian directory")) if $?;
 
     # Apply all patches except the last automatic one
-    $self->apply_patches($tmp, skip_auto => 1, usage => 'build');
+    $opts{'skip_auto'} //= 0;
+    $self->apply_patches($tmp, skip_auto => $opts{'skip_auto'}, usage => 'build');
 
     # Create a patch
     my ($difffh, $tmpdiff) = tempfile($self->get_basename(1) . ".diff.XXXXXX",
@@ -500,6 +502,7 @@ sub do_build {
                                         $self->get_autopatch_name());
     my $tmpdiff = $self->generate_patch($dir, order_from => $autopatch,
                                         handle_binary => $handle_binary,
+                                        skip_auto => $self->{'options'}{'auto_commit'},
                                         usage => 'build');
     unless (-z $tmpdiff or $self->{'options'}{'auto_commit'}) {
         info(_g("you can integrate the local changes with %s"),
@@ -510,12 +513,14 @@ sub do_build {
     push @Dpkg::Exit::handlers, sub { unlink($tmpdiff) };
 
     # Install the diff as the new autopatch
-    mkpath(File::Spec->catdir($dir, "debian", "patches"));
-    $autopatch = $self->register_patch($dir, $tmpdiff,
-                                       $self->get_autopatch_name());
-    info(_g("local changes have been recorded in a new patch: %s"), $autopatch)
-        if -e $autopatch;
-    rmdir(File::Spec->catdir($dir, "debian", "patches")); # No check on purpose
+    if ($self->{'options'}{'auto_commit'}) {
+        mkpath(File::Spec->catdir($dir, "debian", "patches"));
+        $autopatch = $self->register_patch($dir, $tmpdiff,
+                                           $self->get_autopatch_name());
+        info(_g("local changes have been recorded in a new patch: %s"),
+             $autopatch) if -e $autopatch;
+        rmdir(File::Spec->catdir($dir, "debian", "patches")); # No check on purpose
+    }
     unlink($tmpdiff) || syserr(_g("cannot remove %s"), $tmpdiff);
     pop @Dpkg::Exit::handlers;
 
@@ -640,6 +645,7 @@ sub commit {
         $patch_name =~ s/\s+/-/g;
         $patch_name =~ s/\///g;
     }
+    mkpath(File::Spec->catdir($dir, "debian", "patches"));
     my $patch = $self->register_patch($dir, $tmpdiff, $patch_name);
     system("sensible-editor", $patch);
     unlink($tmpdiff) || syserr(_g("cannot remove %s"), $tmpdiff);

+ 4 - 2
scripts/Dpkg/Vendor/Debian.pm

@@ -135,8 +135,7 @@ sub add_hardening_flags {
     }
     # Fortify
     if ($use_feature{"fortify"}) {
-	$flags->append("CFLAGS", "-D_FORTIFY_SOURCE=2");
-	$flags->append("CXXFLAGS", "-D_FORTIFY_SOURCE=2");
+	$flags->append("CPPFLAGS", "-D_FORTIFY_SOURCE=2");
     }
     # Format
     if ($use_feature{"format"}) {
@@ -146,6 +145,9 @@ sub add_hardening_flags {
     # Relro
     if ($use_feature{"relro"} and $cpu !~ /^(ia64|hppa|avr32)$/) {
 	$flags->append("LDFLAGS", "-Wl,-z,relro");
+    } else {
+	# Disable full relro if relro is not enabled.
+	$use_feature{"bindnow"} = 0;
     }
     # Bindnow
     if ($use_feature{"bindnow"}) {

+ 1 - 0
scripts/dpkg-buildflags.pl

@@ -136,6 +136,7 @@ if ($action eq "get") {
 	my $value = $build_flags->get($flag);
 	print "$flag=$value\n";
     }
+    exit(0);
 }
 
 exit(1);

+ 0 - 8
scripts/dpkg-buildpackage.pl

@@ -25,7 +25,6 @@ use POSIX;
 use Dpkg;
 use Dpkg::Gettext;
 use Dpkg::ErrorHandling;
-use Dpkg::BuildFlags;
 use Dpkg::BuildOptions;
 use Dpkg::Compression;
 use Dpkg::Version;
@@ -294,13 +293,6 @@ if (defined $parallel) {
     $build_opts->export();
 }
 
-my $build_flags = Dpkg::BuildFlags->new();
-$build_flags->load_config();
-foreach my $flag ($build_flags->list()) {
-    printf(_g("%s: dpkg-buildflags (origin: %s): %s = %s\n"), $progname,
-           $build_flags->get_origin($flag), $flag, $build_flags->get($flag));
-}
-
 my $cwd = cwd();
 my $dir = basename($cwd);
 

+ 2 - 2
scripts/mk/architecture.mk

@@ -7,7 +7,7 @@ dpkg_late_eval ?= $(or $(value DPKG_CACHE_$(1)),$(eval DPKG_CACHE_$(1) := $(shel
 DEB_HOST_ARCH ?= $(call dpkg_late_eval,DEB_HOST_ARCH,dpkg-architecture -qDEB_HOST_ARCH)
 DEB_HOST_ARCH_OS ?= $(call dpkg_late_eval,DEB_HOST_ARCH_OS,dpkg-architecture -qDEB_HOST_ARCH_OS)
 DEB_HOST_ARCH_CPU ?= $(call dpkg_late_eval,DEB_HOST_ARCH_CPU,dpkg-architecture -qDEB_HOST_ARCH_CPU)
-DEB_HOST_ARCH ?= $(call dpkg_late_eval,DEB_HOST_ARCH,dpkg-architecture -qDEB_HOST_ARCH_BITS)
+DEB_HOST_ARCH_BITS ?= $(call dpkg_late_eval,DEB_HOST_ARCH,dpkg-architecture -qDEB_HOST_ARCH_BITS)
 DEB_HOST_ARCH_ENDIAN ?= $(call dpkg_late_eval,DEB_HOST_ARCH_ENDIAN,dpkg-architecture -qDEB_HOST_ARCH_ENDIAN)
 DEB_HOST_GNU_CPU ?= $(call dpkg_late_eval,DEB_HOST_GNU_CPU,dpkg-architecture -qDEB_HOST_GNU_CPU)
 DEB_HOST_GNU_SYSTEM ?= $(call dpkg_late_eval,DEB_HOST_GNU_SYSTEM,dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
@@ -17,7 +17,7 @@ DEB_HOST_MULTIARCH ?= $(call dpkg_late_eval,DEB_HOST_MULTIARCH,dpkg-architecture
 DEB_BUILD_ARCH ?= $(call dpkg_late_eval,DEB_BUILD_ARCH,dpkg-architecture -qDEB_BUILD_ARCH)
 DEB_BUILD_ARCH_OS ?= $(call dpkg_late_eval,DEB_BUILD_ARCH_OS,dpkg-architecture -qDEB_BUILD_ARCH_OS)
 DEB_BUILD_ARCH_CPU ?= $(call dpkg_late_eval,DEB_BUILD_ARCH_CPU,dpkg-architecture -qDEB_BUILD_ARCH_CPU)
-DEB_BUILD_ARCH ?= $(call dpkg_late_eval,DEB_BUILD_ARCH,dpkg-architecture -qDEB_BUILD_ARCH_BITS)
+DEB_BUILD_ARCH_BITS ?= $(call dpkg_late_eval,DEB_BUILD_ARCH,dpkg-architecture -qDEB_BUILD_ARCH_BITS)
 DEB_BUILD_ARCH_ENDIAN ?= $(call dpkg_late_eval,DEB_BUILD_ARCH_ENDIAN,dpkg-architecture -qDEB_BUILD_ARCH_ENDIAN)
 DEB_BUILD_GNU_CPU ?= $(call dpkg_late_eval,DEB_BUILD_GNU_CPU,dpkg-architecture -qDEB_BUILD_GNU_CPU)
 DEB_BUILD_GNU_SYSTEM ?= $(call dpkg_late_eval,DEB_BUILD_GNU_SYSTEM,dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)

+ 18 - 6
scripts/mk/buildflags.mk

@@ -14,12 +14,24 @@
 
 dpkg_late_eval ?= $(or $(value DPKG_CACHE_$(1)),$(eval DPKG_CACHE_$(1) := $(shell $(2)))$(value DPKG_CACHE_$(1)))
 
-CFLAGS = $(call dpkg_late_eval,CFLAGS,dpkg-buildflags --get CFLAGS)
-CPPFLAGS = $(call dpkg_late_eval,CPPFLAGS,dpkg-buildflags --get CPPFLAGS)
-CXXFLAGS = $(call dpkg_late_eval,CXXFLAGS,dpkg-buildflags --get CXXFLAGS)
-FFLAGS = $(call dpkg_late_eval,FFLAGS,dpkg-buildflags --get FFLAGS)
-LDFLAGS = $(call dpkg_late_eval,LDFLAGS,dpkg-buildflags --get LDFLAGS)
+DPKG_BUILDFLAGS_LIST = CFLAGS CPPFLAGS CXXFLAGS FFLAGS LDFLAGS
+
+define dpkg_buildflags_export_envvar
+ifdef $(1)
+DPKG_BUILDFLAGS_EXPORT_ENVVAR += $(1)="$(value $(1))"
+endif
+endef
+
+$(eval $(call dpkg_buildflags_export_envvar,DEB_BUILD_MAINT_OPTIONS))
+$(foreach flag,$(DPKG_BUILDFLAGS_LIST),\
+  $(foreach operation,SET STRIP APPEND PREPEND,\
+    $(eval $(call dpkg_buildflags_export_envvar,DEB_$(flag)_MAINT_$(operation)))))
+
+dpkg_buildflags_setvar = $(1) = $(call dpkg_late_eval,$(1),$(DPKG_BUILDFLAGS_EXPORT_ENVVAR) dpkg-buildflags --get $(1))
+
+$(foreach flag,$(DPKG_BUILDFLAGS_LIST),\
+  $(eval $(call dpkg_buildflags_setvar,$(flag))))
 
 ifdef DPKG_EXPORT_BUILDFLAGS
-  export CFLAGS CPPFLAGS CXXFLAGS FFLAGS LDFLAGS
+  export $(DPKG_BUILDFLAGS_LIST)
 endif

+ 2 - 0
src/trigproc.c

@@ -393,6 +393,8 @@ trig_transitional_activate(enum modstatdb_rw cstatus)
 		 * be written down. This should never happen in theory but
 		 * can happen if you restore an old status file that is
 		 * not in sync with the infodb files. */
+		if (pkg->status < stat_triggersawaited)
+			continue;
 		pkg->status = pkg->trigaw.head ? stat_triggersawaited :
 		              pkg->trigpend_head ? stat_triggerspending :
 		              stat_installed;