ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/cms-common.spec
Revision: 1.17
Committed: Wed Aug 19 13:24:22 2009 UTC (15 years, 8 months ago) by muzaffar
Branch: MAIN
CVS Tags: dg20091203-comp-base, DAS_20091117, BUILDBOT_01, CERNOIDv02, CouchDB_0_10_0, CERNOIDv01, WMCORE-before-refactor, PerfSuiteDB_20090930, PerfSuiteDB_20090916, PerfSuiteDB_20090904_almost_stable, PerfSuiteDB_20090904, PerfSuiteDB_20090901, forHEARTBEATr04, RPMVERIFY_0_2, forHEARTBEATr01
Changes since 1.16: +22 -8 lines
Log Message:
scram wrapper script is now POSIX.2 compliant. simplified cmsarch for online arch

File Contents

# User Rev Content
1 muzaffar 1.11 ### RPM cms cms-common 1.0
2 muzaffar 1.17 ## REVISION 1053
3 muzaffar 1.15 ## NOCOMPILER
4 muzaffar 1.17 %define closingbrace )
5     %define online %(case %cmsplatf in *onl_*_*%closingbrace echo true;; *%closingbrace echo flase;; esac)
6 muzaffar 1.1 Source: cmsos
7     %prep
8     %build
9     echo $SCRAM_ROOT
10     %install
11    
12 muzaffar 1.17 mkdir -p %instroot/common %instroot/bin %instroot/%{cmsplatf}/etc/profile.d
13 muzaffar 1.1
14 elmer 1.6 # Do not create these common files if already exist
15 muzaffar 1.1 # This is to avoid different arch creating these files
16     if [ ! -f %instroot/common/.cms-common ]; then
17     install -m 755 %_sourcedir/cmsos %instroot/common/cmsos
18     ### Detects the SCRAM_ARCH to be used.
19 muzaffar 1.17 %if "%online" != "true"
20 muzaffar 1.1 cat << \EOF_CMSARCH_SH >%instroot/common/cmsarch
21     #!/bin/sh
22     osarch=`%instroot/common/cmsos`
23 muzaffar 1.16 compilerv=gcc345
24 muzaffar 1.1 # We need to assume 1 compiler per platform.
25     # There is no other way around this.
26     if [ ! "$SCRAM_ARCH" ]
27     then
28     case $osarch in
29     osx104_ia32) compilerv=gcc401;;
30     osx104_ppc32) compilerv=gcc400;;
31 muzaffar 1.16 osx105_*) compilerv=gcc401;;
32     *) compilerv=gcc345; osarch=slc4_ia32;;
33 muzaffar 1.1 esac
34     echo ${osarch}_${compilerv}
35     else
36     echo $SCRAM_ARCH
37     fi
38    
39     EOF_CMSARCH_SH
40 muzaffar 1.17 %else
41     cat << \EOF_CMSARCH_SH >%instroot/common/cmsarch
42     #!/bin/sh
43     if [ ! "$SCRAM_ARCH" ] ; then
44     echo %cmsplatf
45     else
46     echo $SCRAM_ARCH
47     fi
48    
49     EOF_CMSARCH_SH
50     %endif
51 muzaffar 1.1 chmod 755 %instroot/common/cmsarch
52    
53     ### BASH code
54    
55     cat << \EOF_CMSSET_DEFAULT_SH > %instroot/cmsset_default.sh
56     export PATH=%instroot/common:%instroot/bin:$PATH
57    
58     if [ ! $SCRAM_ARCH ]
59     then
60     SCRAM_ARCH=`%instroot/common/cmsarch`
61     export SCRAM_ARCH
62     fi
63    
64     here=%{instroot}
65    
66     if [ "$VO_CMS_SW_DIR" != "" ]
67     then
68     here=$VO_CMS_SW_DIR
69     else
70     if [ "$OSG_APP" != "" ]
71     then
72     here=$OSG_APP/cmssoft/cms
73     fi
74     fi
75    
76     if [ ! -d $here/${SCRAM_ARCH}/etc/profile.d ]
77     then
78     echo "Your shell is not able to find where cmsset_default.sh is located."
79     echo "Either you have not set VO_CMS_SW_DIR or OSG_APP correctly"
80     echo "or SCRAM_ARCH is not set to a valid architecture."
81     fi
82    
83     for pkg in `/bin/ls $here/${SCRAM_ARCH}/etc/profile.d/ | grep 'S.*[.]sh'`
84     do
85     source $here/${SCRAM_ARCH}/etc/profile.d/$pkg
86     done
87    
88     if [ ! $CMS_PATH ]
89     then
90     export CMS_PATH=$here
91     fi
92    
93     # aliases
94 muzaffar 1.9 alias cmsenv='eval `scramv1 runtime -sh`'
95     alias cmsrel='scramv1 project CMSSW'
96 muzaffar 1.1
97     if [ -f $CMS_PATH/SITECONF/local/JobConfig/cmsset_local.sh ]; then
98     . $CMS_PATH/SITECONF/local/JobConfig/cmsset_local.sh
99     fi
100    
101     if [ ! $CVSROOT ]
102     then
103 andreasp 1.14 CVSROOT=:gserver:cmscvs.cern.ch:/cvs_server/repositories/CMSSW
104 muzaffar 1.1 export CVSROOT
105     fi
106    
107     EOF_CMSSET_DEFAULT_SH
108    
109    
110     ### CSH code
111    
112     cat << \EOF_CMSSET_DEFAULT_CSH > %instroot/cmsset_default.csh
113    
114     if (${?PATH}) then
115     setenv PATH %instroot/common:%instroot/bin:$PATH
116     else
117     setenv PATH %instroot/common:%instroot/bin
118     endif
119    
120     if ( ! ${?SCRAM_ARCH}) then
121     setenv SCRAM_ARCH `sh -c %instroot/common/cmsarch`
122     endif
123    
124     set here=%instroot
125    
126     if ( ${?VO_CMS_SW_DIR} ) then
127     set here=$VO_CMS_SW_DIR
128     else
129     # OSG
130     if ( ${?OSG_APP} ) then
131     set here=$OSG_APP/cmssoft/cms
132     endif
133     # OSG
134     endif
135    
136     if ( ! -e $here/cmsset_default.csh ) then
137     echo "Please cd into the directory where cmsset_default.csh is."
138     endif
139    
140     foreach pkg ( `/bin/ls ${here}/${SCRAM_ARCH}/etc/profile.d/ | grep 'S.*[.]csh'` )
141     source ${here}/${SCRAM_ARCH}/etc/profile.d/$pkg
142     end
143     if ( ! ${?CMS_PATH} ) then
144     setenv CMS_PATH $here
145     endif
146    
147     # aliases
148 muzaffar 1.9 alias cmsenv 'eval `scramv1 runtime -csh`'
149     alias cmsrel 'scramv1 project CMSSW'
150 muzaffar 1.1
151     if( -e $CMS_PATH/SITECONF/local/JobConfig/cmsset_local.csh ) then
152     source $CMS_PATH/SITECONF/local/JobConfig/cmsset_local.csh
153     endif
154    
155     if ( ! ${?CVSROOT}) then
156 andreasp 1.14 setenv CVSROOT :gserver:cmscvs.cern.ch:/cvs_server/repositories/CMSSW
157 muzaffar 1.1 endif
158    
159     unset here
160     EOF_CMSSET_DEFAULT_CSH
161    
162     cat << \EOF_COMMON_SCRAM > %instroot/common/scram
163     #!/bin/sh
164     CMSARCH=`cmsarch`
165 muzaffar 1.10 srbase=%{instroot}/$CMSARCH
166     sver=$SCRAM_VERSION
167     dir=`/bin/pwd`
168 muzaffar 1.17 while [ ! -d ${dir}/.SCRAM ] && [ "$dir" != "/" ] ; do
169 muzaffar 1.10 dir=`dirname $dir`
170     done
171     if [ -f ${dir}/config/scram_version ] ; then
172     sver=`cat ${dir}/config/scram_version`
173 muzaffar 1.17 elif [ "X$sver" = "X" ] ; then
174 muzaffar 1.10 sver=`cat ${srbase}/etc/default-scramv1-version`
175     fi
176 muzaffar 1.17 if [ "X$sver" = "XV1_0_3-p1" ] && [ "X$CMSARCH" = "Xslc4_ia32_gcc345" ] ; then
177 muzaffar 1.10 sver=V1_0_3-p2
178     fi
179     scram_rel_series=`echo $sver | grep '^V[0-9]\+_[0-9]\+_[0-9]\+' | sed 's|^\(V[0-9]\+_[0-9]\+\)_.*|\1|'`
180 muzaffar 1.17 if [ "X${scram_rel_series}" != "X" ] && [ -f ${srbase}/etc/default-scram/${scram_rel_series} ] ; then
181 muzaffar 1.10 sver=`cat ${srbase}/etc/default-scram/${scram_rel_series}`
182 muzaffar 1.1 fi
183     scmd=scram
184 muzaffar 1.10 srbase=%{instroot}/$CMSARCH/lcg/SCRAMV1
185 muzaffar 1.1 case $sver in
186 muzaffar 1.10 V0_* ) srbase=%{instroot}/$CMSARCH/lcg/SCRAM; scmd=scramv0;;
187     V1_0* ) scmd=scramv1;;
188     * ) ;;
189 muzaffar 1.1 esac
190 muzaffar 1.10 if [ ! -f ${srbase}/${sver}/etc/profile.d/init.sh ] ; then
191 muzaffar 1.8 echo "Unable to find SCRAM version $sver for $CMSARCH architecture."
192     exit 1
193     fi
194 muzaffar 1.17 . ${srbase}/${sver}/etc/profile.d/init.sh
195 elmer 1.2 # In the case we are on linux ia32 we prepend the linux32 command to the
196     # actual scram command so that, no matter where the ia32 architecture is
197     # running (i686 or x84_64) scram detects it as ia32.
198 muzaffar 1.1 CMSPLAT=`echo $CMSARCH | cut -d_ -f 2`
199 elmer 1.2 USE_LINUX32=
200 muzaffar 1.17 if [ `uname` = "Linux" ] && [ "$CMSPLAT" = "ia32" ] ; then
201 muzaffar 1.10 USE_LINUX32=linux32
202 muzaffar 1.1 fi
203 muzaffar 1.10 $USE_LINUX32 ${srbase}/${sver}/bin/${scmd} $@
204 muzaffar 1.1 EOF_COMMON_SCRAM
205    
206     chmod +x %{instroot}/common/scram
207     ln -sf scram %{instroot}/common/scramv1
208     ln -sf scram %{instroot}/common/scramv0
209 muzaffar 1.5 ln -sf ../common/cmsarch %instroot/bin/cmsarch
210     ln -sf ../common/cmsarch %instroot/bin/cmsos
211     ln -sf ../common/scramv1 %instroot/bin/scramv1
212 muzaffar 1.1 touch %instroot/common/.cms-common
213     fi
214    
215     touch %instroot/%cmsplatf/etc/profile.d/dummy
216    
217     %post
218     echo $RPM_INSTALL_PREFIX
219     perl -p -i -e "s|%{instroot}|$RPM_INSTALL_PREFIX|g" $RPM_INSTALL_PREFIX/cmsset_default.sh
220     perl -p -i -e "s|%{instroot}|$RPM_INSTALL_PREFIX|g" $RPM_INSTALL_PREFIX/cmsset_default.csh
221     perl -p -i -e "s|%{instroot}|$RPM_INSTALL_PREFIX|g" $RPM_INSTALL_PREFIX/common/cmsos
222     perl -p -i -e "s|%{instroot}|$RPM_INSTALL_PREFIX|g" $RPM_INSTALL_PREFIX/common/cmsarch
223     perl -p -i -e "s|%{instroot}|$RPM_INSTALL_PREFIX|g" $RPM_INSTALL_PREFIX/common/scram
224    
225     %files
226     %i
227     %instroot/cmsset_default.sh
228     %instroot/cmsset_default.csh
229     %instroot/common/cmsos
230     %instroot/common/cmsarch
231     %instroot/common/scram
232     %instroot/common/scramv1
233     %instroot/common/scramv0
234 muzaffar 1.4 %instroot/common/.cms-common
235     %instroot/bin/cmsos
236     %instroot/bin/cmsarch
237     %instroot/bin/scramv1
238 muzaffar 1.1 %instroot/%cmsplatf/etc/profile.d
239     %exclude %instroot/%cmsplatf/etc/profile.d/*