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. ]
my $file=shift;
my $globdir=shift;
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: $!");
+ }
+
- open (DH_FARRAY_IN, $file) || error("cannot read $file: $!");
while (<DH_FARRAY_IN>) {
chomp;
# Only ignore comments and empty lines in v5 mode.
while (<DH_FARRAY_IN>) {
chomp;
# Only ignore comments and empty lines in v5 mode.
+ if (! compat(4) && ! $x) {
next if /^#/ || /^$/;
}
my @line;
next if /^#/ || /^$/;
}
my @line;
# 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.
# 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, $_;
foreach (map { glob "$globdir/$_" } split) {
s#^$globdir/##;
push @line, $_;
+
+ close DH_FARRAY_IN || error("problem reading $file: $!");
programs in debhelper use pairs of files and destinations or slightly more
complicated formats.
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>
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>
"B<dpkg-architecture -qDEB_HOST_ARCH_OS>",
then they will be used in preference to other, more general files.
"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.
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.
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.
=head1 SHARED DEBHELPER OPTIONS
The following command line options are supported by all debhelper programs.
debhelper (8.9.12) UNRELEASED; urgency=low
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
* Added German translation of man pages, done by Chris Leick. Closes: #651221
* Typo fixes. Closes: #651224 Thanks, Chris Leick