]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh
Support make 3.82. Closes: #634385
[debhelper.git] / dh
diff --git a/dh b/dh
index 59d5ee071fd6b6be4ef5428661f57928ff73f99f..443d9341e3be18df182ccad87e56c3a8ca137a29 100755 (executable)
--- a/dh
+++ b/dh
@@ -162,12 +162,13 @@ after a particular debhelper command is run.
                dh_fixperms
                chmod 4755 debian/foo/usr/bin/foo
 
-If your package is a Python package, B<dh> will use B<dh_pysupport> by
-default. This is how to use B<dh_pycentral> instead.
+Python tools are not run by dh by default, due to the continual change
+in that area. (Before compatability level v9, dh does run B<dh_pysupport>.)
+Here is how to use B<dh_python2>.
 
        #!/usr/bin/make -f
        %:
-               dh $@ --with python-central
+               dh $@ --with python2
 
 If your package uses autotools and you want to freshen F<config.sub> and
 F<config.guess> with newer versions from the B<autotools-dev> package
@@ -258,8 +259,8 @@ B<build-indep>.
 Note that in the example above, dh will arrange for "debian/rules build"
 to call your build-indep and build-arch targets. You do not need to
 explicitly define the dependencies in the rules file when using dh with
-compatability level v9. This example would be more complicated with
-earlier compatability levels.
+compatibility level v9. This example would be more complicated with
+earlier compatibility levels.
 
 =head1 INTERNALS
 
@@ -278,6 +279,9 @@ options can override this behavior.
 A sequence can also run dependent targets in debian/rules.  For
 example, the "binary" sequence runs the "install" target.
 
+B<dh> sets environment variables listed by B<dpkg-buildflags>, unless
+they are already set. It supports DEB_BUILD_OPTIONS=noopt too.
+
 B<dh> uses the B<DH_INTERNAL_OPTIONS> environment variable to pass information
 through to debhelper commands that are run inside override targets. The
 contents (and indeed, existence) of this environment variable, as the name
@@ -288,9 +292,11 @@ might suggest, is subject to change at any time.
 # Stash this away before init modifies it.
 my @ARGV_orig=@ARGV;
 
-# python-support is enabled by default, at least for now
-# (and comes first so python-central loads later and can disable it).
-unshift @ARGV, "--with=python-support";
+if (compat(8)) {
+       # python-support was enabled by default before v9.
+       # (and comes first so python-central loads later and can disable it).
+       unshift @ARGV, "--with=python-support";
+}
                
 init(options => {
                "until=s" => \$dh{UNTIL},
@@ -315,7 +321,7 @@ init(options => {
        bundling => 0,
 );
 inhibit_log();
-
+set_buildflags();
 
 # If make is using a jobserver, but it is not available
 # to this process, clean out MAKEFLAGS. This avoids
@@ -329,7 +335,7 @@ my $sequence;
 if (! compat(7)) {
        # From v8, the sequence is the very first parameter.
        $sequence=shift @ARGV_orig;
-       if ($sequence=~/^-/) {
+       if (defined $sequence && $sequence=~/^-/) {
                error "Unknown sequence $sequence (options should not come before the sequence)";
        }
 }
@@ -435,26 +441,26 @@ if (! compat(8)) {
        if (rules_explicit_target('build-arch') ||
            rules_explicit_target('build-indep')) {
                # run sequences separately
-               $sequences{build} = [@bd_minimal, 'rules:build-arch', 'rules:build-indep'];
+               $sequences{build} = [@bd_minimal, rules("build-arch"), rules("build-indep")];
        }
        else {
                # run standard sequence (this is faster)
                $sequences{build} = [@bd];
        }
-       $sequences{'install-indep'} = ['rules:build-indep', @i];
-       $sequences{'install-arch'} = ['rules:build-arch', @i];
+       $sequences{'install-indep'} = [rules("build-indep"), @i];
+       $sequences{'install-arch'} = [rules("build-arch"), @i];
        if (rules_explicit_target('install-arch') ||
            rules_explicit_target('install-indep')) {
                # run sequences separately
-               $sequences{'install'} = ['rules:build', @i_minimal, 'rules:install-arch', 'rules:install-indep'];
+               $sequences{'install'} = [rules("build"), @i_minimal, rules("install-arch"), rules("install-indep")];
        }
        else {
                # run standard sequence (this is faster)
-               $sequences{'install'} = ['rules:build', @i, 'rules:install-arch', 'rules:install-indep'];
+               $sequences{'install'} = [rules("build"), @i, rules("install-arch"), rules("install-indep")];
        }
-       $sequences{'binary-indep'} = ['rules:install-indep', @b];
-       $sequences{'binary-arch'} = ['rules:install-arch', @ba, @b];
-       $sequences{binary} = ['rules:install', 'rules:binary-arch', 'rules:binary-indep'];
+       $sequences{'binary-indep'} = [rules("install-indep"), @b];
+       $sequences{'binary-arch'} = [rules("install-arch"), @ba, @b];
+       $sequences{binary} = [rules("install"), rules("binary-arch"), rules("binary-indep")];
 }
 else {
        $sequences{build} = [@bd];
@@ -694,8 +700,6 @@ sub run {
        my $override_command;
        my $has_explicit_target = rules_explicit_target("override_".$command);
 
-       # If the command has a rules: prefix, run debian/rules with
-       # the remainder as the target.
        my $rules_target = rules_target($command);
        if (defined $rules_target) {
                # Don't pass DH_ environment variables, since this is
@@ -794,7 +798,7 @@ sub optimize_sequence {
 
 sub rules_target {
        my $command=shift;
-       if ($command =~ /^rules:(.*)/) {
+       if ($command =~ /^debian\/rules\s+(.*)/) {
                return $1
        }
        else {
@@ -802,6 +806,10 @@ sub rules_target {
        }
 }
 
+sub rules {
+       return "debian/rules ".join(" ", @_);
+}
+
 {
 my %targets;
 my $rules_parsed;
@@ -835,7 +843,7 @@ sub rules_explicit_target {
                                                if (defined $current_target) {
                                                        if (/^#/) {
                                                                # Check if target has commands to execute
-                                                               if (/^#\s*commands to execute/) {
+                                                               if (/^#\s*(commands|recipe) to execute/) {
                                                                        $targets{$current_target} = 1;
                                                                }
                                                        }