[Emdebian-logs] [SCM] Root filesystem generation tool (multistrap wrapper) branch, master, updated. e24f9c2f51b59408e09e08aef00c8ab100f54ad5
josch
josch at pyneo.org
Tue Oct 18 21:16:09 UTC 2011
The following commit has been merged in the master branch:
commit 360b4b702305ca6d03b5f52675ce841af7a522ed
Author: josch <josch at pyneo.org>
Date: Tue Oct 18 23:12:31 2011 +0200
use FAKECHROOT_CMD_SUBST instead of backing up and replacing files in chroot
diff --git a/default/root/sbin/ldconfig b/default/root/sbin/ldconfig
deleted file mode 100755
index a7b8b6d..0000000
--- a/default/root/sbin/ldconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh -e
-
-exit
diff --git a/default/root/usr/bin/ldd b/default/root/usr/bin/ldd
deleted file mode 100755
index 53e9533..0000000
--- a/default/root/usr/bin/ldd
+++ /dev/null
@@ -1,201 +0,0 @@
-#!/usr/bin/perl
-
-# fakeldd
-#
-# Replacement for ldd with usage of objdump
-#
-# (c) 2003-2010 Piotr Roszatycki <dexter at debian.org>, LGPL
-
-use strict;
-
-my @Libs = ();
-my %Libs = ();
-
-my $Status = 0;
-my $Dynamic = 0;
-my $Format = '';
-
-my $Ldsodir = "/lib";
-my @Ld_Library_Path = qw(/usr/lib /lib /usr/lib32 /lib32 /usr/lib64 /lib64);
-
-
-sub ldso {
- my ($lib) = @_;
-
- return if $Libs{$lib};
-
- my $path;
-
- if ($lib =~ /^\//) {
- $path = $lib;
- }
- else {
- foreach my $dir (@Ld_Library_Path) {
- next unless -f "$dir/$lib";
-
- my $badformat = 0;
- local *PIPE;
- open PIPE, "objdump -p '$dir/$lib' 2>/dev/null |";
- while (my $line = <PIPE>) {
- if ($line =~ /file format (\S*)$/) {
- $badformat = 1 unless $1 eq $Format;
- last;
- }
- }
- close PIPE;
-
- next if $badformat;
-
- $path = "$dir/$lib";
- last;
- }
- }
-
- push @Libs, $lib;
- if (-f $path) {
- $Libs{$lib} = $path;
- objdump($path);
- }
-}
-
-
-sub objdump {
- my (@files) = @_;
-
- foreach my $file (@files) {
- local *PIPE;
- open PIPE, "objdump -p '$file' 2>/dev/null |";
- while (my $line = <PIPE>) {
- $line =~ s/^\s+//;
-
- if ($line =~ /file format (\S*)$/) {
- if (not $Format) {
- $Format = $1;
-
- if ($^O eq 'linux') {
- if ($Format =~ /^elf64-/) {
- push @Libs, 'linux-vdso.so.1';
- $Libs{'linux-vdso.so.1'} = '';
- }
- else {
- push @Libs, 'linux-gate.so.1';
- $Libs{'linux-gate.so.1'} = '';
- }
- }
-
- foreach my $lib (split /:/, $ENV{LD_PRELOAD}||'') {
- ldso($lib);
- }
- }
- else {
- next unless $Format eq $1;
- }
- }
- if (not $Dynamic and $line =~ /^Dynamic Section:/) {
- $Dynamic = 1;
- }
-
- next unless $line =~ /^ \s* NEEDED \s+ (.*) \s* $/x;
-
- my $needed = $1;
- if ($needed =~ /^ld(-linux)?(\.|-)/) {
- $needed = "$Ldsodir/$needed";
- }
-
- ldso($needed);
- }
- close PIPE;
- }
-}
-
-
-sub load_ldsoconf {
- my ($file) = @_;
-
- local *FH;
- open FH, $file;
- while (my $line = <FH>) {
- chomp $line;
- $line =~ s/#.*//;
- next if $line =~ /^\s*$/;
-
- if ($line =~ /^include\s+(.*)\s*/) {
- my $include = $1;
- foreach my $incfile (glob $include) {
- load_ldsoconf($incfile);
- }
- next;
- }
-
- unshift @Ld_Library_Path, $line;
- }
- close FH;
-}
-
-
-MAIN: {
- my @args = @ARGV;
-
- if (not @args) {
- print STDERR "fakeldd: missing file arguments\n";
- exit 1;
- }
-
- if (not `which objdump`) {
- print STDERR "fakeldd: objdump: command not found: install binutils package\n";
- exit 1;
- }
-
- load_ldsoconf('/etc/ld.so.conf');
- unshift @Ld_Library_Path, split(/:/, $ENV{LD_LIBRARY_PATH}||'');
-
- while ($args[0] =~ /^-/) {
- my $arg = $args[0];
- shift @ARGV;
- last if $arg eq "--";
- }
-
- foreach my $file (@args) {
- %Libs = ();
- $Dynamic = 0;
-
- if (@args > 1) {
- print "$file:\n";
- }
-
- if (not -f $file) {
- print STDERR "ldd: $file: No such file or directory\n";
- $Status = 1;
- next;
- }
-
- objdump($file);
-
- if ($Dynamic == 0) {
- print "\tnot a dynamic executable\n";
- $Status = 1;
- }
- elsif (scalar %Libs eq "0") {
- print "\tstatically linked\n";
- }
-
- my $address = '0x' . '0' x ($Format =~ /^elf64-/ ? 16 : 8);
-
- foreach my $lib (@Libs) {
- if ($lib =~ /^\//) {
- printf "\t%s (%s)\n", $lib, $address;
- }
- elsif (defined $Libs{$lib}) {
- printf "\t%s => %s (%s)\n", $lib, $Libs{$lib}, $address;
- }
- else {
- printf "\t%s => not found\n", $lib;
- }
- }
-
- }
-}
-
-END {
- $? = $Status;
-}
diff --git a/kirkwood/root/sbin/ldconfig b/kirkwood/root/sbin/ldconfig
deleted file mode 120000
index ba3ff23..0000000
--- a/kirkwood/root/sbin/ldconfig
+++ /dev/null
@@ -1 +0,0 @@
-../../../default/root/sbin/ldconfig
\ No newline at end of file
diff --git a/kirkwood/root/usr/bin/ldd b/kirkwood/root/usr/bin/ldd
deleted file mode 120000
index adf2fbc..0000000
--- a/kirkwood/root/usr/bin/ldd
+++ /dev/null
@@ -1 +0,0 @@
-../../../../default/root/usr/bin/ldd
\ No newline at end of file
diff --git a/notioninkadam/root/sbin/ldconfig b/notioninkadam/root/sbin/ldconfig
deleted file mode 120000
index ba3ff23..0000000
--- a/notioninkadam/root/sbin/ldconfig
+++ /dev/null
@@ -1 +0,0 @@
-../../../default/root/sbin/ldconfig
\ No newline at end of file
diff --git a/notioninkadam/root/usr/bin/ldd b/notioninkadam/root/usr/bin/ldd
deleted file mode 120000
index adf2fbc..0000000
--- a/notioninkadam/root/usr/bin/ldd
+++ /dev/null
@@ -1 +0,0 @@
-../../../../default/root/usr/bin/ldd
\ No newline at end of file
diff --git a/om-gta02/root/sbin/ldconfig b/om-gta02/root/sbin/ldconfig
deleted file mode 120000
index ba3ff23..0000000
--- a/om-gta02/root/sbin/ldconfig
+++ /dev/null
@@ -1 +0,0 @@
-../../../default/root/sbin/ldconfig
\ No newline at end of file
diff --git a/om-gta02/root/usr/bin/ldd b/om-gta02/root/usr/bin/ldd
deleted file mode 120000
index adf2fbc..0000000
--- a/om-gta02/root/usr/bin/ldd
+++ /dev/null
@@ -1 +0,0 @@
-../../../../default/root/usr/bin/ldd
\ No newline at end of file
diff --git a/polystrap.sh b/polystrap.sh
index 81081a9..2536a81 100755
--- a/polystrap.sh
+++ b/polystrap.sh
@@ -81,10 +81,8 @@ else
PACKAGES="$_PACKAGES"
fi
-# binutils must always be installed for objdump for fake ldd
-PACKAGES="$PACKAGES binutils"
-
export QEMU_LD_PREFIX="`readlink -m "$ROOTDIR"`"
+export FAKECHROOT_CMD_SUBST=/usr/bin/ldd=/usr/bin/ldd.fakechroot:/sbin/ldconfig=/bin/true
echo "I: --------------------------"
echo "I: suite: $SUITE"
@@ -112,11 +110,6 @@ multistrap $MSTRAP_SIM -f "$MULTISTRAPCONF"
rm -f "$MULTISTRAPCONF"
-# backup ldconfig and ldd
-echo "I: backup ldconfig and ldd"
-mv $ROOTDIR/sbin/ldconfig $ROOTDIR/sbin/ldconfig.REAL
-mv $ROOTDIR/usr/bin/ldd $ROOTDIR/usr/bin/ldd.REAL
-
# copy initial directory tree - dereference symlinks
echo "I: copy initial directory root tree $BOARD/root/ to $ROOTDIR/"
if [ -r "$BOARD/root" ]; then
@@ -152,9 +145,6 @@ fi
#cleanup
echo "I: cleanup"
-rm $ROOTDIR/sbin/ldconfig $ROOTDIR/usr/bin/ldd
-mv $ROOTDIR/sbin/ldconfig.REAL $ROOTDIR/sbin/ldconfig
-mv $ROOTDIR/usr/bin/ldd.REAL $ROOTDIR/usr/bin/ldd
rm $ROOTDIR/usr/sbin/policy-rc.d
# need to generate tar inside fakechroot so that absolute symlinks are correct
diff --git a/touchbook/root/sbin/ldconfig b/touchbook/root/sbin/ldconfig
deleted file mode 120000
index ba3ff23..0000000
--- a/touchbook/root/sbin/ldconfig
+++ /dev/null
@@ -1 +0,0 @@
-../../../default/root/sbin/ldconfig
\ No newline at end of file
diff --git a/touchbook/root/usr/bin/ldd b/touchbook/root/usr/bin/ldd
deleted file mode 120000
index adf2fbc..0000000
--- a/touchbook/root/usr/bin/ldd
+++ /dev/null
@@ -1 +0,0 @@
-../../../../default/root/usr/bin/ldd
\ No newline at end of file
--
Root filesystem generation tool (multistrap wrapper)
More information about the Emdebian-logs
mailing list