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

Re: (maybe) libffi problem for armhf - help needed!



On Wed, Mar 28, 2012 at 06:47:25PM +0100, Steve McIntyre wrote:
>
>I'm also scanning through all the armhf packages on my local mirror
>looking for all calls to "ffi_prep_cif" right now, to give us a list
>of things that we definitely need to investigate. I started looking at
>a handful of packages and (thankfully) most of the ones I looked at
>didn't use ffi directly, it was their build-deps/libraries that did.
>
>I'll send another mail to summarise that once the scan is done; it's
>going to take a few hours...

And I've done that (script attached for interest). Full list of
packages that actually *directly* reference "ffi_prep_cif" is:

agda-bin_2.3.0.1-1_armhf.deb
alex_3.0.1-1+b1_armhf.deb
arbtt_0.6.1-2_armhf.deb
bluetile_0.5.3-1_armhf.deb
bluetile_0.6-1_armhf.deb
bnfc_2.2-3.1_armhf.deb
bustle_0.2.5-1_armhf.deb
c2hs_0.16.3-2_armhf.deb
carettah_0.0.7-3_armhf.deb
cpphs_1.11-4+b2_armhf.deb
cpphs_1.13.3-2_armhf.deb
darcs-monitor_0.4.2-1_armhf.deb
darcs_2.5.2-6_armhf.deb
distro-info_0.5.1_armhf.deb
distro-info_0.6_armhf.deb
drift_2.2.3-2.1_armhf.deb
frown_0.6.1-11.1_armhf.deb
frown_0.6.1-12_armhf.deb
libgwrap-runtime2_1.9.13-2_armhf.deb
gambas2-runtime_2.23.1-1.1_armhf.deb
ganeti-htools_0.3.1-2_armhf.deb
ganeti-htools_0.3.1-3_armhf.deb
gauche-c-wrapper_0.6.1-4.1_armhf.deb
libgo0_4.7-20120205-1_armhf.deb
gcc-snapshot_20120313-1_armhf.deb
libgcj10_4.4.6-11+b1_armhf.deb
libgcj10_4.4.7-1_armhf.deb
libgcj12_4.6.3-1_armhf.deb
libgcj13_4.7-20120205-1_armhf.deb
libgcj13_4.7.0-1_armhf.deb
ghc-haddock_7.0.4-8+b1_armhf.deb
ghc-haddock_7.4.1-2_armhf.deb
ghc_7.0.4-8+b1_armhf.deb
ghc_7.4.1-2_armhf.deb
git-annex_3.20120123_armhf.deb
git-annex_3.20120315_armhf.deb
github-backup_1.20120314_armhf.deb
libglib2.0-0-refdbg_2.30.2-6_armhf.deb
libglib2.0-0_2.30.2-6_armhf.deb
libglib2.0-udeb_2.30.2-6_armhf.udeb
libgst7_3.2.4-2_armhf.deb
libgnustep-base1.22_1.22.1-2_armhf.deb
libgirepository-1.0-1_1.31.10-1_armhf.deb
libgirepository-1.0-1_1.31.22-1_armhf.deb
gtk2hs-buildtools_0.12.1-2_armhf.deb
happy_1.18.6-1+b1_armhf.deb
happy_1.18.9-1_armhf.deb
cabal-install_0.10.2-3_armhf.deb
libghc-ghc-events-dev_0.2.0.1-2_armhf.deb
libghc-ghc-events-dev_0.4.0.0-1_armhf.deb
hledger-interest_1.3-2_armhf.deb
hledger-vty_0.16.1-3_armhf.deb
hledger_0.16.1-4_armhf.deb
hledger_0.17-2_armhf.deb
libghc-hsx-dev_0.9.1-2_armhf.deb
leksah-server_0.10.0.4-2_armhf.deb
leksah-server_0.12.0.4-1_armhf.deb
leksah_0.10.0.4-2_armhf.deb
leksah_0.12.0.3-2_armhf.deb
ppsh_1.1.1-3_armhf.deb
ppsh_1.1.1-4_armhf.deb
libghc-haskelldb-hdbc-odbc-dev_2.1.0-1_armhf.deb
libghc-haskelldb-hdbc-odbc-dev_2.1.0-2_armhf.deb
libghc-haskelldb-hdbc-postgresql-dev_2.1.0-1_armhf.deb
libghc-haskelldb-hdbc-postgresql-dev_2.1.0-2_armhf.deb
libghc-haskelldb-hdbc-sqlite3-dev_2.1.0-1_armhf.deb
libghc-haskelldb-hdbc-sqlite3-dev_2.1.0-2_armhf.deb
haxml_1.20.2-2_armhf.deb
haxml_1.22.5-2_armhf.deb
hbro_0.8.0.0-1_armhf.deb
hbro_0.8.0.0-2_armhf.deb
hlint_1.8.24-1_armhf.deb
hmake_3.14-3_armhf.deb
hpodder_1.1.5.0+nmu3_armhf.deb
hscolour_1.19-2+b1_armhf.deb
hscolour_1.19-3_armhf.deb
iceape_2.7.2-1_armhf.deb
iceape_2.7.3-2_armhf.deb
icedove_10.0.3-1_armhf.deb
icedove_8.0-2+b1_armhf.deb
icedove_9.0.1-1_armhf.deb
libmozjs10d_10.0.2-1_armhf.deb
libmozjs10d_10.0.3esr-2_armhf.deb
spidermonkey-bin_10.0.2-1_armhf.deb
spidermonkey-bin_10.0.3esr-2_armhf.deb
xulrunner-dev_10.0.2-1_armhf.deb
xulrunner-dev_10.0.3esr-2_armhf.deb
kaya_0.4.4-5_armhf.deb
lhs2tex_1.17-1_armhf.deb
libllvm2.8_2.8-7_armhf.deb
libllvm2.9_2.9+dfsg-5_armhf.deb
libllvm3.0_3.0-5_armhf.deb
libllvm3.0_3.0-8_armhf.deb
libllvm3.0_3.0-9_armhf.deb
libffi5-udeb_3.0.10-3+b1_armhf.udeb
libffi5_3.0.10-3+b1_armhf.deb
libffi6-udeb_3.0.11~rc1-5_armhf.udeb
libffi6_3.0.11~rc1-5_armhf.deb
libjna-java_3.2.7-4_armhf.deb
libmozjs185-1.0_1.8.5-1.0.0+dfsg-3_armhf.deb
pandoc_1.8.2.1-2_armhf.deb
pandoc_1.9.1.1-1_armhf.deb
pxsl-tools_1.0-5_armhf.deb
python-gobject-2-dbg_2.28.6-10_armhf.deb
python-gobject-2-dbg_2.28.6-9_armhf.deb
python-gobject-2_2.28.6-10_armhf.deb
python-gobject-2_2.28.6-9_armhf.deb
python-gi-dbg_3.1.0-2_armhf.deb
python-gi_3.1.0-2_armhf.deb
python3-gi-dbg_3.1.0-2_armhf.deb
python3-gi_3.1.0-2_armhf.deb
python2.6-dbg_2.6.7-4+b1_armhf.deb
python2.6_2.6.7-4+b1_armhf.deb
python2.7-dbg_2.7.2-8+b1_armhf.deb
python2.7-dbg_2.7.3~rc2-1_armhf.deb
python2.7_2.7.2-8+b1_armhf.deb
python2.7_2.7.3~rc2-1_armhf.deb
libpython3.2_3.2.3~rc1-1_armhf.deb
libpython3.2_3.2.3~rc2-1_armhf.deb
python3.2-dbg_3.2.3~rc1-1_armhf.deb
python3.2-dbg_3.2.3~rc2-1_armhf.deb
python3.2-minimal_3.2.3~rc1-1_armhf.deb
python3.2-minimal_3.2.3~rc2-1_armhf.deb
qiime_1.3.0-2_armhf.deb
qiime_1.4.0-1_armhf.deb
racket_5.2.1+dfsg1-4_armhf.deb
raincat_1.1-2_armhf.deb
rss2irc_0.4.2-2_armhf.deb
rss2irc_0.4.2-3_armhf.deb
libruby1.9.1_1.9.3.0-2_armhf.deb
libseed-gtk3-0_3.2.0-1_armhf.deb
shelltestrunner_1.2.1-2_armhf.deb
squeak-vm_4.4.7.2357-1.1_armhf.deb
threadscope_0.1.3-1_armhf.deb
threadscope_0.2.1-1_armhf.deb
twidge_1.0.8.1+nmu1_armhf.deb
libghc-wash-dev_2.12.0.1-7_armhf.deb
libwayland0_0.1.0~2-1_armhf.deb
xmobar_0.14-2_armhf.deb
xmonad_0.10-2_armhf.deb
xmonad_0.10-4_armhf.deb

Again, this seems to be mainly haskell stuff AFAICS. I'll remove the
noise of different versions of the same package and convert to source
package names, then stick it in the wiki.

-- 
Steve McIntyre, Cambridge, UK.                                steve@einval.com
You lock the door
And throw away the key
There's someone in my head but it's not me 
#!/usr/bin/perl -w

use strict;
use File::Find;
use File::Basename;
use File::Path qw(remove_tree);
use English '-no_match_vars';

my $mirror = "/mirror/debian";
my $tmp_work = "/mirror/tmp/armhf-check";
my @debs;
my $out = $tmp_work . "/out";

my $total_callers = 0;
my $pkgs_scanned = 0;
my $callers = 0;

sub list_debs {
	m/_armhf.*deb/ and push(@debs, $File::Find::name);
}

sub check_line($) {
	my $line = shift;

	if ($line =~ m#ffi_prep_cif#) {
		print OUT "caller for ffi_prep_cif: $File::Find::name: $line\n";
		$callers++;
	}
}

sub check_deb {
	my $foutput;
	my $file = $_;
	my $pid;

	if (-f $file) {

		# Check to see if we're looking at an executable/library
		# Safer version of `foo`
		$pid = open(FILE, "-|");
		if (!defined $pid) {
			die "Can't fork: $!\n";
		}
		if ($pid) {           # parent
			while (<FILE>) {
				$foutput .= "$_";
			}
			close FILE;
		} else {
			exec "file", $file or die "can't exec file: $!\n";
		}
		chomp $foutput;

		if ($foutput =~ m/ELF.*ARM/) {
			$pid = open(STRINGS, "-|");
			if (!defined $pid) {
				die "Can't fork: $!\n";
			}
			if ($pid) {           # parent
				while (<STRINGS>) {
					while (my $line = <STRINGS>) {
						chomp $line;
						check_line($line);
					}
				}
				close STRINGS;
			} else {
				exec "strings", "--", $file or die "can't exec strings: $!";
			}
		}
	}
}

if ($#ARGV == -1) {
	find(\&list_debs, ($mirror));
} else {
	push(@debs, @ARGV);
}

print scalar(@debs) . " packages found\n";

chdir ($tmp_work);

open (OUT, "> $out");

foreach my $pkg (sort(@debs)) {
	my $dir = basename($pkg);
	$callers = 0;
	$pkgs_scanned++;

	`dpkg -x $pkg $dir`;
	find({ wanted => \&check_deb, no_chdir => 1 }, ($dir));
	$total_callers += $callers;
	print "($pkgs_scanned/" . scalar(@debs). ") $callers callers ($total_callers) $dir scanned\n";
	remove_tree($dir);
}
close OUT;
exit 0;


Reply to: