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
143
|
#!/bin/csh
#
# MKFLOAT.CSH -- Install the indicated version of the IRAF binaries, i.e.,
# archive the current objects and libraries, set BIN to point to bin.FFF,
# and set 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.
set ARCH = "$1"
set DIRS = "lib pkg sys"
set FILE = unix/hlib/mkpkg.inc
set DFL = _DFL.mkfloat
set TFL = _TFL.mkfloat
set mach = `uname -s | tr '[A-Z]' '[a-z]'`
set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6`
unalias ls rm cat grep tar cmp diff echo ln mv zcat gunzip compress which
unset noclobber
# Set the following to -xpf for BSD Tar and to -xof for SYSV Tar.
set TARXFLGS = -xpf
#set TARXFLGS = -xof
# set echo
# See if we're able to compress the files.
set do_compress = 1
if (! -x `which compress` || $os_mach == "cygwin") then
if (! -x `which gzip`) then
echo "no compress command found, OBJS.arc files will not be compressed"
set do_compress = 0
else
set COMPRESS = "gzip -S .Z"
endif
else
set COMPRESS = `which compress`
endif
# 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
echo "'bin' is a directory, should be symbolic link pointing to valid"
echo "architecture. Possible error in copying package structure??"
echo "Use tar to copy and move directories to preserve links."
exit 1
else
set float = `ls -l bin | sed -e 's+^.*bin\.++'`
endif
if ("$ARCH" == "") then
echo "system is configured for $float"
exit 0
else if ($float == "$ARCH") then
echo "system is already configured for $ARCH"
exit 0
else if (! -e bin.$ARCH) then
echo "must set up a bin.$ARCH subdirectory first"
exit 1
endif
# Get the list of directories to be changed.
shift
if ("$1" == "-d") then
set DIRS = ""
shift
while ("$1" != "")
set DIRS = "$DIRS $1"
shift
end
endif
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
echo "done"
echo -n "archiving and deleting $float objects... "
if (-e bin.$float) then
if (! -z $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
echo "Error: cannot archive $float objects"
diff $DFL $TFL
rm $DFL $TFL bin.$float/OBJS.arc
exit 1
else if ($do_compress == 1) then
echo "done"
echo -n "compressing bin.$float/OBJS.arc "
nice $COMPRESS -f bin.$float/OBJS.arc &
rm -f $TFL
endif
endif
else
echo "old objects will not be archived as no bin.$float directory found"
endif
echo ""
rm -f `cat $DFL` $DFL
if ($ARCH != generic) then
echo -n "restoring archived $ARCH objects... "
if (-e bin.$ARCH/OBJS.arc.Z) then
if ({ (zcat bin.$ARCH/OBJS.arc.Z | tar $TARXFLGS -) }) then
rm -f bin.$ARCH/OBJS.arc.Z
endif
echo "done"
else if (-e bin.$ARCH/OBJS.arc.gz) then
if ({ (cat bin.$ARCH/OBJS.arc.gz | gunzip | tar $TARXFLGS -) }) then
rm -f bin.$ARCH/OBJS.arc.gz
endif
echo "done"
else if (-e bin.$ARCH/OBJS.arc) then
if ({ (cat bin.$ARCH/OBJS.arc | tar $TARXFLGS -) }) then
rm -f bin.$ARCH/OBJS.arc
endif
echo "done"
else
echo ""
echo "no object archive found; full sysgen will be needed"
endif
endif
# Set BIN to point to new directory.
rm -f bin; ln -s bin.$ARCH bin
# If script is run at IRAF root, edit mkpkg.inc for new float option.
#if (-e $FILE) then
# sed -e "s+= $float+= $ARCH+" $FILE > temp; mv -f temp $FILE
#endif
# Warn the user if the new ARCH does not match their current IRAFARCH.
if ($?IRAFARCH == 1) then
if ($ARCH != $IRAFARCH && $ARCH != generic) then
echo "Warning: IRAFARCH is still set in your environment to $IRAFARCH"
endif
endif
|