[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Mar 12 11:49:59 2001 
Subject:Re: Installing poplog: some bugs and some thoughts 
From:ug55aes 
Volume-ID:1010312.04 

--BXVAT5kNtrzKuDFl
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Mon, Mar 12, 2001 at 07:49:41AM +0000, Aaron Sloman See text for reply address wrote:
> I don't recognise this. It ran immediately when I installed it on a Dell
> laptop running RedHat 7, maybe because our computer operators had
> already made the link to allow other X11 stuff to work: they were not
> checking out Poplog. The machine has these in /usr/X11R6/lib
> laptop-11126% lt libX11*

Well, I stand corrected.  The link didn't exist on my current (Debian 2.2) 
system, or on my previous (Mandrake 7.0) set-up.  Since Mandrake is 
very similar to Red Hat (I think it claims to be 100% Red Hat compatible), 
I must've assumed it had gone out with RH6.

> A similar issue arises with the requirement to get Motif working, which
> is not provided by Redhat but has to be installed separately. After
> installation, a symbolic link may be rquired to make the new version
> accessible without rebuilding all motif-dependent software.

Well, some playing with Debian over the weekend reveals:

The Lesstif provided by Debian isn't the same thing as what Poplog 
requires  (at least, libXm.so.1.0.2 isn't the same thing as libXm.so.2 - 
I haven't actually tested if forcing it to use libXm.so.1.0.2 will work).
Motif is available from the testing distribution, and provides what Poplog 
needs.

And yes, the Debian package doesn't provide a symlink assumed by Poplog. 
(libXm.so, I think).  Adding that link in solved the problem.

> Requiring a relink every time you produce a minor upgrade to a part of
> the system would be BAD software engineering. Poplog should be able to
> go on working without a relink, as long as the new system is made
> "current" by symbolic links to the main address.
> 
> If there is a major new version that cannot work without complete
> relinking then that's different.

I think that Debian does something like libfoo.so.n -> libfoo.so.n.m, 
while Red Hat makes the additional step of doing libfoo.so -> libfoo.so.n  
I'll go home and check that once I've finished writing this e-mail.

<snip - relinking the problem away>
> I expect it's trivial to do, but I'll have to find out how, and that is
> one of hundreds of things I don't have time for just now.

I've attached a suggested installation script, which (among other things) 
checks for the existence of the links, and makes them if necessary.  The 
script has been lightly tested, but before I go any further, can someone 
check if there's anything horrendously wrong in what I'm doing?

(The included version has been defanged - important commands like 
untarring popcd.tar and starting the installation have been echo'd out, so 
it's safe to run)

	- Andrew

--BXVAT5kNtrzKuDFl
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="install-linux-poplog.sh.debug"

#!/bin/bash

# Uber-installer for Linux/Intel Poplog, by Andrew Sayers <ug55aes@cs.bham.ac.uk>

echo '*** Installing Linux Poplog version 15.53 for Intel and compatible PCs ***'
echo
echo "Please send any bug reports/installation complaints to Andrew Sayers <ug55aes@cs.bham.ac.uk>"
echo


echo -n 'Your system '
if echo $OSTYPE | grep -qi linux && echo $HOSTTYPE | grep -q i386; then
	echo -n "is a Linux PC, "
else
	echo "doesn't look like a Linux PC."
	echo "Are you absolutely sure this is a PC running Linux? [y/N]"
	read choice
	if [ $choice == 'y' ] || [ $choice == 'Y' ]; then
	    echo "Fair enough.  Please send off a bug report saying that \"$OSTYPE\" is a valid value of \$OSTYPE on a Linux system."
	    echo -n "This is apparently a Linux PC, "
	else
	    exit 1
	fi
fi

if [ -x /usr/bin/csh ]; then
	echo -n 'with csh or tcsh installed, '
else
	echo 'but it has neither csh nor tcsh installed on it.'
	echo "Poplog needs either the csh (or tcsh) shell in order to run."
	echo "You'll need to install one of them then re-run this script."
	exit 1
fi

# Some safe defaults
export MOTIF_FILE="linux1553.tar.gz"
export MOTIF_INSTALL="INSTALL_NOMOTIF"
export X11_LINKS_NEEDED=0
if [ -e /usr/X11R6/lib/libX11.so.6 ] && [ -e /usr/X11R6/lib/libXt.so.6 ]; then
    if [ -e /usr/X11R6/lib/libX11.so ] && [ -e /usr/X11R6/lib/libXt.so ]; then
	echo -n 'an X server, '
    else
	export X11_LINKS_NEEDED=1
	echo 'an X server (see below)'
    fi

    if [ -e /usr/X11R6/lib/libXm.so.2 ]; then
	if [ -e /usr/X11R6/lib/libXm.so ]; then
	    echo 'and Motif.'
	else
	    echo 'and Motif (see below).'
	    export MOTIF_LINKS_NEEDED=1
	fi
	export MOTIF_FILE="linuxmotif1553.tar.gz"
	export MOTIF_INSTALL="INSTALL_MOTIF"
    else
	echo "but not Motif."
	echo "Not having Motif isn't fatal, but xved won't have menus etc."
    fi

else
    echo 'but no X-Server.'
    echo "That's not fatal - You'll just have to run plain (non-X) ved."
fi

if [ $X11_LINKS_NEEDED == 1 ]; then 
	echo
	echo 'Making poplog-specific symbolic links for X...'
	echo 'doing: ln -s /usr/X11R6/lib/libX11.so.6 /usr/X11R6/lib/libX11.so'
	echo 'DEBUG: ln -s /usr/X11R6/lib/libX11.so.6 /usr/X11R6/lib/libX11.so'
	echo 'doing: ln -s /usr/X11R6/lib/libXt.so.6 /usr/X11R6/lib/libXt.so'
	echo 'DEBUG: ln -s /usr/X11R6/lib/libXt.so.6 /usr/X11R6/lib/libXt.so'
	echo
fi

if [ $X11_LINKS_NEEDED == 1 ]; then 
	echo
	echo 'Making poplog-specific symbolic links for Motif...'
	echo 'doing: ln -s /usr/X11R6/lib/libXm.so.2 /usr/X11R6/lib/libXm.so'
	echo 'DEBUG: ln -s /usr/X11R6/lib/libXm.so.2 /usr/X11R6/lib/libXm.so'
	echo
fi

echo "This system can run Linux Poplog"
echo
echo "popcd.tar and $MOTIF_FILE are needed for installation."

[ -d /usr/local/poplog ] || mkdir /usr/local/poplog

# Needs to be a function since it might be called repeatedly (see below).
find_installation_files ()
{
	export RET_VAL=0

	if [ -e /usr/local/poplog/popcd.tar ]; then
	    echo "popcd.tar is in /usr/local/poplog"
	elif [ -e ./popcd.tar ]; then
	    echo "popcd.tar is in $PWD"
	    [ -L /usr/local/poplog/popcd.tar ] || ln -s $PWD/popcd.tar /usr/local/poplog/popcd.tar
	else
	    echo "popcd.tar is nowhere to be seen."
	    echo "If you've already downloaded popcd.tar, please put it in /usr/local/poplog,"
	    echo "then run this script again."
	    echo "Otherwise, you'll need to get it from the Internet.  It's available as:"
	    echo "ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/popcd.tar";
	    echo "*WARNING* popcd.tar is a 30MB file *WARNING*"
	    echo "It will take at least an hour and a half to download over a modem."
	    export DOWNLOADS="ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/popcd.tar";
	    export RET_VAL=1
	fi

	if [ -e /usr/local/poplog/$MOTIF_FILE ]; then
	    echo "$MOTIF_FILE is in /usr/local/poplog"
	elif [ -e ./$MOTIF_PATH ]; then
	    echo "$MOTIF_FILE is in $PWD"
	    ln -s $PWD/$MOTIF_FILE /usr/local/poplog/$MOTIF_FILE
	else
	    echo "$MOTIF_FILE is nowhere to be seen."
	    echo "If you've already downloaded $MOTIF_FILE, please put it in /usr/local/poplog,"
	    echo "then run this script again."
	    echo "Otherwise, you'll need to get it from the Internet.  It's available as:"
	    echo "ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/new/$MOTIF_FILE";
	    echo "*WARNING* $MOTIF_FILE is a 12MB file *WARNING*"
	    echo "It will take at least half an hour to download over a modem."
	    export MOTIF_PATH=""
	    export DOWNLOADS="$DOWNLOADS ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/new/$MOTIF_FILE";
	    export RET_VAL=1
	fi

	return $RET_VAL
}

if [ -x /usr/bin/wget ]; then
    until find_installation_files ; do
	echo
	echo 'Download necessary files now? [y/N]'
	read choice
	if [ $choice == 'y' ] || [ $choice == 'Y' ]; then
	    echo "Downloading.  Press control-c to stop and quit installation for now."
	    export OLDWD = $PWD
	    cd /usr/local/poplog
	    echo "DEBUG: wget $DOWNLOADS" || exit 2
	    cd $OLDWD
	else
	    exit 2
	fi
    done
else
    find_installation_files || exit 2
fi

echo
echo 'Ready to install.  Begin? [y/N]'
read choice
if ! [ $choice == 'y' ] && ! [ $choice == 'Y' ]; then
	exit 3
fi

echo
echo "Starting the installation.  This will probably take a long time."
echo "Any messages printed during the installation can be read later in install.log"
echo

cd /usr/local/poplog
echo "Unpacking popcd.tar..."
echo "DEBUG: tar -xf popcd.tar"
echo "Executing ./$MOTIF_INSTALL..."
if echo "DEUG: ./$MOTIF_INSTALL | tee install.log"; then
    echo "DEBUG: ln -s /usr/local/poplog/local/setup/bin/poplog /usr/local/bin/poplog"
    echo "Poplog successfully installed."
    echo 'Type `poplog +bhamxved` to load xved.'
else
    echo "Poplog installation failed for some reason.  Please check install.log for errors."
    echo 'You could also consider sending a bug report (please include install.log!)'
fi

--BXVAT5kNtrzKuDFl--