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

Re: Openssh shared library problem

On Fri, 30 Jan 2009, Paul Holcomb wrote:

On Fri, Jan 30, 2009 at 03:10:11PM +0100, Martin Koeppe wrote:

interix everything is in /lib or /usr/lib, the default paths that
ld.so uses. But 64-bit probably has different paths for the 32-bit
stuff. I didn't test on 64-bit at all.

So the paths in ld.so are just hard coded?

I think so, besides LD_LIBRARY_PATH. Rodney has rebuilt ld.so with more features. Maybe I will do that some day, too.

Did you happen to test with Rodney's sshd from interopsystems.com
if that one has the same problem? Or if not, you may find out, how
Rodney did it?

Or you try to put symlinks in /lib/ pointing to the real libc.so.3.5.
As there are no .so files on 64-bit, the names shouldn't clash.
This should be necessary only for the system .so files, as the
debian-interix stuff will get installed into /lib or /usr/lib
automatically (even if that is probably "wrong" on 64-bit).

Good call on the different library path for 32 bit.  I think the
symlink answer might be the best.  Perhaps the links could be placed
in a meta package for 64 bit users?

Yes, this could be done if it works. Could you provide the 64-bit target locations for all the libraries ending in *.so.3.5 ?

So, I was attempting to comment back the line is session.c and
rebuild, but I wasn't even able to do a build from the deb source
before running into a number of issues, including this header
related one from configure during the dpkg-buildpackage of openssh.

checking dirent.h presence... yes
configure: WARNING: dirent.h: present but cannot be compiled
configure: WARNING: dirent.h:     check for missing prerequisite headers?
configure: WARNING: dirent.h: see the Autoconf documentation

I did all my builds on a 32-bit system, more precisely on SFU 3.5, for
best compatibility. Maybe you can setup a chroot environment with all
the SFU 3.5 stuff in it and build within that. I successfully do
that on Vista 32-bit.

This would require a 32-bit XP Pro system for 3.5 to install on to
gather the chroot files?  Or can I just extract the install files
manually from that the 3.5 32bit SUA package?

No, no need to install 3.5. I have SfU 3.5 as SFU35SEL_EN.exe which is a self extracting zip file.

From the extracted files I build my own local .deb files by
cross-building this src package on linux:

Then I install the chroot from a local repository which has these packages in addition to the normal debian-interix packages with the attached make-debootstrap2 script.

#! /bin/sh -e


rm -rf $CHROOT

mkdir -p $CHROOT/bin
mkdir -p $CHROOT/usr/bin
mkdir -p $CHROOT/usr/lib
mkdir -p $CHROOT/usr/sbin
mkdir -p $CHR21OOT/usr/local/bin
mkdir -p $CHROOT/build/$USER
mkdir -p $CHROOT/var/lib/sbuild/srcdep-lock

ln -sf	/bin/true			$CHROOT/usr/sbin/update-rc.d
#cp	/usr/bin/md5sum			$CHROOT/usr/bin/
#cp	/usr/bin/ranlib			$CHROOT/usr/bin/
cp	/bin/kill			$CHROOT/bin/

#hack for vista
cp	/lib/libc.so.3.5		$CHROOT/usr/lib/

KEEP_DEBOOTSTRAP_DIR=true debootstrap \
    --verbose \
    --variant=buildd \
    unreleased35 $CHROOT \
    file:///misc/pub/linux/debian-interix \

#cp -f	/bin/cp				$CHROOT/bin/
#cp -f	/bin/ln				$CHROOT/bin/
#cp -f	/bin/rm				$CHROOT/bin/
#cp -f	/bin/rmdir			$CHROOT/bin/
#cp -f	/bin/readlink			$CHROOT/bin/
#cp -f	/usr/bin/install		$CHROOT/usr/bin/
#cp -f	/usr/bin/sort			$CHROOT/usr/bin/
#cp -f	/usr/bin/tac			$CHROOT/usr/bin/
#cp -f	/usr/bin/touch			$CHROOT/usr/bin/
cp -f	/usr/bin/getopt			$CHROOT/usr/bin/
cp -f	/usr/local/bin/fakesu		$CHROOT/usr/local/bin/
cp -f	/usr/local/bin/fakesudo		$CHROOT/usr/local/bin/
#cp -f	/usr/local/bin/chown		$CHROOT/usr/local/bin/
cp -f	/etc/apt/sources.list.chroot	$CHROOT/etc/apt/sources.list
cp -f	/etc/apt/preferences		$CHROOT/etc/apt/
cp -f	/etc/resolv.conf		$CHROOT/etc/

cp -f	/usr/lib/libcrypt.a		$CHROOT/usr/lib/
cp -f	/usr/lib/libpthread.a		$CHROOT/usr/lib/
cp -f	/opt/gcc.3.3/include/dlfcn.h	$CHROOT/usr/include/
ln -s	/lib/libdl.so.3.5		$CHROOT/usr/lib/libdl.so

touch					$CHROOT/etc/ld.so.conf
touch					$CHROOT/etc/passwd

chrapt-get update
chrapt-get --yes -f upgrade
# changed --yes below to --force-yes for grep, no more necessary, grep now in unreleased35
chrapt-get --yes install \
	perl-modules/unreleased35 \
	perl \
	dpkg-dev/unreleased35 \
	debhelper/unreleased35 \
	debian-archive-keyring \
	build-essential \
	ms-libc3.5-sfu3.5-dev \
	binutils \
	binutils-sfu3.5 \
	g++ \
	libm-newlib-dev \
	libiconv-dev \
	gettext \
	cdbs \
	texi2html \

#chroot $CHROOT dpkg --set-selections <<END
#debhelper hold
#dpkg-dev hold
#cdbs hold
#texi2html hold

# patch cdbs
#mv	$bc $bc.orig
#sed	-e 's/\(test.* = 0\)/#\1/' < $bc.orig > $bc

# patch texi2html
mv	$t2h $t2h.orig
echo	'#! /usr/bin/perl' > $t2h
cat	$t2h.orig >> $t2h
chmod	0755 $t2h

# make gcc-4.2 default
#mv $ub/cpp $ub/cpp-3.3
#mv $ub/c++ $ub/c++-3.3
#mv $ub/gcc $ub/gcc-3.3
#mv $ub/g++ $ub/g++-3.3
#mv $ub/g77 $ub/g77-3.3
#mv $ub/gccbug $ub/gccbug-3.3
#mv $ub/gcov $ub/gcov-3.3
#ln -sf cpp-4.2 $ub/cpp
#ln -sf gcc-4.2 $ub/gcc
#ln -sf g++-4.2 $ub/g++
#ln -sf gccbug-4.2 $ub/gccbug
#ln -sf gcov-4.2 $ub/gcov

Reply to: