blob: 66da9170c7292bdf7b628b1d8ccbbe518948dc08 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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
|