From: Joey Hess Date: Wed, 23 Apr 2008 17:59:23 +0000 (-0400) Subject: dh_auto_configure: New program, automates running ./configure, Makefile.PL, and pytho... X-Git-Tag: 7.0.0~26 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=935ad398869a2f9a2f8ad032290588029e9ed818;p=debhelper.git 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. --- diff --git a/debian/changelog b/debian/changelog index 424f7b7..ef53597 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 Tue, 22 Apr 2008 17:54:20 -0400 diff --git a/dh_auto_configure b/dh_auto_configure new file mode 100755 index 0000000..27f9065 --- /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 [S>] [S I>] + +=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 + +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 () { + 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 + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess + +=cut