I recently started having problems with apt-cross on my system.  It was
failing to recognize the suite I was passing to it.  Everything is up to
date on my Squeeze testing system, and I am using apt-cross 0.13.4 and
libcache-apt-perl 0.13.4.  It seems that the problem stems from what I can
only assume is a change in the output of 'apt-cache  policy'.  I found the
offending line that is no longer matching in
/usr/share/perl5/Cache/Apt/Config.pm and fixed it.  Below are the results of
my debugging process.

Best Regards,

-Jim Heck

** Failing output of apt-cross

jh...@squeeze2:~/opt-crosslibs-101108$ apt-cross -v -a armel -m
http://ftp.us.debian.org/debian/ -S testing -u
Use of uninitialized value $max_pri_suite in pattern match (m//) at
/usr/share/perl5/Cache/Apt/Config.pm line 273.
Use of uninitialized value $Cache::Apt::Config::codename in pattern match
(m//) at /usr/share/perl5/Cache/Apt/Config.pm line 274.
Use of uninitialized value $max_pri_suite in pattern match (m//) at
/usr/share/perl5/Cache/Apt/Config.pm line 273.
Use of uninitialized value $Cache::Apt::Config::codename in pattern match
(m//) at /usr/share/perl5/Cache/Apt/Config.pm line 274.
Use of uninitialized value $max_pri_suite in exists at
/usr/share/perl5/Cache/Apt/Config.pm line 276.
Use of uninitialized value $max_pri_suite in hash element at
/usr/share/perl5/Cache/Apt/Config.pm line 276.
Unable to determine apt-cache policy for Debian main! - using unstable. at
/usr/bin/apt-cross line 156
Updating testing on armel using http://ftp.us.debian.org/debian/
debug: recreating /home/jheck/.apt-cross/sources.testing
Adding http://ftp.us.debian.org/debian/ to
/home/jheck/.apt-cross/sources.testing
Updating apt-cache for armel
Get:1 http://ftp.us.debian.org testing Release.gpg [835 B]
...

** Current output of 'apt-cache policy' for my machine

jh...@squeeze2:~$ apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://ftp.us.debian.org/debian/ testing/main i386 Packages
     release o=Debian,a=testing,n=squeeze,l=Debian,c=main
     origin ftp.us.debian.org
Pinned packages:

** Match line difference that gets everything working again in
/usr/share/perl5/Cache/Apt/Config.pm

jh...@squeeze2:~$ diff -Naur /usr/share/perl5/Cache/Apt/Config.pm.orig
/usr/share/perl5/Cache/Apt/Config.pm
--- /usr/share/perl5/Cache/Apt/Config.pm.orig    2010-02-27
14:12:31.000000000 -0500
+++ /usr/share/perl5/Cache/Apt/Config.pm    2010-11-08 13:25:58.000000000
-0500
@@ -244,7 +244,7 @@
     open POLICY, "apt-cache policy |" or carp "Unable to read apt policy:
$!";
     return "unstable" unless <POLICY>;
     for (<POLICY>) {
-        if (/^\s*(\d+)\s(\w+):.*\s+(\w+)\/\w+\/?\w*\sPackages$/) {
+        if (/^\s*(\d+)\s(\w+):.*\s+(\w+)\/\w+\/?\s+\w+\s+Packages$/) {
             $cur_pri = $1;
             $codename = $3;
             # Improved to detect cdrom only installs. Anthony Sharobaiko <
[email protected]>


** Working output from apt-cross with the above patch to
/usr/share/perl5/Cache/Apt/Config.pm

jh...@squeeze2:~/opt-crosslibs-101108$ apt-cross -v -a armel -m
http://ftp.us.debian.org/debian/ -S testing -u
Updating testing on armel using http://ftp.us.debian.org/debian/
debug: recreating /home/jheck/.apt-cross/sources.testing
Adding http://ftp.us.debian.org/debian/ to
/home/jheck/.apt-cross/sources.testing
Updating apt-cache for armel
Get:1 http://ftp.us.debian.org testing Release.gpg [835 B]
...

Reply via email to