[Bio] / ReleaseTools / getpackage Repository:
ViewVC logotype

Annotation of /ReleaseTools/getpackage

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (view) (download)

1 : efrank 1.1 #!/bin/sh
2 :     ########################################################################
3 :     #
4 :     # getpackage
5 :     #
6 :     # Used when inside a work directory. Figures out the correct version of
7 :     # a package for the underlying base release and checks it out from CVS.
8 :     # It may make modifications to lib/ or other directories to make ready
9 :     # for the release tools (but I hope not).
10 :     #
11 :     # getpackage is NOT a wrapper over cvs.
12 :     #
13 :     # Usage:
14 :     # 1. cd to your work directory
15 :     # 2. getpackage <packageName>
16 :     #
17 :     # Options
18 :     # -h get the HEAD of CVS
19 :     # -r TAG get the specificed tag
20 :     #
21 :     # Assumes:
22 :     # o cvs in path
23 :     ########################################################################
24 :    
25 :     #-----------------------------------------------------------------------
26 :     #++ Sanity check: are we in a test release?
27 :    
28 :     if [ ! -r rtConfig ]; then
29 :     echo Use from a work directory made by mkworkdir
30 :     exit 2
31 :     fi
32 :    
33 :     #-----------------------------------------------------------------------
34 :     #++ vars
35 :     source rtConfig
36 :    
37 :     getHead=0
38 :     getTag=0
39 : efrank 1.4 getAll=0
40 :     listAll=0
41 : efrank 1.1 tagName=""
42 :    
43 :     #-----------------------------------------------------------------------
44 :     #++ process options
45 :    
46 : efrank 1.4 set -- `getopt alhr: $*`
47 : efrank 1.1 if [ $? = 0 ]; then
48 :     while [ $1 != -- ]
49 :     do
50 :     case $1 in
51 :     -h) getHead=1; getTag=0;;
52 :     -r) getTag=1; getHead=0; tagName=$2; shift;;
53 : efrank 1.4 -a) getAll=1;;
54 :     -l) listAll=1;;
55 : efrank 1.1 esac
56 :     shift
57 :     done
58 :     shift
59 :     fi
60 :    
61 :     #-----------------------------------------------------------------------
62 :     #++ check for correct number of arguments
63 : efrank 1.4 #
64 :     # having trouble with [, so test is awkward:
65 :    
66 :     if [ $getAll -eq 1 -o $listAll -eq 1 ]; then
67 :     if [ "$#" -ne 0 ]; then
68 :     echo "Usage: getpackage [-h | -r <tagName>] <PackageName>"
69 :     echo " or: getpackage [-a | -l ]"
70 :     exit 2
71 :     fi
72 :     elif [ "$#" -ne 1 ]; then
73 :     echo "Usage: getpackage [-h | -r <tagName>] <PackageName>"
74 :     echo " or: getpackage [-a | -l ]"
75 : efrank 1.1 exit 2
76 : efrank 1.4 else
77 :     packageName=$1
78 : efrank 1.1 fi
79 :    
80 :    
81 :     #-----------------------------------------------------------------------
82 : efrank 1.4 #++ Sanity check the release
83 : efrank 1.1
84 :     if [ -z "$RTROOT" ]; then
85 :     echo "No RTROOT set"
86 :     exit 2
87 :     fi
88 :    
89 :     baserel=$RTROOT/dist/releases/$baserelname
90 :    
91 :     if [ ! -r "$baserel" ]; then
92 :     echo "No such release: " $baserel
93 :     exit 2
94 :     fi
95 :    
96 : efrank 1.4 packageVersionsFile="$baserel/PackageVersions"
97 :    
98 :     if [ ! -r $packageVersionsFile ]; then
99 :     echo Release $baserel lacks a PackageVersions file
100 :     exit 2
101 :     fi
102 :    
103 :     #-----------------------------------------------------------------------
104 :     #++ Easy cases first: -l and -a
105 :    
106 :     if [ $listAll -eq 1 ] ; then
107 :     echo "Available packages in release $baserel:"
108 :     cat $packageVersionsFile
109 :     exit 0
110 :     fi
111 :    
112 :     if [ $getAll -eq 1 ] ; then
113 :     for pkg in `awk '{print $1 }' $packageVersionsFile` ; do
114 :     echo getting $pkg
115 :     $0 $pkg
116 :     done
117 :     exit 0
118 :     fi
119 :    
120 :     #-----------------------------------------------------------------------
121 :     #++ Makesure the package is not already checked out
122 :    
123 :     if [ -r $packageName ]; then
124 :     echo $packageName already exists
125 : efrank 1.1 exit 2
126 :     fi
127 :    
128 : efrank 1.4 #-----------------------------------------------------------------------
129 :     #++ Get package version from release
130 :     #-----------------------------------------------------------------------
131 :    
132 :     if [ ! -r "$baserel/$packageName" ]; then
133 :     echo Package $packageName not in the release
134 : efrank 1.1 exit 2
135 :     fi
136 :    
137 : efrank 1.4 packageVer=`grep $packageName $packageVersionsFile | awk '{print $2}'`
138 : efrank 1.1
139 :     if [ -z "$packageVer" ]; then
140 : efrank 1.4 echo No version information for $packageName in $packageVersionsFile
141 : efrank 1.1 exit 2
142 :     fi
143 :    
144 :     #-----------------------------------------------------------------------
145 :     #++ Get package if HEAD or TAG
146 :    
147 :     if [ $getTag -eq 1 ]; then
148 :     echo overriding release version $packageVer with tag $tagName
149 :     cvs co -r $tagName $packageName
150 :     elif [ $getHead -eq 1 ]; then
151 :     echo echo overriding release version $packageVer with HEAD of CVS
152 :     cvs co -r HEAD $packageName
153 :     else
154 :     cvs co -r $packageVer $packageName
155 :     fi
156 :    
157 : efrank 1.2 #-----------------------------------------------------------------------
158 : efrank 1.3 #++ Tune up the release area. The tmp directory per pkg is for putting temp
159 :     # files made during build, e.g., .o files, lexx output. The source
160 :     # dir is read only (parallel builds on multiple architectures).
161 :     # The per pkg dir under lib is to hold "compiled" python code and the like.
162 : efrank 1.2
163 :     mkdir tmp/$RTARCH/$packageName
164 : efrank 1.3 mkdir lib/$RTARCH/$packageName
165 : efrank 1.2
166 : efrank 1.1 exit 0
167 : efrank 1.2

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3