r2649 - trunk/build.d/dist/debian
mikma at minisip.org
mikma at minisip.org
Thu Jun 8 23:58:12 CEST 2006
Author: mikma
Date: 2006-06-08 23:58:11 +0200 (Thu, 08 Jun 2006)
New Revision: 2649
Modified:
trunk/build.d/dist/debian/dist.conf
trunk/build.d/dist/debian/dist.local.example
trunk/build.d/dist/debian/dist.pl
Log:
Improvements to the Debian build script.
* Add support for building for multiple Debian/Ubuntu releases using
pdebuild/pbuilder and a repreprop repository.
Modified: trunk/build.d/dist/debian/dist.conf
===================================================================
--- trunk/build.d/dist/debian/dist.conf 2006-06-08 14:13:34 UTC (rev 2648)
+++ trunk/build.d/dist/debian/dist.conf 2006-06-08 21:58:11 UTC (rev 2649)
@@ -8,6 +8,8 @@
#
#######
+our $debian_release_default = 'sid';
+
set_callbacks('libmutil', 'bootstrap-pre' => sub {
for my $i ( qw( libtool ltdl ) ) {
copy("/usr/share/aclocal/$i.m4", "$srcdir/$i.m4")
@@ -15,4 +17,50 @@
}
});
+my %sid_params = (
+ suite => 'unstable',
+ codename => 'sid',
+ description => 'Debian unstable/sid',
+ buildareadir => "$topdir/build/build-area/debian",
+);
+
+my %etch_params = (
+ suite => 'testing',
+ codename => 'etch',
+ description => 'Debian testing/etch',
+ buildareadir => "$topdir/build/build-area/debian",
+);
+
+my %sarge_params = (
+ suite => 'stable',
+ codename => 'sarge',
+ description => 'Debian stable/sarge',
+ buildareadir => "$topdir/build/build-area/debian",
+);
+
+my %dapper_params = (
+ suite => 'dapper',
+ codename => 'dapper',
+ description => 'Ubuntu dapper',
+ buildareadir => "$topdir/build/build-area/ubuntu",
+);
+
+our %debian_releases = (
+ sid => \%sid_params,
+ sarge => \%sarge_params,
+ etch => \%etch_params,
+
+ dapper => \%dapper_params,
+);
+
+our %debian_callbacks = (
+ # Parameters: %debian_release
+ # Returns: builder used as --svn-builder
+ builder => undef,
+
+ # Parameters: %debian_release, $changes_filename
+ # Returns: -
+ 'package-post' => undef,
+);
+
1
Modified: trunk/build.d/dist/debian/dist.local.example
===================================================================
--- trunk/build.d/dist/debian/dist.local.example 2006-06-08 14:13:34 UTC (rev 2648)
+++ trunk/build.d/dist/debian/dist.local.example 2006-06-08 21:58:11 UTC (rev 2649)
@@ -9,4 +9,30 @@
#
#######
+## One of sid, etch, sarge, dapper
+#$debian_release_default = 'sid';
+
+##
+## builder callback
+## Adds support for building packages in a pdebuild/pbuilder chroot
+##
+#debian_set_callback('builder', sub {
+# my ($params) = @_;
+# my $codename = $params->{'codename'};
+# my $buildareadir = $params->{'buildareadir'};
+#
+# return "pdebuild --pbuilderroot sudo --configfile /etc/pbuilder/${codename} --buildresult ${buildareadir}",
+#} );
+#
+##
+## package-post callback
+## Includes the created package in a reprepro repository
+##
+#debian_set_callback('package-post', sub {
+# my ($params, $changes) = @_;
+# my $codename = $params->{'codename'};
+#
+# act('debian: reprepro', qw( reprepro --basedir /var/lib/reprepro/debian include ), $codename, $changes );
+#} );
+
1
Modified: trunk/build.d/dist/debian/dist.pl
===================================================================
--- trunk/build.d/dist/debian/dist.pl 2006-06-08 14:13:34 UTC (rev 2648)
+++ trunk/build.d/dist/debian/dist.pl 2006-06-08 21:58:11 UTC (rev 2649)
@@ -9,30 +9,93 @@
#
our $debian_tarballsdir = "$topdir/build/tarballs";
-our $debian_buildareadir = "$topdir/build/build-area";
+our $default_buildareadir = "$topdir/build/build-area";
our $debian_dir = "$confdir/dist/debian/src";
our $svn_url_base = 'minisip+svn://svn.minisip.org/minisip';
my $debian_tags_url = "${svn_url_base}/tags/build.d/dist/src/debian";
my $upstream_tags_url = "${svn_url_base}/tags";
+
+sub debian_set_callback {
+ my ($name, $callback) = @_;
+
+ $debian_callbacks{$name} = $callback;
+}
+
+sub debian_release {
+ my $release = $debian_release_default;
+ my $params = $debian_releases{$release};
+
+ return $params;
+}
+
+sub debian_buildarea {
+ my $params = &debian_release;
+
+ unless ($params) {
+ warn "warning: Debian release not found\n";
+ return;
+ }
+
+ my $debian_buildareadir = $params->{'buildareadir'} || $default_buildareadir;
+ return $debian_buildareadir;
+}
+
#
+# debian_version
+#
+sub debian_version {
+ my $versionline = `dpkg-parsechangelog -l${debian_dir}/$pkg/debian/changelog | grep ^Version`;
+
+ $versionline =~ /^Version: (.*)/;
+ my $version = $1;
+
+ return $version;
+}
+
+#
+# debian_version_full
+#
+sub debian_version_full {
+ my ($params) = @_;
+ my $version = &debian_version;
+
+ if( $suite ne 'unstable' ){
+ my $codename = $params->{'codename'};
+
+ if ( $version !~ /$codename/ ) {
+ $version = "${version}${codename}1";
+ }
+ }
+
+ return $version;
+}
+
+#
# debian_changes
# return .changes file
#
sub debian_changes {
+ my ($params) = @_;
+ my $debian_buildareadir = &debian_buildarea;
+
my $arch = `dpkg-architecture -qDEB_BUILD_ARCH`;
$arch =~ s/\s*//g;
- my $versionline = `dpkg-parsechangelog -l${debian_dir}/$pkg/debian/changelog | grep ^Version`;
+ my $version = &debian_version_full($params);
- $versionline =~ /^Version: (.*)/;
- my $version = $1;
-
my $changes = "$debian_buildareadir/${pkg}_${version}_${arch}.changes";
- $changes = "$debian_buildareadir/${pkg}_${version}_source.changes" unless -e $changes;
- return $changes;
+ return $changes if -e $changes;
+
+ $changes = "$debian_buildareadir/${pkg}_${version}_source.changes";
+
+ return $changes if -e $changes;
+
+ print "Changes not found: $changes";
+
+ return undef;
}
#
@@ -40,6 +103,16 @@
# build source and binary package
#
sub debian_package {
+ my $params = &debian_release;
+
+ unless ($params) {
+ warn "warning: Debian release not found\n";
+ return;
+ }
+
+ my $builder = $debian_callbacks{'builder'};
+ my $buildareadir = $params->{'buildareadir'} || $default_buildaredir;
+
my @distfiles = distfiles();
unless (@distfiles) {
warn <<NEED_TARBALLS;
@@ -66,13 +139,55 @@
}
}
- easy_mkdir($debian_buildareadir);
+ easy_mkdir($buildareadir);
- my $svn_override = "tagsUrl=$debian_tags_url/${pkg},upsTagUrl=$upstream_tags_url/${pkg},buildArea=$debian_buildareadir,origDir=$debian_tarballsdir";
+ my $svn_override = "tagsUrl=$debian_tags_url/${pkg},upsTagUrl=$upstream_tags_url/${pkg},buildArea=$buildareadir,origDir=$debian_tarballsdir";
+ my @buildpackage_args = qw( --svn-dont-clean --svn-ignore-new );
+ push(@buildpackage_args, "--svn-override=${svn_override}");
+
+ my $builder_str;
+ if ($builder) {
+ $builder_str = &$builder($params);
+ }
+
+ if ($builder_str) {
+ push(@buildpackage_args, "--svn-builder=${builder_str}");
+ } else {
+ push(@buildpackage_args, qw( -us -uc -rfakeroot ));
+ }
+
easy_chdir("$debian_dir/$pkg");
- act('debian: svn-buildpackage', qw( svn-buildpackage -us -uc -rfakeroot --svn-dont-clean --svn-ignore-new ), "--svn-override=${svn_override}" );
+ my $suite = $params->{'suite'};
+ my $description = $params->{'description'};
+ my $version = &debian_version;
+ my $version_full = &debian_version_full($params);
+
+ if( $version ne $version_full ){
+ my $codename = $params->{'codename'};
+
+ act('debian: backup changelog',
+ qw( cp -a debian/changelog debian/changelog.build_bak ) );
+
+ act('debian: update changelog', 'dch',
+ '--newversion', $version_full,
+ '--distribution', $suite,
+ "Package for $description");
+ }
+
+ if( act('debian: svn-buildpackage', 'svn-buildpackage', @buildpackage_args) ){
+ my $changes = &debian_changes($params);
+ my $package_post = $debian_callbacks{'package-post'};
+
+ &$package_post( $params, $changes ) if $package_post;
+ }
+
+ if( $suite ne 'unstable' ){
+ act('debian: restore changelog',
+ qw( mv -f debian/changelog.build_bak debian/changelog ) );
+ }
+
return debian_pkgfiles();
}
@@ -82,8 +197,18 @@
# all files listed in the .changes file
#
sub debian_pkgfiles {
- my $changes = &debian_changes;
+ my $params = &debian_release;
+ unless ($params) {
+ warn "warning: Debian release not found\n";
+ return;
+ }
+
+ my $changes = &debian_changes($params);
+ my $debian_buildareadir = &debian_buildarea;
+
+ die "No changes file found" unless $changes;
+
open(CHANGES, "< $changes") or die "can't read $changes";
my @files;
@@ -113,8 +238,15 @@
# dump contents of all packages listed in .changes file
#
sub debian_pkgcontents {
- my $changes = &debian_changes;
+ my $params = &debian_release;
+ unless ($params) {
+ warn "warning: Debian release not found\n";
+ return;
+ }
+
+ my $changes = &debian_changes($params);
+
act('debian: debc', 'debc', $changes);
}
@@ -122,8 +254,16 @@
# debian_install
# install all packages listed in the .changes file
sub debian_install {
- my $changes = &debian_changes;
+ my $params = &debian_release;
+ unless ($params) {
+ warn "warning: Debian release not found\n";
+ return;
+ }
+
+ my $changes = &debian_changes($params);
+ my $debian_buildareadir = &debian_buildarea;
+
act('debian: debi', qw( debi ), '--debs-dir', $debian_buildareadir, $changes );
}
More information about the Minisip-devel
mailing list