[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

New version of implementation. (was: Re: DRAFT: Fixing the architecture query options of dpkg.



Hello,

I have changed the script somewhat. It now tries to guess the default target
gnu os from gcc, and warns if there is some inconsistency.

Also, existing environment is honoured unless -f (force) flag is given.

I was able to build a Debian package with modified versions of
dpkg-buildpackage, dpkg-gencontrol and controllib.pl and my script (and
dpkg-cross): 

dpkg-buildpackage -B -rfakeroot

  produced i386 package.

dpkg-buildpackage -B -rfakeroot -ahurd-i386

  produced hurd package.

CC=i386-gnu-gcc dpkg-buildpackage -B -rfakeroot

  produced hurd (!) package.

Please look at the script in my master home dir (marcus), and also try to
take a look at the diff's, which are very small, therefore I append them
here. The diff's below are the only changes needed to dpkg-dev!

I would like to make this happen really soon now (I won't rush it though).

Thanks,
Marcus

--- /usr/lib/dpkg/controllib.pl	Sun Nov  1 18:50:46 1998
+++ controllib.pl	Mon Jan 11 19:32:08 1999
@@ -62,9 +62,13 @@
 }
 
 sub findarch {
-    $arch=`dpkg --print-architecture`;
-    $? && &subprocerr("dpkg --print-architecture");
-    $arch =~ s/\n$//;
+    if (exists $ENV{DEB_TARGET_ARCH}) {
+	$arch=$ENV{DEB_TARGET_ARCH};
+    } else {
+	$arch=`dpkg --print-architecture`;
+	$? && &subprocerr("dpkg --print-architecture");
+       chomp $arch;
+    }
     $substvar{'Arch'}= $arch;
 }

--- /usr/bin/dpkg-buildpackage.orig	Sun Nov  1 18:50:45 1998
+++ dpkg-buildpackage	Mon Jan 11 18:40:30 1999
@@ -73,6 +73,7 @@
 	-sa)	sourcestyle=-sa ;;
 	-sd)	sourcestyle=-sd ;;
 	-tc)	cleansource=true ;;
+	-t*)    targetgnusystem="$value" ;;          # Order DOES matter!
 	-nc)	noclean=true; binaryonly=-b ;;
 	-b)	binaryonly=-b ;;
 	-B)	binaryonly=-B; binarytarget=binary-arch ;;
@@ -109,7 +110,9 @@
 mustsetvar version "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" "source version"
 if [ -n "$maint" ]; then maintainer="$maint"; 
 else mustsetvar maintainer "`dpkg-parsechangelog | sed -n 's/^Maintainer: //p'`" "source maintainer"; fi
+command -v dpkg-architecture > /dev/null 2>&1 && eval `dpkg-architecture -a${arch} -t${targetgnusystem} -s`
 test "${opt_a}" \
+	|| arch=${DEB_TARGET_ARCH} && test "${arch}" \
 	|| mustsetvar arch "`dpkg --print-architecture`" "build architecture"
 
 sversion=`echo "$version" | perl -pe 's/^\d+://'`

--- /usr/bin/dpkg-gencontrol	Sun Nov  1 18:50:44 1998
+++ dpkg-gencontrol	Mon Jan 11 19:12:02 1999
@@ -88,10 +88,14 @@
 }
 
 $arch = $override{Architecture} or do {
+    if (exists $ENV{DEB_TARGET_ARCH}) {
+	$arch=$ENV{DEB_TARGET_ARCH};
+    } else {
        $arch=`dpkg --print-architecture`;
        $? && &subprocerr("dpkg --print-architecture");
+    }
 };
-$arch =~ s/\n$//;
+chomp $arch;
 
 &parsechangelog;
 &parsecontrolfile;
 


-- 
"Rhubarb is no Egyptian god."        Debian GNU/Linux        finger brinkmd@ 
Marcus Brinkmann                   http://www.debian.org    master.debian.org
Marcus.Brinkmann@ruhr-uni-bochum.de                        for public  PGP Key
http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/       PGP Key ID 36E7CD09


Reply to: