[buildd-tools-devel] [PATCH 5/6] Set Host and Build Arches in object, then use throught

Wookey wookey at wookware.org
Tue Jan 17 03:07:38 UTC 2012


---
 debian/changelog    |    1 +
 lib/Sbuild/Build.pm |   57 ++++++++++++++++++++++++++------------------------
 2 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 1649fac..bbedde6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,7 @@ sbuild (0.63.0-1) unstable; urgency=low
 
   [ Wookey ]
   * Merge cross-build support (thanks to Hector Oron)
+  * Add multiarch cross-build support
 
  -- Roger Leigh <rleigh at debian.org>  Thu, 15 Dec 2011 13:03:01 +0000
 
diff --git a/lib/Sbuild/Build.pm b/lib/Sbuild/Build.pm
index 5c7fa07..e9be0ad 100644
--- a/lib/Sbuild/Build.pm
+++ b/lib/Sbuild/Build.pm
@@ -270,6 +270,10 @@ sub run {
 	$self->set('Pkg Start Time', time);
 	$self->set('Pkg End Time', $self->get('Pkg Start Time'));
 
+	# Acquire the architectures we're building for and on.
+	$self->set('Host_Arch', $self->get_conf('HOST_ARCH'));
+	$self->set('Build_Arch', $self->get_conf('BUILD_ARCH'));
+
 	my $dist = $self->get_conf('DISTRIBUTION');
 	if (!defined($dist) || !$dist) {
 	    Sbuild::Exception::Build->throw(error => "No distribution defined",
@@ -627,10 +631,10 @@ sub run_fetch_install_packages {
 	$self->set('Install Start Time', time);
 	$self->set('Install End Time', $self->get('Install Start Time'));
 	my @coredeps = @{$self->get_conf('CORE_DEPENDS')};
-	if ($self->get_conf('HOST_ARCH') ne $self->get_conf('BUILD_ARCH')) {
+	if ($self->get('Host_Arch') ne $self->get('Build_Arch')) {
 	    my $crosscoredeps;
 	    $crosscoredeps = $self->get_conf('CROSSBUILD_CORE_DEPENDS');
-	    $resolver->add_dependencies('CORE', join(", ", @coredeps, @{$crosscoredeps->{$self->get_conf('HOST_ARCH')}}) , "", "", "", "", "");
+	    $resolver->add_dependencies('CORE', join(", ", @coredeps, @{$crosscoredeps->{$self->get('Host_Arch')}}) , "", "", "", "", "");
 	} else {
 	    $resolver->add_dependencies('CORE', join(", ", @coredeps) , "", "", "", "", "");
 	}
@@ -657,7 +661,7 @@ sub run_fetch_install_packages {
 				    join(", ", @{$self->get_conf('MANUAL_CONFLICTS_ARCH')}),
 				    join(", ", @{$self->get_conf('MANUAL_CONFLICTS_INDEP')}));
 
-	if ($self->get_conf('HOST_ARCH') eq $self->get_conf('BUILD_ARCH')) {
+	if ($self->get('Host_Arch') eq $self->get('Build_Arch')) {
 	# for native building make and install dummy-deps package
 		$resolver->add_dependencies($self->get('Package'),
 						$self->get('Build Depends'),
@@ -677,9 +681,9 @@ sub run_fetch_install_packages {
 	} else { # cross-building
 		# install cross-deps. Hacked for now - need to generate dummy package
 		$self->log_subsection('Install cross build-dependencies (apt-get -a)');
-		$self->log('Cross-deps: Running apt-get -a' . $self->get_conf('HOST_ARCH') . ' build-dep ' . $self->get('Package') . "\n");
+		$self->log('Cross-deps: Running apt-get -a' . $self->get('Host_Arch') . ' build-dep ' . $self->get('Package') . "\n");
 		$resolver->run_apt_command(
-			{ COMMAND => [$self->get_conf('APT_GET'),  '-a' . $self->get_conf('HOST_ARCH'), 'build-dep', '-yf', $self->get('Package')],
+			{ COMMAND => [$self->get_conf('APT_GET'),  '-a' . $self->get('Host_Arch'), 'build-dep', '-yf', $self->get('Package')],
 			ENV => {'DEBIAN_FRONTEND' => 'noninteractive'},
 			USER => 'root',
 			DIR => '/' });
@@ -813,8 +817,7 @@ sub fetch_source_files {
     my $build_dir = $self->get('Chroot Build Dir');
     my $pkg = $self->get('Package');
     my $ver = $self->get('OVersion');
-    my $host_arch = $self->get_conf('HOST_ARCH');
-    my $build_arch = $self->get_conf('BUILD_ARCH');
+    my $host_arch = $self->get('Host_Arch');
 
     my ($dscarchs, $dscpkg, $dscver, @fetched);
 
@@ -1219,8 +1222,8 @@ sub build {
     my $dscdir = $self->get('DSC Dir');
     my $pkg = $self->get('Package');
     my $build_dir = $self->get('Chroot Build Dir');
-    my $host_arch = $self->get_conf('HOST_ARCH');
-    my $build_arch = $self->get_conf('BUILD_ARCH');
+    my $host_arch = $self->get('Host_Arch');
+    my $build_arch = $self->get('Build_Arch');
 
     my( $rv, $changes );
     local( *PIPE, *F, *F2 );
@@ -1438,8 +1441,8 @@ sub build {
 	    $self->get_conf('BUILD_ENV_CMND'));
     push (@{$buildcmd}, 'dpkg-buildpackage');
 
-    if ($self->get_conf('HOST_ARCH') ne $self->get_conf('BUILD_ARCH')) {
-	push (@{$buildcmd}, '-a' . $self->get_conf('HOST_ARCH'));
+    if ($host_arch ne $build_arch) {
+	push (@{$buildcmd}, '-a' . $host_arch);
     }
 
     if (defined($self->get_conf('PGP_OPTIONS')) &&
@@ -1892,9 +1895,9 @@ sub generate_stats {
     $self->add_stat('Package', $self->get('Package'));
     $self->add_stat('Version', $self->get('Version'));
     $self->add_stat('Source-Version', $self->get('OVersion'));
-    $self->add_stat('Machine Architecture', $self->get_conf('HOST_ARCH'));
-    $self->add_stat('Host Architecture', $self->get_conf('HOST_ARCH'));
-    $self->add_stat('Build Architecture', $self->get_conf('BUILD_ARCH'));
+    $self->add_stat('Machine Architecture', $self->get_conf('ARCH'));
+    $self->add_stat('Host Architecture', $self->get('Host_Arch'));
+    $self->add_stat('Build Architecture', $self->get('Build_Arch'));
     $self->add_stat('Distribution', $self->get_conf('DISTRIBUTION'));
     $self->add_stat('Space', $self->get('This Space'));
     $self->add_stat('Build-Time',
@@ -2025,7 +2028,7 @@ sub open_build_log {
 
     my $filename = $self->get_conf('LOG_DIR') . '/' .
 	$self->get('Package_SVersion') . '-' .
-	$self->get_conf('HOST_ARCH') .
+	$self->get('Host_Arch') .
 	"-$date";
 
     open($saved_stdout, ">&STDOUT") or warn "Can't redirect stdout\n";
@@ -2043,7 +2046,7 @@ sub open_build_log {
 	$SIG{'QUIT'} = 'IGNORE';
 	$SIG{'PIPE'} = 'IGNORE';
 
-	$PROGRAM_NAME = 'package log for ' . $self->get('Package_SVersion') . '_' . $self->get_conf('HOST_ARCH');
+	$PROGRAM_NAME = 'package log for ' . $self->get('Package_SVersion') . '_' . $self->get('Host_Arch');
 
 	if (!$self->get_conf('NOLOG') &&
 	    $self->get_conf('LOG_DIR_AVAILABLE')) {
@@ -2062,7 +2065,7 @@ sub open_build_log {
 		$self->log_symlink($filename,
 				   $self->get_conf('BUILD_DIR') . '/' .
 				   $self->get('Package_SVersion') . '_' .
-				   $self->get_conf('HOST_ARCH') . '.build');
+				   $self->get('Host_Arch') . '.build');
 	    }
 	}
 
@@ -2145,10 +2148,10 @@ sub open_build_log {
     my $hostname = $self->get_conf('HOSTNAME');
     $self->log("sbuild (Debian sbuild) $version ($release_date) on $hostname\n");
 
-    my $arch_string = $self->get_conf('BUILD_ARCH');
-    $arch_string = 'CROSS host=' . $self->get_conf('HOST_ARCH') .
-	'/build=' . $self->get_conf('BUILD_ARCH')
-	if ($self->get_conf('HOST_ARCH') ne $self->get_conf('BUILD_ARCH'));
+    my $arch_string = $self->get('Build_Arch');
+    $arch_string = 'CROSS host=' . $self->get('Host_Arch') .
+	'/build=' . $self->get('Build_Arch')
+	if ($self->get('Host_Arch') ne $self->get('Build_Arch'));
     my $head1 = $self->get('Package') . ' ' . $self->get('Version') .
 	' (' . $arch_string . ') ';
     my $head2 = strftime("%d %b %Y %H:%M",
@@ -2162,8 +2165,8 @@ sub open_build_log {
     $self->log("Source Version: " . $self->get('OVersion') . "\n");
     $self->log("Distribution: " . $self->get_conf('DISTRIBUTION') . "\n");
     $self->log("Machine Architecture: " . $self->get_conf('ARCH') . "\n");
-    $self->log("Host Architecture: " . $self->get_conf('HOST_ARCH') . "\n");
-    $self->log("Build Architecture: " . $self->get_conf('BUILD_ARCH') . "\n");
+    $self->log("Host Architecture: " . $self->get('Host_Arch') . "\n");
+    $self->log("Build Architecture: " . $self->get('Build_Arch') . "\n");
     $self->log("\n");
 }
 
@@ -2201,15 +2204,15 @@ sub close_build_log {
 	if (defined($self->get_conf('KEY_ID')) && $self->get_conf('KEY_ID')) {
 	    my $key_id = $self->get_conf('KEY_ID');
 	    $self->log(sprintf("Signature with key '%s' requested:\n", $key_id));
-	    my $changes = $self->get('Package_SVersion') . '_' . $self->get_conf('HOST_ARCH') . '.changes';
+	    my $changes = $self->get('Package_SVersion') . '_' . $self->get('Host_Arch') . '.changes';
 	    system (sprintf('debsign -k%s %s', $key_id, $changes));
 	}
     }
 
     my $subject = "Log for " . $self->get_status() .
 	" build of " . $self->get('Package_Version');
-    if ($self->get_conf('HOST_ARCH')) {
-	$subject .= " on " . $self->get_conf('HOST_ARCH');
+    if ($self->get('Host_Arch')) {
+	$subject .= " on " . $self->get('Host_Arch');
     }
     if ($self->get_conf('ARCHIVE')) {
 	$subject .= " (" . $self->get_conf('ARCHIVE') . "/" . $self->get_conf('DISTRIBUTION') . ")";
@@ -2308,7 +2311,7 @@ sub send_mime_build_log {
 		);
     }
 
-    my $changes = $self->get('Package_SVersion') . '_' . $self->get_conf('HOST_ARCH') . '.changes';
+    my $changes = $self->get('Package_SVersion') . '_' . $self->get('Host_Arch') . '.changes';
     if ($self->get_status() eq 'successful' && -r $changes) {
 	my $log_part = MIME::Lite->new(
 		Type     => 'text/plain',
-- 
1.7.7.3




More information about the Buildd-tools-devel mailing list