ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/fwlite.spec
Revision: 1.9
Committed: Tue Oct 23 21:49:52 2007 UTC (17 years, 6 months ago) by ratnik
Branch: MAIN
CVS Tags: nr071023_fwlite170p6
Changes since 1.8: +163 -23 lines
Log Message:
Updated for CMSSW_1_7_0_pre6.

File Contents

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