diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /unix/hlib/mkfloat.sh | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'unix/hlib/mkfloat.sh')
-rwxr-xr-x | unix/hlib/mkfloat.sh | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/unix/hlib/mkfloat.sh b/unix/hlib/mkfloat.sh new file mode 100755 index 00000000..66da9170 --- /dev/null +++ b/unix/hlib/mkfloat.sh @@ -0,0 +1,142 @@ +#!/bin/bash +# +# MKFLOAT.SH -- Install the indicated version of the IRAF binaries, i.e., +# archive the current objects and libraries, BIN to point to bin.FFF, +# and mkpkg to produce FFF binaries (FFF=f68881, ffpa, sparc, etc.). +# +# NOTE -- This script should be run only by the IRAF system manager. It is +# assumed that the environment variables defined in the IRAF .login and in +# hlib/irafuser.csh are defined. + + +ARCH="$1" +DIRS="lib pkg sys" +FILE=unix/hlib/mkpkg.inc +DFL=_DFL.mkfloat +TFL=_TFL.mkfloat + +mach=`uname -s | tr '[A-Z]' '[a-z]'` +os_mach=`uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + + +# Set the following to -xpf for BSD Tar and to -xof for SYSV Tar. +TARXFLGS=-xpf +#TARXFLGS=-xof + +# See if we're able to compress the files. +do_compress=1 +if [ ! -x `which compress` -o "$os_mach" = "cygwin" ]; then + if [ ! -x `which gzip` ]; then + /bin/echo "no compress command found, files will not be compressed" + do_compress=0 + else + COMPRESS="gzip -S .Z" + fi +else + COMPRESS=`which compress` +fi + +# Check for an error in the package structure, i.e. the 'bin' is a directory +# and not a symlink we can change. It's valid for an external package to +# have only a 'bin' directory, but then it's toplevel mkpkg shouldn't be +# calling us. +if [ "`ls -l bin | grep 'l.........'`" = "" ]; then + /bin/echo "'bin' is a directory, should be symbolic link pointing to valid" + /bin/echo "architecture. Possible error in copying package structure??" + /bin/echo "Use tar to copy and move directories to preserve links." + exit 1 +else + float=`ls -l bin | sed -e 's+^.*bin\.++'` +fi +if [ "$ARCH" = "" ]; then + /bin/echo "system is configured for $float" + exit 0 +elif [ "$float" = "$ARCH" ]; then + /bin/echo "system is already configured for $ARCH" + exit 0 +elif [ ! -e bin.$ARCH ]; then + /bin/echo "must up a bin.$ARCH subdirectory first" + exit 1 +fi + +# Get the list of directories to be changed. +shift +DIRS="" +if [ "$1" = "-d" ]; then + DIRS="" + shift + while : ; do + DIRS="$DIRS $1" + shift + done +fi + +/bin/echo -n \ +"deleting any dreg .e files left lying about in the source directories... " +rmbin -n -o .a .o .e .E $DIRS > $TFL; grep '\.[eE]$' $TFL | tee _.e_files +rm -f `cat _.e_files` _.e_files; grep -v '\.[eE]$' $TFL > $DFL; rm $TFL +/bin/echo "done" + +/bin/echo -n "archiving and deleting $float objects... " +if [ -e bin.$float ]; then + if [ -s $DFL ]; then + tar -cf bin.$float/OBJS.arc `cat $DFL` + tar -tf bin.$float/OBJS.arc | grep -v '/$' | cut -d " " -f 1 > $TFL + cmp -s $DFL $TFL + if [ $status ]; then + /bin/echo "Error: cannot archive $float objects" + diff $DFL $TFL + rm $DFL $TFL bin.$float/OBJS.arc + exit 1 + elif (( $do_compress>0 )); then + /bin/echo "done" + /bin/echo -n "compressing bin.$float/OBJS.arc " + nice $COMPRESS -f bin.$float/OBJS.arc & + rm -f $TFL + fi + fi +else + /bin/echo "old objects will not be archived as no bin.$float dir found" +fi +/bin/echo "done." +rm -f `cat $DFL` $DFL + +if [ $ARCH != "generic" ]; then + /bin/echo -n "restoring archived $ARCH objects... " + if [ -e bin.$ARCH/OBJS.arc.Z ]; then + zcat bin.$ARCH/OBJS.arc.Z | tar $TARXFLGS - + if (( $status<1 )); then + rm -f bin.$ARCH/OBJS.arc.Z + fi + /bin/echo "done" + elif [ -e bin.$ARCH/OBJS.arc.gz ]; then + cat bin.$ARCH/OBJS.arc.gz | gunzip | tar $TARXFLGS - + if (( $status<1 )); then + rm -f bin.$ARCH/OBJS.arc.gz + fi + /bin/echo "done" + elif [ -e bin.$ARCH/OBJS.arc ]; then + cat bin.$ARCH/OBJS.arc | tar $TARXFLGS - + if (( $status<1 )); then + rm -f bin.$ARCH/OBJS.arc + fi + /bin/echo "done" + else + /bin/echo "" + /bin/echo "no object archive found; full sysgen will be needed" + fi +fi + +# Set BIN to point to new directory. +rm -f bin; ln -s bin.$ARCH bin + + +# Warn the user if the new ARCH does not match their current IRAFARCH. +if [ -n $IRAFARCH ]; then + if [ "$ARCH" != "$IRAFARCH" ]; then + /bin/echo "Warning: IRAFARCH is still in your environment to $IRAFARCH" + fi + if [ "$ARCH" == "generic" ]; then + /bin/echo "Warning: IRAFARCH is still in your environment to 'generic'" + fi +fi |