summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog3
-rwxr-xr-xdh_auto_configure104
2 files changed, 107 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 424f7b70..ef53597c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,9 @@ debhelper (6.0.13) UNRELEASED; urgency=low
necessarily a core dump.) Closes: #477391
* Record debhelper commands that successfully finish in a per-package log
file.
+ * dh_auto_configure: New program, automates running ./configure,
+ Makefile.PL, and python distutils. Calls them with exactly the same
+ options as cdbs does by default, and allows adding/overriding options.
-- Joey Hess <joeyh@debian.org> Tue, 22 Apr 2008 17:54:20 -0400
diff --git a/dh_auto_configure b/dh_auto_configure
new file mode 100755
index 00000000..27f9065c
--- /dev/null
+++ b/dh_auto_configure
@@ -0,0 +1,104 @@
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+dh_auto_configure - automatically configure a package prior to building
+
+=cut
+
+use strict;
+use Debian::Debhelper::Dh_Lib;
+
+=head1 SYNOPSIS
+
+B<dh_auto_configure> [S<I<debhelper options>>] [S<B<--> I<params>>]
+
+=head1 DESCRIPTION
+
+dh_auto_configure is a debhelper program that tries to automatically
+configure a package prior to building. It looks for and runs
+a ./configure script, or Makefile.PL. A standard set of parameters is
+determined and passed to the program that is run. If no program to run
+is found, dh_auto_configure will exit without doing anything.
+
+This is intended to work for about 90% of packages. If it doesn't work,
+you're encoruaged to skip using dh_auto_configure at all, and just run
+./configure or its equivilant by hand.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--> I<params>
+
+Pass "params" to the program that is run. These can be used to suppliment
+or override the standard parameters that dh_auto_configure passes.
+
+=back
+
+=cut
+
+init();
+
+sub dpkg_architecture_value {
+ my $var=shift;
+ my $value=`dpkg-architecture -q$var 2>/dev/null` || error("dpkg-architecture failed");
+ chomp $value;
+ return $value;
+}
+
+sub sourcepackage {
+ open (CONTROL, 'debian/control') ||
+ error("cannot read debian/control: $!\n");
+ while (<CONTROL>) {
+ chomp;
+ s/\s+$//;
+ if (/^Source:\s*(.*)/) {
+ close CONTROL;
+ return $1;
+ }
+ }
+
+ close CONTROL;
+ error("could not find Source: line in control file.");
+}
+
+if (-x "configure") {
+ # Standard set of options for configure.
+ my @opts;
+ push @opts, "--build=".dpkg_architecture_value("DEB_BUILD_GNU_TYPE");
+ push @opts, "--prefix=/usr";
+ push @opts, "--includedir=\${prefix}/include";
+ push @opts, "--mandir=\${prefix}/share/man";
+ push @opts, "--infodir=\${prefix}/share/info";
+ push @opts, "--sysconfdir=/etc";
+ push @opts, "--localstatedir=/var";
+ push @opts, "--libexecdir=\${prefix}/lib/".sourcepackage();
+ push @opts, "--disable-maintainer-mode";
+ push @opts, "--disable-dependency-tracking";
+ # Provide --host only if different from --build, as recommended in
+ # autotools-dev README.Debian: When provided (even if equal) autotools
+ # 2.52+ switches to cross-compiling mode.
+ if (dpkg_architecture_value("DEB_BUILD_GNU_TYPE") ne dpkg_architecture_value("DEB_HOST_GNU_TYPE")) {
+ push @opts, "--host=".dpkg_architecture_value("DEB_HOST_GNU_TYPE");
+ }
+ doit("./configure", @opts, @{$dh{U_PARAMS}});
+}
+elsif (-e "Makefile.PL") {
+ doit("perl Makefile.PL", "INSTALLDIRS=vendor", @{$dh{U_PARAMS}});
+}
+elsif (-e "setup.py") {
+ doit("python setup.py", "build", @{$dh{U_PARAMS}});
+}
+
+=head1 SEE ALSO
+
+L<debhelper(7)>
+
+This program is a part of debhelper.
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+
+=cut