Package: dpkg Version: 1.10.9 Severity: wishlist this patch makes cross compilation with dpkg easier. automake build environments should work with them without modifications. bastian -- I've already got a female to worry about. Her name is the Enterprise. -- Kirk, "The Corbomite Maneuver", stardate 1514.0
Index: Makefile.in =================================================================== RCS file: /home/bastian/debian/cvs/dpkg/Makefile.in,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile.in 14 Jul 2002 20:15:06 -0000 1.1.1.1 +++ Makefile.in 23 Dec 2002 17:55:49 -0000 1.2 @@ -19,6 +19,8 @@ $(mkinstalldirs) $(DESTDIR)$(dpkgsharedir)/origins $(INSTALL_DATA) $(srcdir)/origin $(DESTDIR)$(dpkgconfdir)/origins/debian $(INSTALL_DATA) $(srcdir)/archtable $(DESTDIR)$(dpkgsharedir)/archtable + $(mkinstalldirs) $(DESTDIR)$(dpkgconfdir)/cross + $(INSTALL_DATA) $(srcdir)/cross/* $(DESTDIR)$(dpkgconfdir)/cross/ clean: clean-recursive rm -f $(GENFILES) Index: cross/config =================================================================== RCS file: cross/config diff -N cross/config --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cross/config 23 Dec 2002 18:26:08 -0000 1.2 @@ -0,0 +1,11 @@ +if [ -f `dirname $ac_site_file`/cpu.$DEB_HOST_GNU_CPU ]; then + . `dirname $ac_site_file`/cpu.$DEB_HOST_GNU_CPU +else + echo "can't find cpu config `dirname $ac_site_file`/cpu.$DEB_HOST_GNU_CPU" +fi +if [ -f `dirname $ac_site_file`/system.$DEB_HOST_GNU_SYSTEM ]; then + . `dirname $ac_site_file`/system.$DEB_HOST_GNU_SYSTEM +else + echo "can't find system config `dirname $ac_site_file`/cpu.$DEB_HOST_GNU_CPU" +fi + Index: cross/cpu.i386 =================================================================== RCS file: cross/cpu.i386 diff -N cross/cpu.i386 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cross/cpu.i386 23 Dec 2002 18:45:44 -0000 1.2 @@ -0,0 +1,18 @@ +# +# i386 specific configure variables +# +ac_cv_c_bigendian=no +ac_cv_c_char_unsigned=no +ac_cv_sizeof_long_long=8 +ac_cv_sizeof_unsigned_long_long=8 +ac_cv_sizeof_long=4 +ac_cv_sizeof_unsigned_long=4 +ac_cv_sizeof_int=4 +ac_cv_sizeof_unsigned_int=4 +ac_cv_sizeof_short=2 +ac_cv_sizeof_unsigned_short=2 +ac_cv_sizeof_short=2 +ac_cv_sizeof_unsigned_short=2 +ac_cv_sizeof_float=4 +ac_cv_sizeof_double=8 +ac_cv_sizeof_long_double=12 Index: cross/cpu.m68k =================================================================== RCS file: cross/cpu.m68k diff -N cross/cpu.m68k --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cross/cpu.m68k 23 Dec 2002 18:45:44 -0000 1.2 @@ -0,0 +1,18 @@ +# +# m68k specific configure variables +# +ac_cv_c_bigendian=yes +ac_cv_c_char_unsigned=no +ac_cv_sizeof_long_long=8 +ac_cv_sizeof_unsigned_long_long=8 +ac_cv_sizeof_long=4 +ac_cv_sizeof_unsigned_long=4 +ac_cv_sizeof_int=4 +ac_cv_sizeof_unsigned_int=4 +ac_cv_sizeof_short=2 +ac_cv_sizeof_unsigned_short=2 +ac_cv_sizeof_short=2 +ac_cv_sizeof_unsigned_short=2 +ac_cv_sizeof_float=4 +ac_cv_sizeof_double=8 +ac_cv_sizeof_long_double=12 Index: cross/cpu.mips =================================================================== RCS file: cross/cpu.mips diff -N cross/cpu.mips --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cross/cpu.mips 23 Dec 2002 18:45:44 -0000 1.2 @@ -0,0 +1,11 @@ +# +# mips bigendian specific configure variables +# +ac_cv_c_bigendian=yes +ac_cv_c_char_unsigned=no +ac_cv_sizeof_long=4 +ac_cv_sizeof_int=4 +ac_cv_sizeof_char_p=4 +ac_cv_sizeof_long_long=8 +ac_cv_sizeof_unsigned_long=4 +ac_cv_sizeof_unsigned_int=4 Index: cross/cpu.powerpc =================================================================== RCS file: cross/cpu.powerpc diff -N cross/cpu.powerpc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cross/cpu.powerpc 23 Dec 2002 18:26:16 -0000 1.1 @@ -0,0 +1,18 @@ +# +# powerpc specific configure variables +# +ac_cv_c_bigendian=yes +ac_cv_c_char_unsigned=no +ac_cv_sizeof_long_long=8 +ac_cv_sizeof_unsigned_long_long=8 +ac_cv_sizeof_long=4 +ac_cv_sizeof_unsigned_long=4 +ac_cv_sizeof_int=4 +ac_cv_sizeof_unsigned_int=4 +ac_cv_sizeof_short=2 +ac_cv_sizeof_unsigned_short=2 +ac_cv_sizeof_short=2 +ac_cv_sizeof_unsigned_short=2 +ac_cv_sizeof_float=4 +ac_cv_sizeof_double=8 +ac_cv_sizeof_long_double=8 Index: cross/system.gnu =================================================================== RCS file: cross/system.gnu diff -N cross/system.gnu --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cross/system.gnu 23 Dec 2002 18:45:44 -0000 1.2 @@ -0,0 +1,9 @@ +# +# gnu (hurd) specific configure variables +# +ac_cv_header_stdc=yes +ac_cv_func_closedir_void=no +kb_cv_func_putenv_malloc=no +ac_cv_func_vfork=yes +ac_cv_func_setvbuf_reversed=no + Index: cross/system.linux =================================================================== RCS file: cross/system.linux diff -N cross/system.linux --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cross/system.linux 23 Dec 2002 18:45:44 -0000 1.2 @@ -0,0 +1,12 @@ +# +# linux specific configure variables +# +ac_cv_header_stdc=yes +ac_cv_func_closedir_void=no +ac_cv_func_vfork=yes +ac_cv_func_setvbuf_reversed=no +ac_cv_func_getpgrp_void=yes +ac_cv_sys_restartable_syscalls=yes +ac_cv_func_fnmatch_works=yes +ac_cv_func_getpagesize=yes + Index: debian/changelog =================================================================== RCS file: /home/bastian/debian/cvs/dpkg/debian/changelog,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- debian/changelog 15 Sep 2002 18:22:38 -0000 1.1.1.1 +++ debian/changelog 23 Dec 2002 17:55:49 -0000 1.2 @@ -1,3 +1,9 @@ +dpkg (1.10.9.0.cross) unstable; urgency=low + + * partialy merge dpkg-cross changes. + + -- Bastian Blank <waldi@debian.org> Mon, 23 Dec 2002 18:53:58 +0100 + dpkg (1.10.9) unstable; urgency=low * Fix dereference in main/help.c:cu_closefd(), which was the cause of Index: debian/dpkg-dev.conffiles =================================================================== RCS file: /home/bastian/debian/cvs/dpkg/debian/dpkg-dev.conffiles,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -u -r1.1.1.1 -r1.3 --- debian/dpkg-dev.conffiles 20 Nov 2000 22:03:32 -0000 1.1.1.1 +++ debian/dpkg-dev.conffiles 23 Dec 2002 18:47:28 -0000 1.3 @@ -1,2 +1,9 @@ +/etc/dpkg/cross/config +/etc/dpkg/cross/cpu.i386 +/etc/dpkg/cross/cpu.m68k +/etc/dpkg/cross/cpu.mips +/etc/dpkg/cross/cpu.powerpc +/etc/dpkg/cross/system.gnu +/etc/dpkg/cross/system.linux /etc/dpkg/shlibs.default /etc/dpkg/shlibs.override Index: debian/rules =================================================================== RCS file: /home/bastian/debian/cvs/dpkg/debian/rules,v retrieving revision 1.1.1.1 retrieving revision 1.4 diff -u -r1.1.1.1 -r1.4 --- debian/rules 29 Aug 2002 20:12:24 -0000 1.1.1.1 +++ debian/rules 23 Dec 2002 18:02:42 -0000 1.4 @@ -100,6 +100,7 @@ install -d -m 755 -o root -g root $(TMP_DPKG)/sbin install -d -m 755 -o root -g root $(TMP_DPKG)/var/lib/dpkg -test -d $(INSTALL_TMP)/etc && cp -a $(INSTALL_TMP)/etc $(TMP_DPKG)/ + rm -r $(TMP_DPKG)/etc/dpkg/cross/ set -e ; for i in info alternatives parts updates ; do \ cp -a $(INSTALL_TMP)/var/lib/dpkg/$$i $(TMP_DPKG)/var/lib/dpkg/ ; \ done @@ -184,6 +185,8 @@ $(TMP_DPKG_DEV)/etc/dpkg/ install -p -m 644 -o root -g root debian/shlibs.override \ $(TMP_DPKG_DEV)/etc/dpkg/ + install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/etc/dpkg/cross + mv $(INSTALL_TMP)/etc/dpkg/cross/* $(TMP_DPKG_DEV)/etc/dpkg/cross/ install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/lib/dpkg install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/bin Index: scripts/dpkg-architecture.pl =================================================================== RCS file: /home/bastian/debian/cvs/dpkg/scripts/dpkg-architecture.pl,v retrieving revision 1.1.1.1 retrieving revision 1.6 diff -u -r1.1.1.1 -r1.6 --- scripts/dpkg-architecture.pl 15 Sep 2002 18:26:00 -0000 1.1.1.1 +++ scripts/dpkg-architecture.pl 23 Dec 2002 18:26:08 -0000 1.6 @@ -40,37 +40,43 @@ # 1.0.7 -q should not imply -f, because this prevents setting # make variables with non-standard names correctly. -$version="1.0.0"; +use strict; +use warnings; + +my $version="1.0.0"; $0 = `basename $0`; chomp $0; -$dpkglibdir="/usr/lib/dpkg"; +my $dpkglibdir="/usr/lib/dpkg"; push(@INC,$dpkglibdir); require 'controllib.pl'; -%archtable=('i386', 'i386-linux', - 'sparc', 'sparc-linux', - 'sparc64', 'sparc64-linux', - 'alpha', 'alpha-linux', - 'm68k', 'm68k-linux', - 'arm', 'arm-linux', - 'powerpc', 'powerpc-linux', - 'mips', 'mips-linux', - 'mipsel', 'mipsel-linux', - 'sh3', 'sh3-linux', - 'sh4', 'sh4-linux', - 'sh3eb', 'sh3eb-linux', - 'sh4eb', 'sh4eb-linux', - 'hppa', 'hppa-linux', - 'hurd-i386', 'i386-gnu', - 's390', 's390-linux', - 's390x', 's390x-linux', - 'ia64', 'ia64-linux', - 'openbsd-i386', 'i386-openbsd', - 'freebsd-i386', 'i386-freebsd', - 'darwin-powerpc', 'powerpc-darwin', - 'darwin-i386', 'i386-darwin'); +my %archtable=( + 'i386' => [ 'i386-linux', 'elf32-i386' ], + 'sparc'=> [ 'sparc-linux', 'unknown' ], + 'sparc64' => [ 'sparc64-linux', 'unknown' ], + 'alpha' => [ 'alpha-linux', 'unknown' ], + 'm68k' => [ 'm68k-linux', 'unknown' ], + 'arm' => [ 'arm-linux', 'unknown' ], + 'powerpc' => [ 'powerpc-linux', 'elf32-powerpc' ], + 'mips' => [ 'mips-linux', 'unknown' ], + 'mipsel' => [ 'mipsel-linux', 'unknown' ], + 'sh3' => [ 'sh3-linux', 'unknown' ], + 'sh4' => [ 'sh4-linux', 'unknown' ], + 'sh3eb' => [ 'sh3eb-linux', 'unknown' ], + 'sh4eb' => [ 'sh4eb-linux', 'unknown' ], + 'hppa' => [ 'hppa-linux', 'unknown' ], + 'hurd-i386' => [ 'i386-gnu', 'unknown' ], + 's390' => [ 's390-linux', 'unknown' ], + 's390x' => [ 's390x-linux', 'unknown' ], + 'ia64' => [ 'ia64-linux', 'unknown' ], + 'openbsd-i386' => [ 'i386-openbsd', 'unknown' ], + 'freebsd-i386' => [ 'i386-freebsd', 'unknown' ], + 'darwin-powerpc' => [ 'powerpc-darwin', 'unknown' ], + 'darwin-i386' => [ 'i386-darwin', 'unknown' ], +); sub usageversion { + $_{$archtable{$_}->[0]} = 1 foreach keys %archtable; print STDERR "Debian $0 $version. Copyright (C) 1999,2000,2001 Marcus Brinkmann. This is free software; see the GNU General Public Licence version 2 @@ -89,13 +95,13 @@ -u print command to unset environment variables -c <command> set environment and run the command in it. -Known Debian Architectures are ".join(", ",keys %archtable)." -Known GNU System Types are ".join(", ",map ($archtable{$_},keys %archtable))." +Known Debian Architectures are ".join(", ",sort keys %archtable)." +Known GNU System Types are ".join(", ",sort keys %_)." "; } sub rewrite_gnu_cpu { - local ($_) = @_; + $_ = shift; s/(?:i386|i486|i586|i686|pentium)(.*linux)/i386$1/; s/ppc/powerpc/; @@ -103,73 +109,52 @@ } sub gnu_to_debian { - local ($gnu) = @_; - local (@list); - local ($a); + my $gnu = shift; + my @list; $gnu = &rewrite_gnu_cpu($gnu); - foreach $a (keys %archtable) { - push @list, $a if $archtable{$a} eq $gnu; + foreach (keys %archtable) { + push @list, $_ if $archtable{$_}->[0] eq $gnu; } return @list; } -# Set default values: - -$deb_build_arch = `dpkg --print-installation-architecture`; -if ($?>>8) { - &syserr("dpkg --print-installation-architecture filed"); -} -chomp $deb_build_arch; -$deb_build_gnu_type = $archtable{$deb_build_arch}; -$deb_build_gnu_cpu = $deb_build_gnu_type; -$deb_build_gnu_system = $deb_build_gnu_type; -$deb_build_gnu_cpu =~ s/-.*$//; -$deb_build_gnu_system =~ s/^.*-//; - -# Default host: Current gcc. -$gcc = `\${CC:-gcc} --print-libgcc-file-name`; -if ($?>>8) { - &warn("Couldn't determine gcc system type, falling back to default (native compilation)"); - $gcc = ''; -} else { - $gcc =~ s!^.*gcc-lib/([^/]*)/(?:egcs-)?\d+(?:[.\da-z]*)/libgcc.*$!$1!s; - if (defined $1 and $1 ne '') { - $gcc = $1; - } else { - &warn("Couldn't determine gcc system type, falling back to default (native compilation)"); - $gcc = ''; - } -} - -if ($gcc ne '') { - @list = &gnu_to_debian($gcc); - if ($#list == -1) { - &warn ("Unknown gcc system type $gcc, falling back to default (native compilation)"), - } elsif ($#list > 0) { - &warn ("Ambiguous gcc system type $gcc, you must specify Debian architecture, too (one of ".join(", ",@list).")"); - } else { - $gcc=$archtable{$list[0]}; - $deb_host_arch = $list[0]; - $deb_host_gnu_type = $gcc; - ($deb_host_gnu_system = $gcc) =~ s/^.*-//; - ($deb_host_gnu_cpu = $gcc ) =~ s/-.*$//; - } -} -if (!defined($deb_host_arch)) { - # Default host: Native compilation. - $deb_host_arch = $deb_build_arch; - $deb_host_gnu_cpu = $deb_build_gnu_cpu; - $deb_host_gnu_system = $deb_build_gnu_system; - $deb_host_gnu_type = $deb_build_gnu_type; -} - +my %env; +my @list; -$req_host_arch = ''; -$req_host_gnu_type = ''; -$action='l'; -$force=0; +my @ordered_d = qw( + DEB_BUILD_ARCH + DEB_BUILD_GNU_CPU + DEB_BUILD_GNU_SYSTEM + DEB_BUILD_GNU_TYPE + DEB_BUILD_ELF_TYPE + DEB_HOST_ARCH + DEB_HOST_GNU_CPU + DEB_HOST_GNU_SYSTEM + DEB_HOST_GNU_TYPE + DEB_HOST_ELF_TYPE +); + +my @ordered_r = qw( + CC + CXX + AS + AR + LD + RANLIB + STRIP + CONFIG_SITE + MAKEFLAGS + PKG_CONFIG_PATH +); + +my $req_host_arch = ''; +my $req_host_gnu_type = ''; +my $req_variable_to_print; +my $action = 'l'; +my $force = 0; +my $type = 'd'; while (@ARGV) { $_=shift(@ARGV); @@ -188,14 +173,74 @@ } elsif (m/^-c$/) { $action = 'c'; last; + } elsif (m/^-r$/) { + $type = 'r'; } else { usageerr("unknown option \`$_'"); } } +# Set default values: + +$env{'DEB_BUILD_ARCH'} = `dpkg --print-installation-architecture`; +if ($?>>8) { + &syserr("dpkg --print-installation-architecture filed"); +} +chomp $env{'DEB_BUILD_ARCH'}; +$env{'DEB_BUILD_GNU_TYPE'} = $env{'DEB_BUILD_GNU_CPU'} = $env{'DEB_BUILD_GNU_SYSTEM'} = $archtable{$env{'DEB_BUILD_ARCH'}}->[0]; +$env{'DEB_BUILD_GNU_CPU'} =~ s/-.*$//; +$env{'DEB_BUILD_GNU_SYSTEM'} =~ s/^.*-//; +$env{'DEB_BUILD_ELF_TYPE'} = $archtable{$env{'DEB_BUILD_ARCH'}}->[1]; + +$env{CC} = "gcc"; +$env{CXX} = "g++"; +$env{AR} = "ar"; +$env{AS} = "as"; +$env{LD} = "ld"; +$env{RANLIB} = "ranlib"; +$env{STRIP} = "strip"; + +# Default host: Current gcc. +my $gcc = ''; +if (!$req_host_arch) { + $gcc = `\${CC:-gcc} --print-libgcc-file-name`; + if ($?>>8) { + &warn("Couldn't determine gcc system type, falling back to default (native compilation)"); + $gcc = ''; + } else { + $gcc =~ s#^.*gcc-lib/([^/]*)/(?:egcs-)?\d+(?:[.\da-z]*)/libgcc.*$#$1#s; + if (defined $1 and $1 ne '') { + $gcc = $1; + } else { + &warn("Couldn't determine gcc system type, falling back to default (native compilation)"); + $gcc = ''; + } + } +} + +if ($gcc ne '') { + @list = &gnu_to_debian($gcc); + if ($#list == -1) { + &warn ("Unknown gcc system type $gcc, falling back to default (native compilation)"), + } elsif ($#list > 0) { + &warn ("Ambiguous gcc system type $gcc, you must specify Debian architecture, too (one of ".join(", ",@list).")"); + } else { + $gcc=$archtable{$list[0]}->[0]; + $env{'DEB_HOST_ARCH'} = $list[0]; + $env{'DEB_HOST_GNU_TYPE'} = $gcc; + ($env{'DEB_HOST_GNU_SYSTEM'} = $gcc) =~ s/^.*-//; + ($env{'DEB_HOST_GNU_CPU'} = $gcc ) =~ s/-.*$//; + $env{'DEB_HOST_ELF_TYPE'} = $archtable{$list[0]}->[1]; + } +} +if (!defined($env{'DEB_HOST_ARCH'})) { + # Default host: Native compilation. + $env{'DEB_HOST_'.$_} = $env{'DEB_BUILD_'.$_} foreach qw(ARCH GNU_CPU GNU_SYSTEM GNU_TYPE ELF_TYPE); +} + if ($req_host_arch ne '' && $req_host_gnu_type eq '') { die ("unknown Debian architecture $req_host_arch, you must specify GNU system type, too") if !exists $archtable{$req_host_arch}; - $req_host_gnu_type = $archtable{$req_host_arch} + $req_host_gnu_type = $archtable{$req_host_arch}->[0] } if ($req_host_gnu_type ne '' && $req_host_arch eq '') { @@ -205,56 +250,73 @@ $req_host_arch = $list[0]; } -if (exists $archtable{$req_host_arch}) { - &warn("Default GNU system type $archtable{$req_host_arch} for Debian arch $req_host_arch does not match specified GNU system type $req_host_gnu_type\n") if $archtable{$req_host_arch} ne $req_host_gnu_type; +if (exists $archtable{$req_host_arch}->[0]) { + &warn("Default GNU system type ".$archtable{$req_host_arch}->[0]." for Debian arch $req_host_arch does not match specified GNU system type $req_host_gnu_type\n") if $archtable{$req_host_arch}->[0] ne $req_host_gnu_type; } die "couldn't parse GNU system type $req_host_gnu_type, must be arch-os or arch-vendor-os" if $req_host_gnu_type !~ m/^([\w\d]+(-[\w\d]+){1,2})?$/; -$deb_host_arch = $req_host_arch if $req_host_arch ne ''; +$env{'DEB_HOST_ARCH'} = $req_host_arch if $req_host_arch ne ''; if ($req_host_gnu_type ne '') { - $deb_host_gnu_cpu = $deb_host_gnu_system = $deb_host_gnu_type = $req_host_gnu_type; - $deb_host_gnu_cpu =~ s/-.*$//; - $deb_host_gnu_system =~ s/^.*-//; + $env{'DEB_HOST_GNU_CPU'} = $env{'DEB_HOST_GNU_SYSTEM'} = $env{'DEB_HOST_GNU_TYPE'} = $req_host_gnu_type; + $env{'DEB_HOST_GNU_CPU'} =~ s/-.*$//; + $env{'DEB_HOST_GNU_SYSTEM'} =~ s/^.*-//; + @list = &gnu_to_debian ($req_host_gnu_type); + $env{'DEB_HOST_ELF_TYPE'} = $archtable{$list[0]}->[1]; } -#$gcc = `\${CC:-gcc} --print-libgcc-file-name`; -#$gcc =~ s!^.*gcc-lib/(.*)/\d+(?:.\d+)*/libgcc.*$!$1!s; -&warn("Specified GNU system type $deb_host_gnu_type does not match gcc system type $gcc.") if ($gcc ne '') && ($gcc ne $deb_host_gnu_type); +&warn("Specified GNU system type $env{'DEB_HOST_GNU_TYPE'} does not match gcc system type $gcc.") if ($gcc ne '') && ($gcc ne $env{'DEB_HOST_GNU_TYPE'}); + +if ($env{'DEB_HOST_ARCH'} ne $env{'DEB_BUILD_ARCH'}) { + foreach (qw(CC CXX)) { + $env{$_} = $env{'DEB_HOST_GNU_TYPE'} . "-" . $env{$_}; + } + + $env{PKG_CONFIG_PATH} = "/usr/" . $env{'DEB_HOST_GNU_TYPE'} . "/lib/pkgconfig/"; +} +else { + $env{PKG_CONFIG_PATH} = "/usr/lib/pkgconfig/"; +} +if ($env{'DEB_HOST_GNU_CPU'} ne $env{'DEB_BUILD_GNU_CPU'}) { + foreach (qw(AR AS LD RANLIB STRIP)) { + $env{$_} = $env{'DEB_HOST_GNU_TYPE'} . "-" . $env{$_}; + } +} + +$env{CONFIG_SITE} = "/etc/dpkg/cross/config"; + +my $makeflags = "w -- "; +if (!$force and exists $ENV{'MAKEFLAGS'}) { + $makeflags = $ENV{'MAKEFLAGS'}; + $makeflags .= " -- " if $makeflags !~ / -- /; +} +foreach (qw(CC CXX AR AS LD RANLIB STRIP)) { + $makeflags .= " $_=$env{$_}"; +} +$env{'MAKEFLAGS'} = "\"$makeflags\""; + +my @ordered; + +if ($type eq 'd') { + @ordered = @ordered_d; +} +elsif ($type eq 'r') { + @ordered = @ordered_r; +} -%env = (); if (!$force) { - $deb_build_arch = $ENV{DEB_BUILD_ARCH} if (exists $ENV{DEB_BUILD_ARCH}); - $deb_build_gnu_cpu = $ENV{DEB_BUILD_GNU_CPU} if (exists $ENV{DEB_BUILD_GNU_CPU}); - $deb_build_gnu_system = $ENV{DEB_BUILD_GNU_SYSTEM} if (exists $ENV{DEB_BUILD_GNU_SYSTEM}); - $deb_build_gnu_type = $ENV{DEB_BUILD_GNU_TYPE} if (exists $ENV{DEB_BUILD_GNU_TYPE}); - $deb_host_arch = $ENV{DEB_HOST_ARCH} if (exists $ENV{DEB_HOST_ARCH}); - $deb_host_gnu_cpu = $ENV{DEB_HOST_GNU_CPU} if (exists $ENV{DEB_HOST_GNU_CPU}); - $deb_host_gnu_system = $ENV{DEB_HOST_GNU_SYSTEM} if (exists $ENV{DEB_HOST_GNU_SYSTEM}); - $deb_host_gnu_type = $ENV{DEB_HOST_GNU_TYPE} if (exists $ENV{DEB_HOST_GNU_TYPE}); -} - -@ordered = qw(DEB_BUILD_ARCH DEB_BUILD_GNU_CPU - DEB_BUILD_GNU_SYSTEM DEB_BUILD_GNU_TYPE - DEB_HOST_ARCH DEB_HOST_GNU_CPU - DEB_HOST_GNU_SYSTEM DEB_HOST_GNU_TYPE); - -$env{'DEB_BUILD_ARCH'}=$deb_build_arch; -$env{'DEB_BUILD_GNU_CPU'}=$deb_build_gnu_cpu; -$env{'DEB_BUILD_GNU_SYSTEM'}=$deb_build_gnu_system; -$env{'DEB_BUILD_GNU_TYPE'}=$deb_build_gnu_type; -$env{'DEB_HOST_ARCH'}=$deb_host_arch; -$env{'DEB_HOST_GNU_CPU'}=$deb_host_gnu_cpu; -$env{'DEB_HOST_GNU_SYSTEM'}=$deb_host_gnu_system; -$env{'DEB_HOST_GNU_TYPE'}=$deb_host_gnu_type; + foreach (@ordered) { + $env{$_} = $ENV{$_} if exists $ENV{$_}; + } +} if ($action eq 'l') { - foreach $k (@ordered) { - print "$k=$env{$k}\n"; + foreach (@ordered) { + print "$_=$env{$_}\n"; } } elsif ($action eq 's') { - foreach $k (@ordered) { - print "$k=$env{$k}; "; + foreach (@ordered) { + print "$_=$env{$_}; "; } print "export ".join(" ",@ordered)."\n"; } elsif ($action eq 'u') { Index: scripts/dpkg-buildpackage.sh =================================================================== RCS file: /home/bastian/debian/cvs/dpkg/scripts/dpkg-buildpackage.sh,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -u -r1.1.1.1 -r1.3 --- scripts/dpkg-buildpackage.sh 25 May 2002 02:57:15 -0000 1.1.1.1 +++ scripts/dpkg-buildpackage.sh 23 Dec 2002 18:51:19 -0000 1.3 @@ -157,6 +157,12 @@ pv="${package}_${sversion}" pva="${package}_${sversion}_${arch}" +if [ "$arch" != "source" ]; then + if [ "$targetarch" ]; then + eval `dpkg-architecture -a${targetarch} -t${targetgnusystem} -s -r` + fi +fi + signfile () { if test "$signinterface" = "gpg" ; then (cat "../$1" ; echo "") | \ Index: scripts/dpkg-shlibdeps.pl =================================================================== RCS file: /home/bastian/debian/cvs/dpkg/scripts/dpkg-shlibdeps.pl,v retrieving revision 1.1.1.1 retrieving revision 1.5 diff -u -r1.1.1.1 -r1.5 --- scripts/dpkg-shlibdeps.pl 20 Jun 2001 16:30:15 -0000 1.1.1.1 +++ scripts/dpkg-shlibdeps.pl 23 Dec 2002 19:00:51 -0000 1.5 @@ -23,6 +23,13 @@ push(@INC,$dpkglibdir); require 'controllib.pl'; +$cross = 0; + +if (defined $ENV{'DEB_BUILD_ARCH'} and defined $ENV{'DEB_HOST_ARCH'} and $ENV{'DEB_BUILD_ARCH'} ne $ENV{'DEB_HOST_ARCH'}) { + $cross = 1; + $cross_arch = $ENV{'DEB_HOST_GNU_TYPE'}; +} + sub usageversion { print STDERR "Debian dpkg-shlibdeps $version. @@ -97,14 +104,16 @@ # First we get an ldd output to see what libs + paths we have at out # disposal. my %so2path = (); - defined($c= open(P,"-|")) || syserr("cannot fork for ldd"); - if (!$c) { exec("ldd","--",$exec[$i]); syserr("cannot exec ldd"); } - while (<P>) { - if (m,^\s+(\S+)\s+=>\s+(\S+)\s+\(0x.+\)?$,) { - $so2path{$1} = $2; + if (!$cross) { + defined($c= open(P,"-|")) || syserr("cannot fork for ldd"); + if (!$c) { exec("ldd","--",$exec[$i]); syserr("cannot exec ldd"); } + while (<P>) { + if (m,^\s+(\S+)\s+=>\s+(\S+)\s+\(0x.+\)?$,) { + $so2path{$1} = $2; + } } + close(P); $? && subprocerr("ldd on \`$exec[$i]'"); } - close(P); $? && subprocerr("ldd on \`$exec[$i]'"); # Now we get the direct deps of the program. We then check back with # the ldd output from above to see what our path is. @@ -116,13 +125,25 @@ if (m,^\s*NEEDED\s+((\S+)\.so\.(\S+))$,) { push(@libname,$2); push(@libsoname,$3); push(@libf,$execf[$i]); - &warn("could not find path for $1") unless defined($so2path{$1}); - push(@libfiles,$so2path{$1}); + if ($cross) { + &warn("could not find path for $1") unless -f "/usr/".$cross_arch."/lib/".$1; + push(@libfiles,"/usr/".$cross_arch."/lib/".$1); + } + else { + &warn("could not find path for $1") unless defined($so2path{$1}); + push(@libfiles,$so2path{$1}); + } } elsif (m,^\s*NEEDED\s+((\S+)-(\S+)\.so)$,) { push(@libname,$2); push(@libsoname,$3); push(@libf,$execf[$i]); - &warn("could not find path for $1") unless defined($so2path{$1}); - push(@libfiles,$so2path{$1}); + if ($cross) { + &warn("could not find path for $1") unless -f "/usr/".$cross_arch."/lib/".$1; + push(@libfiles,"/usr/".$cross_arch."/lib/".$1); + } + else { + &warn("could not find path for $1") unless defined($so2path{$1}); + push(@libfiles,$so2path{$1}); + } } else { m,^\s*NEEDED\s+(\S+)$,; &warn("format of $1 not recognized");
Attachment:
pgp3NsaJx4sEU.pgp
Description: PGP signature