aboutsummaryrefslogtreecommitdiff
path: root/util/pkgupdate
blob: ea73ec1ba53dff04525e3f6054f1204215296d71 (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
#!/bin/bash
#
#  PKGUPDATE - Update the named packages


pkg=""
all=no
list_only=no

if (( $#<1 )); then
    exit 0
else
    # Process cmdline flags.
    while [ -n "$1" ]; do
      case "$1" in
      "-all")                          # clean all package .s
        all=yes
	;;
      "-list")                         # list packages needing updating
        list_only=yes
	;;
      *)
        pkg=$1
        break
	;;
      esac

      shift
   done
fi


bindir="`dirname $0`"                # get iraf root directory 
irafdir=${bindir%/*}

# Initialize the $iraf and environment.
if [ -z "$iraf" ]; then
  if [ -e "$HOME/.iraf/setup.sh" ]; then
    source $HOME/.iraf/setup.sh
  else
    source ../unix/hlib/setup.sh
  fi
else
    source $iraf/unix/hlib/setup.sh
fi


REPO=`${irafdir}/util/pkgrepo`
if [ -n "$IRAFARCH" ]; then
    arch=$IRAFARCH
else
    arch=`${irafdir}/unix/hlib/irafarch.sh -actual`
fi

/bin/echo "Updating repository data ...."
../util/pkginit                                # init repository information

# Check for a self-update.
if [ "$pkg" == "-self" ]; then
    /bin/echo "Updating utility scripts ...."
    /bin/rm -f /tmp/util.tgz
    ../util/pkgget ${REPO}/util-universal.tar.gz /tmp/util.tgz
    (cd ../util; tar zxf /tmp/util.tgz; /bin/rm -f /tmp/util.tgz)
    /bin/echo "Done"
    exit 0
fi
 
# Check for a extern update.
if [ "$pkg" == "-config" ]; then
    /bin/echo "Updating config script ...."
    ../util/pkgget ${REPO}/config-universal configure
    chmod 777 configure
    /bin/echo "Done"
    exit 0
fi
 


# Process the requested package and any dependencies.
pkgs=`cat .repo_pkgs`
for ip in ${pkgs[@]}; do 

  if [ -e $ip/.installed ]; then

     pd=`grep $ip $ip/.installed | awk '{printf("%s\n", $1)}'`
     rd=`grep $ip .repo_manifest | head -1 | awk '{printf("%s\n", $3)}'`

     alist=`(cd $ip; ls -1 .inst*.* | sed -e "s/\.installed\.//g")`

     if (( $rd>$pd )); then

       # Update each installed architecture automatically.
       for a in ${alist[@]}; do

	 if [ "$list_only" == "yes" ]; then
            printf "Package %-12s for %-8s is out of date ....\n" $ip $a
	 else
	    if [ "$all" == "yes" -o "$ip" == "$pkg" ]; then
              /bin/echo "Updating package '$ip' for '$a' ...."
              ../util/pkginst $ip
	    fi
	 fi
       done

     else
	if [ "$list_only" == "yes" ]; then
           printf "Package %-12s is current ....\n" $ip
	elif (( $rd<=$pd )); then
           printf "Package %-12s is current ....\n" $ip
	fi
     fi

  else
     printf "Package %-12s is not installed ....\n" $ip
  fi

  ${irafdir}/util/pkgenv -init
done

/bin/echo "Done"
exit 0