]> git.donarmstrong.com Git - debhelper.git/commitdiff
executable config files. bleh, argh
authorJoey Hess <joey@kitenet.net>
Wed, 7 Dec 2011 18:08:41 +0000 (14:08 -0400)
committerJoey Hess <joey@kitenet.net>
Wed, 7 Dec 2011 19:07:49 +0000 (15:07 -0400)
Debhelper config files may be made executable programs that output the
desired configuration. No further changes are planned to the config file
format; those needing powerful syntaxes may now use a programming language
of their choice.

In many bugs I see a tendency of users wanting debhelper configuration
files to have their pet feature from some programming language. So I choose
to short-circuit this process by taking it to its logical conclusion, and
without the bother of developing a new language myself.

[ Is this consistent with my boycott/disinterest in integrating features
features first developed in Ubuntu? Yes. Instead of blocking the
issue of multiarch needing variable expansions, I have stepped
back and let anyone make whatever mess they desire while not forcing
that mess on the rest of us. ]

Debian/Debhelper/Dh_Lib.pm
debhelper.pod
debian/changelog

index 60f13c30517664265b6b8b540b9bb8f0013381c1..a86688a2d6a3a80bf4075da8647a3c9817526fe6 100644 (file)
@@ -613,12 +613,21 @@ sub filedoublearray {
        my $file=shift;
        my $globdir=shift;
 
+       my $x=-x $file;
+       if ($x) {
+               require Cwd;
+               my $cmd=Cwd::abs_path($file);
+               open (DH_FARRAY_IN, "$cmd |") || error("cannot run $file: $!");
+       }
+       else {
+               open (DH_FARRAY_IN, $file) || error("cannot read $file: $!");
+       }
+
        my @ret;
-       open (DH_FARRAY_IN, $file) || error("cannot read $file: $!");
        while (<DH_FARRAY_IN>) {
                chomp;
                # Only ignore comments and empty lines in v5 mode.
-               if (! compat(4)) {
+               if (! compat(4) && ! $x)  {
                        next if /^#/ || /^$/;
                }
                my @line;
@@ -627,7 +636,7 @@ sub filedoublearray {
                # The tricky bit is that the glob expansion is done
                # as if we were in the specified directory, so the
                # filenames that come out are relative to it.
-               if (defined $globdir && ! compat(2)) {
+               if (defined $globdir && ! compat(2) && ! $x) {
                        foreach (map { glob "$globdir/$_" } split) {
                                s#^$globdir/##;
                                push @line, $_;
@@ -638,7 +647,8 @@ sub filedoublearray {
                }
                push @ret, [@line];
        }
-       close DH_FARRAY_IN;
+
+       close DH_FARRAY_IN || error("problem reading $file: $!");
        
        return @ret;
 }
index 98da7362868ed1d21ce85bc26bd4721203d9f0c3..65616e39b59b52b015c6cc9b0720452f9e302061 100644 (file)
@@ -69,9 +69,9 @@ Generally, these files will list files to act on, one file per line. Some
 programs in debhelper use pairs of files and destinations or slightly more
 complicated formats.
 
-Note that if a package is the first (or only) binary package listed in
-F<debian/control>, debhelper will use F<debian/foo> if no F<debian/package.foo>
-file can be found.
+Note for the first (or only) binary package listed in
+F<debian/control>, debhelper will use F<debian/foo> when there's no
+F<debian/package.foo> file.
 
 In some rare cases, you may want to have different versions of these files
 for different architectures or OSes. If files named debian/I<package>.foo.I<ARCH>
@@ -80,14 +80,19 @@ output of "B<dpkg-architecture -qDEB_HOST_ARCH>" /
 "B<dpkg-architecture -qDEB_HOST_ARCH_OS>",
 then they will be used in preference to other, more general files.
 
-In many cases, these config files are used to specify various types of
+Mostly, these config files are used to specify lists of various types of
 files. Documentation or example files to install, files to move, and so on.
 When appropriate, in cases like these, you can use standard shell wildcard
 characters (B<?> and B<*> and B<[>I<..>B<]> character classes) in the files.
-
 You can also put comments in these files; lines beginning with B<#> are
 ignored.
 
+The syntax of these files is intentionally kept very simple to make then
+easy to read, understand, and modify. If you prefer power and complexity,
+you can make the file executable, and write a program that outputs
+whatever content is appropriate for a given situation. When you do so,
+the output is not further processed to expand wildcards or strip comments.
+
 =head1 SHARED DEBHELPER OPTIONS
 
 The following command line options are supported by all debhelper programs.
index ffcc2ceb09f5ab90d3a35507c27a0b1cc9db65b7..8538b22b77b836288e0af5a8f3d906961178710e 100644 (file)
@@ -1,5 +1,11 @@
 debhelper (8.9.12) UNRELEASED; urgency=low
 
+  * Debhelper config files may be made executable programs that output the
+    desired configuration. No further changes are planned to the config file
+    format; those needing powerful syntaxes may now use a programming language
+    of their choice. (Be careful aiming that at your feet.)
+    Closes: #235302, #372310, #235302, #614731,
+    Closes: #438601, #477625, #632860, #642129
   * Added German translation of man pages, done by Chris Leick. Closes: #651221
   * Typo fixes. Closes: #651224 Thanks, Chris Leick