summaryrefslogtreecommitdiffstats
path: root/lib/Debian/Debhelper
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Debian/Debhelper')
-rw-r--r--lib/Debian/Debhelper/Buildsystem/cmake.pm10
-rw-r--r--lib/Debian/Debhelper/Buildsystem/perl_makemaker.pm7
-rw-r--r--lib/Debian/Debhelper/Dh_Lib.pm68
-rw-r--r--lib/Debian/Debhelper/Sequence/root_sequence.pm22
-rw-r--r--lib/Debian/Debhelper/SequencerUtil.pm7
5 files changed, 96 insertions, 18 deletions
diff --git a/lib/Debian/Debhelper/Buildsystem/cmake.pm b/lib/Debian/Debhelper/Buildsystem/cmake.pm
index cafc743..42e4cac 100644
--- a/lib/Debian/Debhelper/Buildsystem/cmake.pm
+++ b/lib/Debian/Debhelper/Buildsystem/cmake.pm
@@ -79,9 +79,15 @@ sub new {
return $this;
}
+sub _get_pkgconf {
+ my $toolprefix = is_cross_compiling() ? dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-" : "";
+ return "/usr/bin/" . $toolprefix . "pkg-config";
+}
+
sub _get_cmake_env {
my $update_env = {};
$update_env->{DEB_PYTHON_INSTALL_LAYOUT} = 'deb' unless $ENV{DEB_PYTHON_INSTALL_LAYOUT};
+ $update_env->{PKG_CONFIG} = _get_pkgconf() unless $ENV{PKG_CONFIG};
return $update_env;
}
@@ -129,8 +135,8 @@ sub configure {
if (not $ENV{CXX}) {
push @flags, "-DCMAKE_CXX_COMPILER=" . dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-g++";
}
- push(@flags, "-DPKG_CONFIG_EXECUTABLE=/usr/bin/" . dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-pkg-config");
- push(@flags, "-DPKGCONFIG_EXECUTABLE=/usr/bin/" . dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-pkg-config");
+ push(@flags, "-DPKG_CONFIG_EXECUTABLE=" . _get_pkgconf());
+ push(@flags, "-DPKGCONFIG_EXECUTABLE=" . _get_pkgconf());
push(@flags, "-DQMAKE_EXECUTABLE=/usr/bin/" . dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-qmake");
}
push(@flags, "-DCMAKE_INSTALL_LIBDIR=lib/" . dpkg_architecture_value("DEB_HOST_MULTIARCH"));
diff --git a/lib/Debian/Debhelper/Buildsystem/perl_makemaker.pm b/lib/Debian/Debhelper/Buildsystem/perl_makemaker.pm
index 881f1ec..efb01d2 100644
--- a/lib/Debian/Debhelper/Buildsystem/perl_makemaker.pm
+++ b/lib/Debian/Debhelper/Buildsystem/perl_makemaker.pm
@@ -32,6 +32,12 @@ sub check_auto_buildable {
return 0;
}
+sub _get_pkgconf {
+ my $toolprefix = is_cross_compiling() ? dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-" : "";
+ return "/usr/bin/" . $toolprefix . "pkg-config";
+}
+
+
sub new {
my $class=shift;
my $this=$class->SUPER::new(@_);
@@ -66,6 +72,7 @@ sub configure {
if is_cross_compiling() and defined $cross_flag;
push @flags, "LD=$ld $ENV{CFLAGS} $ENV{LDFLAGS}";
}
+ $ENV{"PKG_CONFIG"} = _get_pkgconf() if not exists($ENV{"PKG_CONFIG"});
push(@perl_flags, '-I.') if compat(10);
diff --git a/lib/Debian/Debhelper/Dh_Lib.pm b/lib/Debian/Debhelper/Dh_Lib.pm
index cdc1686..d4ef875 100644
--- a/lib/Debian/Debhelper/Dh_Lib.pm
+++ b/lib/Debian/Debhelper/Dh_Lib.pm
@@ -1068,7 +1068,46 @@ sub default_sourcedir {
sub pkgfile {
# NB: $nameless_variant_handling is an implementation-detail; third-party packages
# should not rely on it.
- my ($package, $filename, $nameless_variant_handling) = @_;
+ my ($opts, $package, $filename);
+ my ($nameless_variant_handling, $named, $support_architecture_restriction, $is_bulk_check);
+
+ # !!NOT A PART OF THE PUBLIC API!!
+ # Bulk test used by dh to speed up the can_skip check. It
+ # is NOT useful for finding the most precise pkgfile.
+
+ if (ref($_[0]) eq 'HASH') {
+ ($opts, $package, $filename) = @_;
+ $is_bulk_check = ref($package) eq 'ARRAY';
+ if ($is_bulk_check) {
+ # If `dh` does not have declarative hints to go by, then it must assume all
+ # variants are possible
+ $named = 1;
+ $support_architecture_restriction = 1;
+ }
+
+ $nameless_variant_handling = $opts->{'internal-nameless-variant-handling'}
+ if exists($opts->{'internal-nameless-variant-handling'});
+ $named = $opts->{'named'} if exists($opts->{'named'});
+ $support_architecture_restriction = $opts->{'support-architecture-restriction'}
+ if exists($opts->{'support-architecture-restriction'});
+ } else {
+ ($package, $filename) = @_;
+
+ $is_bulk_check = ref($package) eq 'ARRAY';
+ if ($is_bulk_check) {
+ # If `dh` does not have declarative hints to go by, then it must assume all
+ # variants are possible
+ $named = 1;
+ $support_architecture_restriction = 1;
+ }
+ }
+
+ if (compat(13)) {
+ # Before compat 14, these were unconditionally on.
+ $named = 1;
+ $support_architecture_restriction = 1;
+ }
+
my (@try, $check_expensive);
if (not exists($_check_expensive{$filename})) {
@@ -1093,11 +1132,11 @@ sub default_sourcedir {
# globally or not. But if someone is being "clever" then the
# cache is reusable and for the general/normal case, it has no
# adverse effects.
- if (defined $dh{NAME}) {
+ if (defined $dh{NAME} and $opts->{'named'}) {
$filename="$dh{NAME}.$filename";
}
- if (ref($package) eq 'ARRAY') {
+ if ($is_bulk_check) {
# !!NOT A PART OF THE PUBLIC API!!
# Bulk test used by dh to speed up the can_skip check. It
# is NOT useful for finding the most precise pkgfile.
@@ -1115,7 +1154,7 @@ sub default_sourcedir {
} else {
# Avoid checking for hostarch+hostos unless we have reason
# to believe that they exist.
- if ($check_expensive) {
+ if ($check_expensive and $opts->{'support-architecture-restriction'}) {
my $cross_type = uc(package_cross_type($package));
push(@try,
"debian/${package}.${filename}.".dpkg_architecture_value("DEB_${cross_type}_ARCH"),
@@ -1189,7 +1228,17 @@ sub isnative {
}
# Make sure we look at the correct changelog.
- my $isnative_changelog = pkgfile($package, 'changelog', 0);
+ local $dh{NAME};
+ delete($dh{NAME});
+ my $isnative_changelog = pkgfile(
+ {
+ 'internal-nameless-variant-handling' => 0,
+ 'named' => 0,
+ 'support-architecture-restriction' => 0,
+ },
+ $package,
+ 'changelog',
+ );
if (! $isnative_changelog) {
$isnative_changelog = "debian/changelog";
$cache_key = '_source';
@@ -2402,7 +2451,14 @@ sub debhelper_script_subst {
my $tmp=tmpdir($package);
my $ext=pkgext($package);
- my $file=pkgfile($package,$script);
+ my $file = pkgfile(
+ {
+ 'named' => 0,
+ 'support-architecture-restriction' => 0,
+ },
+ $package,
+ $script,
+ );
my %variables = defined($extra_vars) ? %{$extra_vars} : ();
my $service_script = generated_file($package, "${script}.service", 0);
my @generated_scripts = ("debian/$ext$script.debhelper", $service_script);
diff --git a/lib/Debian/Debhelper/Sequence/root_sequence.pm b/lib/Debian/Debhelper/Sequence/root_sequence.pm
index 45d908c..0f1f489 100644
--- a/lib/Debian/Debhelper/Sequence/root_sequence.pm
+++ b/lib/Debian/Debhelper/Sequence/root_sequence.pm
@@ -79,20 +79,28 @@ qw{
qw{
dh_installwm
dh_installxfonts
- dh_strip_nondeterminism
- dh_compress
- dh_fixperms
- dh_missing
-});
+}, (!compat(13) ? qw() : qw(
+ dh_strip_nondeterminism
+ dh_compress
+ dh_fixperms
+)),
+ qw(dh_missing),
+);
# Looking for dh_dwz, dh_strip, dh_makeshlibs, dh_shlibdeps (et al)? They are
# in the elf-tools addon.
-my @b=qw{
+my @b = (
+ (!compat(13) ? qw(
+ dh_fixperms
+ dh_strip_nondeterminism
+ dh_compress
+) : qw()),
+qw{
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
-};
+});
_add_sequence('build', SEQUENCE_ARCH_INDEP_SUBSEQUENCES, @bd);
_add_sequence('install', SEQUENCE_ARCH_INDEP_SUBSEQUENCES, to_rules_target("build"), @i);
diff --git a/lib/Debian/Debhelper/SequencerUtil.pm b/lib/Debian/Debhelper/SequencerUtil.pm
index b01e920..ae7483e 100644
--- a/lib/Debian/Debhelper/SequencerUtil.pm
+++ b/lib/Debian/Debhelper/SequencerUtil.pm
@@ -447,10 +447,11 @@ sub compute_selected_addons {
if (compat(14, 1) && getpackages() == 1 && !exists($explicitly_managed{'single-binary'})) {
if (not compat(13, 1)) {
warning("Implicitly activating single-binary dh addon for backwards compatibility. In compat 14+,");
- warning("this fallback will *not* happen automatically and dh_auto_install will instead use a");
- warning("different default for --destdir, which can cause the source to produce an empty binary package");
+ warning("this fallback will *not* happen automatically via dh_auto_install will instead use a");
+ warning("different default for --destdir unless the single-binary add-on is active,");
+ warning("which can cause the source to produce an empty binary package");
warning();
- warning('To keep the existing behaviour, please activate the single-binary addon explicitly.');
+ warning('To keep the existing behaviour (compat 13), please activate the single-binary addon explicitly.');
warning('This can be done by adding "dh-sequence-single-binary" to Build-Depends or passing');
warning('--with=single-binary to dh.');
warning();