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