ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/boost.spec
Revision: 1.49
Committed: Sat Oct 31 21:48:38 2009 UTC (15 years, 5 months ago) by lat
Branch: MAIN
CVS Tags: DQMGUI_5_1_6, DQMGUI_5_1_5, CMSSW_3_4_0_pre6, pe20091120b-for34X-slc5-gcc434, pe20091120a-for34X-slc5-gcc434, DQMGUI_5_1_5_pre1, pe20091119b-for34X-slc5-gcc434, DQMGUI_5_1_4, pe20091119a-for34X-slc5-gcc434, eskFor340p6-slc5-gcc434, DAS_20091117, pe20091116a-for34X-slc5-gcc434, pe20091114a-for34X-slc5-gcc434, pe20091113c-for34X-slc5-gcc434, pe20091110c-34X-slc5-gcc434, pe20091110c-34X-slc4-gcc432, pe20091108c-34X-slc5-gcc434, pe20091108c-34X-slc4-gcc432, pe20091108b-34X-slc5-gcc434, pe20091108b-34X-slc4-gcc432, pe20091108a-34X-slc4-gcc432, pe20091106a-34X-slc5-gcc434, pe20091106a-34X-slc4-gcc432, BUILDBOT_01, DQMGUI_5_1_3, DQMGUI_5_1_2, CERNOIDv02, pe20091103d-34X-slc5-gcc434, pe20091103d-34X-slc4-gcc432, pe20091103c-34X-slc5-gcc434, pe20091103c-34X-slc4-gcc432, pe20091103b-slc4-gcc432, pe20091103a-slc5-gcc434, pe20091103a-slc4-gcc432, pe20091103a--slc4-gcc432, pe20091103a-for34X, DQMGUI_5_1_1, DQMGUI_5_1_0
Changes since 1.48: +2 -1 lines
Log Message:
Automatically adjust scram.d to python version number.

File Contents

# User Rev Content
1 elmer 1.48 ### RPM external boost 1.40.0
2 elmer 1.17 %define boostver _%(echo %realversion | tr . _)
3 ratnik 1.31 Source: http://internap.dl.sourceforge.net/sourceforge/%{n}/%{n}%{boostver}.tar.gz
4 muzaffar 1.46 %define closingbrace )
5 elmer 1.47 %define online %(case %cmsplatf in *onl_*_*%closingbrace echo true;; *%closingbrace echo false;; esac)
6 argiro 1.1
7 ratnik 1.25 Requires: boost-build python bz2lib
8 muzaffar 1.45 %if "%online" != "true"
9 ratnik 1.25 Requires: zlib
10     %endif
11    
12 argiro 1.1 %prep
13     %setup -n %{n}%{boostver}
14    
15     %build
16     # Note that some targets will fail to build (the test programs have
17     # missing symbols), causing darwin to fail to link and bjam to return
18     # an error. So ignore the exit code from bjam on darwin to avoid
19     # RPM falsely detecting a problem.
20 ratnik 1.25 PV="PYTHON_VERSION=$(echo $PYTHON_VERSION | sed 's/\.[0-9]*-.*$//')"
21 argiro 1.1 PR="PYTHON_ROOT=$PYTHON_ROOT"
22 ratnik 1.25
23 elmer 1.17 # The following line assumes a version of the form x.y.z-XXXX, where the
24     # "-XXXX" part represents some CMS rebuild of version x.y.z
25     BZ2LIBR="BZIP2_LIBPATH=$BZ2LIB_ROOT/lib"
26 ratnik 1.25 BZ2LIBI="BZIP2_INCLUDE=$BZ2LIB_ROOT/include"
27    
28 muzaffar 1.45 %if "%online" != "true"
29 eulisse 1.8 ZLIBR="ZLIB_LIBPATH=$ZLIB_ROOT/lib"
30     ZLIBI="ZLIB_INCLUDE=$ZLIB_ROOT/include"
31    
32 argiro 1.1 case $(uname) in
33 elmer 1.33 Darwin ) bjam %makeprocesses -s$PR -s$PV -s$BZ2LIBR -s$ZLIBR -sTOOLS=darwin --toolset=darwin || true ;;
34 dlange 1.22 * ) bjam %makeprocesses -s$PR -s$PV -s$BZ2LIBR -s$ZLIBR -sTOOLS=gcc ;;
35 argiro 1.1 esac
36 ratnik 1.25 %else
37     bjam %makeprocesses -s$PR -s$PV -s$BZ2LIBR -s$BZ2LIBI -sTOOLS=gcc
38     %endif
39 argiro 1.1
40     %install
41     case $(uname) in Darwin ) so=dylib ;; * ) so=so ;; esac
42 dlange 1.20 #no debug libs...
43     #mkdir -p %i/lib/debug
44     mkdir %i/lib
45     #(cd bin/boost; find libs -path "libs/*/debug/*.$so" -exec cp {} %i/lib/debug \;)
46 elmer 1.33 # Perhaps the following could be done with a wildcard for the darwin/gcc dir
47 eulisse 1.42 case %cmsplatf in
48     osx*)
49 elmer 1.33 (cd bin.v2; find libs -path "libs/*/build/darwin*/release/*.$so*" -exec cp {} %i/lib/. \;)
50     ;;
51 eulisse 1.42 * )
52 elmer 1.33 (cd bin.v2; find libs -path "libs/*/build/gcc*/release/*.$so*" -exec cp {} %i/lib/. \;)
53     ;;
54     esac
55 eulisse 1.42
56 eulisse 1.7 find boost -name '*.[hi]*' -print |
57 argiro 1.1 while read f; do
58     mkdir -p %i/include/$(dirname $f)
59     install -c $f %i/include/$f
60     done
61     find libs -name '*.py' -print |
62     while read f; do
63     mkdir -p %i/lib/$(dirname $f)
64     install -c $f %i/lib/$f
65     done
66 eulisse 1.6
67 ratnik 1.19 # Do all manipulation with files before creating symbolic links:
68     perl -p -i -e "s|^#!.*python|/usr/bin/env python|" $(find %{i}/lib %{i}/bin)
69 elmer 1.33 #strip %i/lib/*.$so
70 ratnik 1.19
71 eulisse 1.42 for l in `find %i/lib -name "*.$so.*"`
72     do
73     ln -s `basename $l` `echo $l | sed -e "s|[.]$so[.].*|.$so|"`
74     done
75 ratnik 1.31
76 eulisse 1.4 (cd %i/lib/libs/python/pyste/install; python setup.py install --prefix=%i)
77 ratnik 1.16
78 eulisse 1.41 getLibName()
79     {
80 elmer 1.48 libname=`find %i/lib -name "libboost_$1.$so" -exec basename {} \;`
81 eulisse 1.41 echo $libname | sed -e 's|[.][^-]*$||;s|^lib||'
82     }
83    
84     export BOOST_THREAD_LIB=`getLibName thread`
85     export BOOST_SIGNALS_LIB=`getLibName signals`
86     export BOOST_FILESYSTEM_LIB=`getLibName filesystem`
87 andreasp 1.44 export BOOST_SYSTEM_LIB=`getLibName system`
88 eulisse 1.41 export BOOST_PROGRAM_OPTIONS_LIB=`getLibName program_options`
89     export BOOST_PYTHON_LIB=`getLibName python`
90     export BOOST_REGEX_LIB=`getLibName regex`
91 lat 1.49 export PYTHONV=$(echo $PYTHON_VERSION | cut -f1,2 -d.)
92 eulisse 1.41
93 muzaffar 1.21 # SCRAM ToolBox toolfile
94     mkdir -p %i/etc/scram.d
95     # boost toolfile
96     cat << \EOF_TOOLFILE >%i/etc/scram.d/boost
97     <doc type=BuildSystem::ToolDoc version=1.0>
98     <Tool name=boost version=%v>
99     <info url="http://www.boost.org"></info>
100 eulisse 1.41 <lib name="@BOOST_THREAD_LIB@">
101     <lib name="@BOOST_SIGNALS_LIB@">
102 muzaffar 1.21 <Client>
103     <Environment name=BOOST_BASE default="%i"></Environment>
104     <Environment name=LIBDIR default="$BOOST_BASE/lib"></Environment>
105     <Environment name=INCLUDE default="$BOOST_BASE/include"></Environment>
106     </Client>
107     <use name=sockets>
108 dlange 1.22 <Runtime name=LD_LIBRARY_PATH value="$BOOST_BASE/lib" type=path>
109     <Runtime name=CMSSW_FWLITE_INCLUDE_PATH value="$BOOST_BASE/include" type=path>
110 muzaffar 1.21 </Tool>
111     EOF_TOOLFILE
112    
113     # boost_filesystem toolfile
114     cat << \EOF_TOOLFILE >%i/etc/scram.d/boost_filesystem
115     <doc type=BuildSystem::ToolDoc version=1.0>
116     <Tool name=boost_filesystem version=%v>
117     <info url="http://www.boost.org"></info>
118 eulisse 1.41 <lib name="@BOOST_FILESYSTEM_LIB@">
119 andreasp 1.44 <use name=boost_system>
120     <use name=boost>
121     </Tool>
122     EOF_TOOLFILE
123    
124     # boost_system toolfile
125     cat << \EOF_TOOLFILE >%i/etc/scram.d/boost_system
126     <doc type=BuildSystem::ToolDoc version=1.0>
127     <Tool name=boost_system version=%v>
128     <info url="http://www.boost.org"></info>
129     <lib name="@BOOST_SYSTEM_LIB@">
130 muzaffar 1.21 <use name=boost>
131     </Tool>
132     EOF_TOOLFILE
133    
134     # boost_program_options toolfile
135     cat << \EOF_TOOLFILE >%i/etc/scram.d/boost_program_options
136     <doc type=BuildSystem::ToolDoc version=1.0>
137     <Tool name=boost_program_options version=%v>
138     <info url="http://www.boost.org"></info>
139 eulisse 1.41 <lib name="@BOOST_PROGRAM_OPTIONS_LIB@">
140 muzaffar 1.21 <use name=boost>
141     </Tool>
142     EOF_TOOLFILE
143    
144     # boost_python toolfile
145     cat << \EOF_TOOLFILE >%i/etc/scram.d/boost_python
146     <doc type=BuildSystem::ToolDoc version=1.0>
147     <Tool name=boost_python version=%v>
148     <info url="http://www.boost.org"></info>
149 eulisse 1.41 <lib name="@BOOST_PYTHON_LIB@">
150 muzaffar 1.21 <Client>
151     <Environment name=BOOST_PYTHON_BASE default="%i"></Environment>
152 lat 1.49 <Environment name=PYSTE_EXEC default="$BOOST_PYTHON_BASE/lib/python@PYTHONV@/site-packages/Pyste/pyste.py"></Environment>
153 muzaffar 1.21 <Environment name=LIBDIR default="$BOOST_PYTHON_BASE/lib"></Environment>
154     <Environment name=INCLUDE default="$BOOST_PYTHON_BASE/include"></Environment>
155     </Client>
156     <use name=elementtree>
157     <use name=gccxml>
158     <use name=python>
159     </Tool>
160     EOF_TOOLFILE
161    
162     # boost_regex toolfile
163     cat << \EOF_TOOLFILE >%i/etc/scram.d/boost_regex
164     <doc type=BuildSystem::ToolDoc version=1.0>
165     <Tool name=boost_regex version=%v>
166     <info url="http://www.boost.org"></info>
167 eulisse 1.41 <lib name="@BOOST_REGEX_LIB@">
168 muzaffar 1.21 <use name=boost>
169     </Tool>
170     EOF_TOOLFILE
171    
172     # boost_signals toolfile
173     cat << \EOF_TOOLFILE >%i/etc/scram.d/boost_signals
174     <doc type=BuildSystem::ToolDoc version=1.0>
175     <Tool name=boost_signals version=%v>
176     <info url="http://www.boost.org"></info>
177 eulisse 1.41 <lib name="@BOOST_SIGNALS_LIB@">
178 muzaffar 1.21 <use name=boost>
179     </Tool>
180     EOF_TOOLFILE
181    
182 eulisse 1.41 perl -p -i -e 's|\@([^@]*)\@|$ENV{$1}|g' %i/etc/scram.d/*
183    
184 muzaffar 1.21 %post
185     %{relocateConfig}etc/scram.d/boost
186     %{relocateConfig}etc/scram.d/boost_filesystem
187     %{relocateConfig}etc/scram.d/boost_program_options
188     %{relocateConfig}etc/scram.d/boost_python
189     %{relocateConfig}etc/scram.d/boost_regex
190     %{relocateConfig}etc/scram.d/boost_signals