ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/online.spec
Revision: 1.16
Committed: Fri Mar 7 23:30:18 2008 UTC (17 years, 1 month ago) by ratnik
Branch: MAIN
CVS Tags: CMSSW_1_8_0_ONLINE1, nr080310_180onl1, nr080307onl180onl1
Changes since 1.15: +9 -6 lines
Log Message:
Change version to CMSSW_1_8_0_ONLINE1, added EventFilter/Cosmics V00-00-00 missing from the base release.

File Contents

# User Rev Content
1 ratnik 1.16 ### RPM cms online CMSSW_1_8_0_ONLINE1
2 ratnik 1.1 ## IMPORT configurations
3     Provides: /bin/zsh
4 ratnik 1.4 Requires: online-tool-conf python
5 ratnik 1.1 Requires: SCRAMV1
6 ratnik 1.16 %define cmssw_release %(perl -e '$_="%v"; s/_ONLINE1//; print;')
7 ratnik 1.1 %define ucprojname CMSSW
8     %define lcprojname cmssw
9    
10     %define buildtarget release-build
11     %define saveDeps yes
12     %define cvsproj %cvsprojuc
13     %define srctree src
14    
15     #%define scram_xml .xml
16     %define scram_xml %{nil}
17 ratnik 1.5 %define scramcmd scramv1 -arch %{cmsplatf}
18 ratnik 1.1
19     # NR: allow to change tarball names, otherwise old distributions
20     # are fetched from the apt SOURCE repository.
21    
22     %if "%{?configtar:set}" != "set"
23     %define configtar config.tar.gz
24     %endif
25    
26     %define cmsswsrc http://cmsrep.cern.ch/cms/cpt/Software/download/cms/SOURCES/cms/cmssw/%{cmssw_release}
27     # For partial releases re-using CMSSW sources:
28     %if "%{?cmsswsrc:set}" == "set"
29     Source0: %{cmsswsrc}/config.tar.gz
30     Source1: %{cmsswsrc}/src.tar.gz
31     %endif
32    
33 ratnik 1.16 # Add source for package missing from the base release:
34     Source2: cvs://:pserver:anonymous@cmscvs.cern.ch:2401/cvs_server/repositories/CMSSW?passwd=AA_:yZZ3e&module=EventFilter/Cosmics&export=src/EventFilter&&tag=-rV00-00-00&output=/extra.tar.gz
35    
36 ratnik 1.1 # List of packages to bootstrap for partial builds:
37 ratnik 1.16 Source3: online_build_set
38     Source4: cmssw-tool
39     Source5: findDependencies.pl
40 ratnik 1.1
41     %prep
42     rm -rf config
43     rm -rf %{srctree}
44     # Create a SCRAM project area, but using the already extracted
45     # sources. In other words, pick up the files from the project config
46     # area, but munge all instances of <base url="cvs:*"> into a local
47     # reference so SCRAM won't try to download stuff from the network.
48    
49     %setup -T -b 0 -n config
50     %setup -D -T -b 1 -n %{srctree}
51 ratnik 1.16 %setup -D -T -b 2 -n %{srctree}
52 ratnik 1.1
53 ratnik 1.4 # Remove plugins that only include tests, which we do not build:
54     rm -rf %_builddir/src/FWCore/Framework/plugins
55     rm -rf %_builddir/src/RecoVertex/KalmanVertexFit/plugins
56     rm -rf %_builddir/src/Alignment/CommonAlignmentMonitor/plugins
57    
58 ratnik 1.1 touch %_builddir/config/%{ucprojname}_ignore.file
59     for file in `ls %_builddir/config/%{ucprojname}_*.file | grep -v '/%{ucprojname}_ignore.file$' | sed 's|.*/%{ucprojname}_||;s|.file$||'`; do
60     sed 's|@PROJECT_NAME@|%ucprojname|g;s|@PROJECT_VERSION@|%v|g;s|@PROJECT_BUILD_PATH@|%_builddir|g' %_builddir/config/%{ucprojname}_${file}.file > %_builddir/config/${file}
61     done
62 ratnik 1.3
63 ratnik 1.1 if [ ${ONLINE_TOOL_CONF_ROOT}/configurations/requirements%scram_xml ] ; then
64     cp ${ONLINE_TOOL_CONF_ROOT}/configurations/requirements%scram_xml %_builddir/config/
65     fi
66     rm -f %_builddir/config/%{ucprojname}_ignore.file
67     rm -rf %_builddir/config/site
68     cp -rf ${ONLINE_TOOL_CONF_ROOT}/configurations/SCRAMToolBox/CMSconfigs %_builddir/config/site
69     echo $SCRAMV1_VERSION > %_builddir/config/scram_version
70    
71     pwd
72     cd %_builddir
73    
74     echo $PERL5LIB
75     echo rm -rf %i
76     mkdir -p $(dirname %i)
77    
78     %{?buildarch:%buildarch}
79     export SCRAM_TOOLBOXVERSION=%cmssw_release
80    
81     mv config/bootsrc config/bootsrc_orig
82    
83 ratnik 1.4 # Disable building tests, as they bring dependency on cppunit
84     perl -p -i -e ' s!<ClassPath(.*)test(.*)!!;' %_builddir/config/BuildFile
85    
86     # Specify package list for source bootstrap:
87 ratnik 1.1 perl -p -e 'if (s/(<download.*)(file:src)(.*)(name="src)(">)/#$1$2$3$4$5/){open $fh, "%_sourcedir/online_build_set" or die; while(readline $fh){chomp;print "$1$2/$_$3$4/$_$5\n"}}' config/bootsrc_orig > config/bootsrc
88    
89     %scramcmd project -d $(dirname %i) -b config/bootsrc -f %_builddir/config/site/tools-`cat %_builddir/config/site/sitename`.conf
90     perl -p -i -e "s|STANDALONE|%v|" %i/.SCRAM/Environment* %i/.SCRAM/%cmsplatf/ToolCache.db
91     cd %i
92     %scramcmd setup
93    
94     %build
95     pwd
96     # Remove cmt stuff that brings unwanted dependencies:
97     rm -rf `find %{i}/src -type d -name cmt`
98     echo `%scramcmd arch`
99     cd %i
100     cd src
101    
102     %{?buildarch:%buildarch}
103    
104     export BUILD_LOG=yes
105     export SCRAM_NOPLUGINREFRESH=yes
106     # export SCRAM_NOSYMCHECK=true
107    
108     if [ $(uname) = Darwin ]; then
109     # %scramcmd doesn't know the rpath variable on darwin...
110     %scramcmd b echo_null # ensure lib, bin exist
111     eval `%scramcmd runtime -sh`
112     export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH
113     fi
114    
115     %if "%{?nolibchecks:set}" == "set"
116     export SCRAM_NOLOADCHECK=true
117     export SCRAM_NOSYMCHECK=true
118     %endif
119    
120     %if "%{?preBuildCommand:set}" == "set"
121     echo "executing %preBuildCommand"
122     %preBuildCommand
123     %endif
124    
125     %if "%{?buildtarget:set}" != "set"
126     %define buildtarget %{nil}
127     %endif
128    
129     %scramcmd b -r echo_CXX </dev/null
130     %if "%{?prebuildtarget:set}" == "set"
131     %scramcmd b --verbose -f %{prebuildtarget} </dev/null
132     %endif
133     %scramcmd b --verbose -f %{compileOptions} %{makeprocesses} %{buildtarget} </dev/null
134     %if "%{?additionalBuildTarget0:set}" == "set"
135     %scramcmd b --verbose -f %{additionalBuildTarget0} < /dev/null
136     %endif
137     %if "%{?postbuildtarget:set}" == "set"
138     %scramcmd b --verbose -f %{postbuildtarget} </dev/null
139     %endif
140    
141     # strip out dependencies first...
142     %if "%{?saveDeps:set}" == "set"
143     mkdir -p %i/etc/dependencies
144     chmod +x %{_sourcedir}/findDependencies.pl
145     %{_sourcedir}/findDependencies.pl -rel %i
146     gzip %i/etc/dependencies/uses.out
147     gzip %i/etc/dependencies/usedby.out
148     %endif
149    
150    
151     rm -rf %i/tmp
152     chmod -R 755 %i %i/.SCRAM
153     (eval `%scramcmd run -sh` ; SealPluginRefresh) || true
154     rm -fR %i/lib/%cmsplatf/.edmplugincache
155     (eval `%scramcmd run -sh` ; EdmPluginRefresh) || true
156    
157     %install
158     cd %i
159     %{?buildarch:%buildarch}
160     perl -p -i -e "s|^#!.*perl(.*)|#!/usr/bin/env perl$1|" $(grep -r -e "^#!.*perl.*" . | cut -d: -f1)
161     # need writeable directory for profile stuff
162     mkdir -p etc/scram.d
163     sed 's|@PROJECT_NAME@|%ucprojname|g;s|@PROJECT_VERSION@|%v|g;s|@PROJECT_BUILD_PATH@|%_builddir|g;s|@PROJECT_ROOT@|%i|g' %_sourcedir/%lcprojname-tool > etc/scram.d/%lcprojname
164     yes | %scramcmd install # FIXME: do by hand?
165    
166     %post
167     cd $RPM_INSTALL_PREFIX/%pkgrel
168     %{relocateConfig}etc/scram.d/%lcprojname
169     perl -p -i -e "s|%{instroot}|$RPM_INSTALL_PREFIX|g" $(find config -type f) $(find .SCRAM -type f)
170     scramver=`cat config/scram_version`
171     source $RPM_INSTALL_PREFIX/%cmsplatf/lcg/SCRAMV1/$scramver/etc/profile.d/init.sh
172     %{?buildarch:%buildarch}
173     yes | %scramcmd install
174     (rm -rf external/%cmsplatf; ./config/linkexternal.pl --arch %cmsplatf --nolink INCLUDE) || true
175     eval `%scramcmd run -sh`
176     for cmd in SealPluginRefresh EdmPluginRefresh IgPluginRefresh ; do
177     cmdpath=`which $cmd 2> /dev/null`
178     if [ "X$cmdpath" != X ] ; then
179     $cmd || true
180     fi
181     done