ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/root.spec
(Generate patch)

Comparing COMP/CMSDIST/root.spec (file contents):
Revision 1.107 by dlange, Sat Mar 8 02:24:13 2008 UTC vs.
Revision 1.197 by elmer, Tue May 11 23:28:21 2010 UTC

# Line 1 | Line 1
1 < ### RPM lcg root 5.18.00a
1 > ### RPM lcg root 5.27.02
2   ## INITENV +PATH PYTHONPATH %i/lib/python
3 < ## INITENV SET ROOTSYS %i
3 > ## INITENV SET ROOTSYS %i
4   #Source: cvs://:pserver:cvs@root.cern.ch:2401/user/cvs?passwd=Ah<Z&tag=-rv%(echo %realversion | tr . -)&module=root&output=/%{n}_v%{realversion}.source.tar.gz
5   Source: ftp://root.cern.ch/%n/%{n}_v%{realversion}.source.tar.gz
6 + %define closingbrace )
7 + %define online %(case %cmsplatf in *onl_*_*%closingbrace echo true;; *%closingbrace echo false;; esac)
8  
9 < Patch0: root-5.18-00-libpng
10 < Patch1: root-5.18-00a-CINT-maxlongline
11 < Patch2: root_5.18-00-CINTFunctional
12 < Patch3: root-5.18-00a-TBufferXML
13 < Patch4: root-5.18-00a-Cintex
14 <
9 > Patch0:  root-5.18-00-libpng
10 > Patch1:  root-5.22-00-TMVA-shut-the-hell-up-for-once
11 > Patch2:  root-5.22-00a-roofit-silence-static-printout
12 > Patch3:  root-5.22-00d-linker-gnu-hash-style
13 > Patch4:  root-5.26-00a-CINT-maxlongline
14 > Patch5:  root-5.26-00a-silence-TMVA
15 > Patch6:  root-5.22-00d-TBranchElement-dropped-data-member
16  
17   %define cpu %(echo %cmsplatf | cut -d_ -f2)
15 %define pythonv %(echo $PYTHON_VERSION | cut -d. -f1,2)
18  
19   Requires: gccxml gsl castor libjpg dcap pcre python
20  
21 < %if "%{?online_release:set}" != "set"
22 < Requires: qt openssl mysql libpng zlib oracle libungif xrootd
21 > %if "%online" != "true"
22 > Requires: qt openssl libpng zlib libungif xrootd
23   %else
24   %define skiplibtiff true
25   %endif
# Line 34 | Line 36 | Requires: libtiff
36   %setup -n root
37   %patch0 -p1
38   %patch1 -p1
39 < %patch2 -p0
39 > %patch2 -p1
40   %patch3 -p1
41 < %patch4 -p0
41 > %patch4 -p1
42 > %patch5 -p1
43 > %patch6 -p1
44  
45   %build
46 +
47   mkdir -p %i
48   export ROOTSYS=%_builddir/root
49 + export PYTHONV=$(echo $PYTHON_VERSION | cut -f1,2 -d.)
50  
51 < %if "%{?online_release:set}" == "set"
52 < # Use oracle from xdaq installation:
53 < ORACLE_ROOT="/opt/xdaq"
54 < # Build without mysql, and use system qt and openssl:
55 < EXTRA_CONFIG_ARGS="
56 <             --disable-mysql
57 <             --enable-qt
52 <             --enable-ssl"
53 < # Also skip xrootd option for online case.
51 > %if "%online" == "true"
52 > # Use system qt. Also skip xrootd and odbc for online case:
53 >
54 > EXTRA_CONFIG_ARGS="--with-f77=/usr
55 >             --disable-xrootd
56 >             --disable-odbc
57 >             --disable-qt --disable-qtgsi"
58   %else
59 < EXTRA_CONFIG_ARGS="
59 > EXTRA_CONFIG_ARGS="--with-f77=${GCC_ROOT}
60               --with-xrootd=$XROOTD_ROOT
57             --enable-mysql --with-mysql-libdir=${MYSQL_ROOT}/lib --with-mysql-incdir=${MYSQL_ROOT}/include
61               --enable-qt --with-qt-libdir=${QT_ROOT}/lib --with-qt-incdir=${QT_ROOT}/include
62               --with-ssl-incdir=${OPENSSL_ROOT}/include
63 <             --with-ssl-libdir=${OPENSSL_ROOT}/lib"
63 >             --with-ssl-libdir=${OPENSSL_ROOT}/lib
64 >             --enable-qtgsi"
65   %endif
66  
67   CONFIG_ARGS="--enable-table
# Line 65 | Line 69 | CONFIG_ARGS="--enable-table
69               --disable-builtin-freetype
70               --disable-builtin-zlib
71               --with-gccxml=${GCCXML_ROOT}
72 <             --enable-python --with-python-libdir=${PYTHON_ROOT}/lib --with-python-incdir=${PYTHON_ROOT}/include/python2.4
72 >             --enable-python --with-python-libdir=${PYTHON_ROOT}/lib --with-python-incdir=${PYTHON_ROOT}/include/python${PYTHONV}
73               --enable-explicitlink
70             --enable-qtgsi
71             --enable-mathcore
74               --enable-mathmore
75               --enable-reflex  
76               --enable-cintex
77               --enable-minuit2
76             --enable-roofit
78               --disable-ldap
79               --disable-krb5
80               --with-gsl-incdir=${GSL_ROOT}/include
# Line 81 | Line 82 | CONFIG_ARGS="--enable-table
82               --with-dcap-libdir=${DCAP_ROOT}/lib
83               --with-dcap-incdir=${DCAP_ROOT}/include
84               --disable-pgsql
85 +             --disable-mysql
86               --disable-xml ${EXTRA_CONFIG_ARGS}"
87  
88 < %if (("%cmsplatf" == "slc4_ia32_gcc412")||("%cmsplatf" == "slc4_ia32_gcc422")||("%cmsplatf" == "slc4_amd64_gcc345"))
87 <  CONFIG_ARGS="$CONFIG_ARGS --disable-cern"
88 < %endif
89 <
90 < case $(uname)-$(uname -p) in
88 > case $(uname)-$(uname -m) in
89    Linux-x86_64)
90 <    ./configure linuxx8664gcc $CONFIG_ARGS --enable-oracle --with-oracle-libdir=${ORACLE_ROOT}/lib --with-oracle-incdir=${ORACLE_ROOT}/include --with-shift-libdir=${CASTOR_ROOT}/lib --with-shift-incdir=${CASTOR_ROOT}/include/shift --disable-astiff --disable-cern;;
90 >    ./configure linuxx8664gcc $CONFIG_ARGS --with-shift-libdir=${CASTOR_ROOT}/lib --with-shift-incdir=${CASTOR_ROOT}/include/shift --disable-astiff;;
91    Linux-i*86)
92 <    ./configure linux  $CONFIG_ARGS --enable-oracle --with-oracle-libdir=${ORACLE_ROOT}/lib --with-oracle-incdir=${ORACLE_ROOT}/include --with-shift-libdir=${CASTOR_ROOT}/lib --with-shift-incdir=${CASTOR_ROOT}/include/shift;;
92 >    ./configure linux  $CONFIG_ARGS --with-shift-libdir=${CASTOR_ROOT}/lib --with-shift-incdir=${CASTOR_ROOT}/include/shift;;
93    Darwin*)
94 <    ./configure macosx $CONFIG_ARGS --disable-rfio;;
94 >    ./configure macosx $CONFIG_ARGS --disable-rfio --disable-builtin_afterimage ;;
95    Linux-ppc64*)
96      ./configure linux $CONFIG_ARGS --disable-rfio;;
97   esac
98  
99 < make  %makeprocesses
99 > case %cmsplatf in
100 >  osx*)
101 >   makeopts=
102 >  ;;
103 >  *)
104 >   makeopts="%makeprocesses"
105 >  ;;
106 > esac
107 >
108 > make $makeopts
109   make cintdlls
110 +
111   %install
112   # Override installers if we are using GNU fileutils cp.  On OS X
113   # ROOT's INSTALL is defined to "cp -pPR", which only works with
# Line 115 | Line 123 | fi
123   export ROOTSYS=%i
124   make INSTALL="$cp" INSTALLDATA="$cp" install
125   mkdir -p $ROOTSYS/lib/python
126 < cp -r reflex/python/genreflex $ROOTSYS/lib/python
126 > cp -r cint/reflex/python/genreflex $ROOTSYS/lib/python
127   #
128  
129   # SCRAM ToolBox toolfile
130   mkdir -p %i/etc/scram.d
131   # rootcore toolfile
132 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootcore
133 < <doc type=BuildSystem::ToolDoc version=1.0>
134 < <Tool name=rootcore version=%v>
135 < <info url="http://root.cern.ch/root/"></info>
136 < <lib name=Cint>
137 < <lib name=Core>
138 < <lib name=RIO>
139 < <lib name=Net>
140 < <lib name=Tree>
141 < <Client>
142 < <Environment name=ROOTCORE_BASE default="%i"></Environment>
143 < <Environment name=LIBDIR default="$ROOTCORE_BASE/lib"></Environment>
144 < <Environment name=INCLUDE default="$ROOTCORE_BASE/include"></Environment>
145 < <Environment name=INCLUDE default="$ROOTCORE_BASE/cint"></Environment>
146 < </Client>
147 < <use name=sockets>
148 < <use name=pcre>
149 < <use name=zlib>
150 < <Runtime name=PATH value="$ROOTCORE_BASE/bin" type=path>
151 < <Runtime name=ROOTSYS value="$ROOTCORE_BASE/">
152 < <Runtime name=PYTHONPATH value="$ROOTCORE_BASE/lib" type=path>
153 < </Tool>
154 < EOF_TOOLFILE
155 <
156 < # root toolfile
157 < cat << \EOF_TOOLFILE >%i/etc/scram.d/root
158 < <doc type=BuildSystem::ToolDoc version=1.0>
159 < <Tool name=root version=%v>
160 < <info url="http://root.cern.ch/root/"></info>
161 < <lib name=TreePlayer>
162 < <lib name=Gpad>
163 < <lib name=Graf3d>
164 < <lib name=Graf>
165 < <lib name=Hist>
166 < <lib name=Matrix>
167 < <lib name=Physics>
168 < <lib name=Postscript>
169 < <use name=ROOTCore>
170 < </Tool>
132 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootcore.xml
133 >  <tool name="rootcore" version="%v">
134 >    <info url="http://root.cern.ch/root/"/>
135 >    <lib name="Tree"/>
136 >    <lib name="Net"/>
137 >    <lib name="Thread"/>
138 >    <lib name="MathCore"/>
139 >    <lib name="RIO"/>
140 >    <lib name="Core"/>
141 >    <lib name="Cint"/>
142 >    <client>
143 >      <environment name="ROOTCORE_BASE" default="%i"/>
144 >      <environment name="LIBDIR" default="$ROOTCORE_BASE/lib"/>
145 >      <environment name="INCLUDE" default="$ROOTCORE_BASE/include"/>
146 >      <environment name="INCLUDE" default="$ROOTCORE_BASE/cint"/>
147 >    </client>
148 >    <runtime name="PATH" value="$ROOTCORE_BASE/bin" type="path"/>
149 >    <runtime name="ROOTSYS" value="$ROOTCORE_BASE/"/>
150 >    <runtime name="PYTHONPATH" value="$ROOTCORE_BASE/lib" type="path"/>
151 >    <use name="sockets"/>
152 >    <use name="pcre"/>
153 >    <use name="zlib"/>
154 >  </tool>
155 > EOF_TOOLFILE
156 >
157 > # root toolfile, alias for rootphysics. Using rootphysics is preferred.
158 > cat << \EOF_TOOLFILE >%i/etc/scram.d/root.xml
159 >  <tool name="root" version="%v">
160 >    <info url="http://root.cern.ch/root/"/>
161 >    <use name="rootphysics"/>
162 >  </tool>
163 > EOF_TOOLFILE
164 >
165 > # roothistmatrix toolfile
166 > cat << \EOF_TOOLFILE >%i/etc/scram.d/roothistmatrix.xml
167 >  <tool name="roothistmatrix" version="%v">
168 >    <info url="http://root.cern.ch/root/"/>
169 >    <lib name="Hist"/>
170 >    <lib name="Matrix"/>
171 >    <use name="ROOTCore"/>
172 >  </tool>
173 > EOF_TOOLFILE
174 >
175 > # rootgpad toolfile
176 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootgpad.xml
177 >  <tool name="rootgpad" version="%v">
178 >    <info url="http://root.cern.ch/root/"/>
179 >    <lib name="Gpad"/>
180 >    <lib name="Graf"/>
181 >    <use name="roothistmatrix"/>
182 >  </tool>
183 > EOF_TOOLFILE
184 >
185 > # rootphysics toolfile
186 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootphysics.xml
187 >  <tool name="rootphysics" version="%v">
188 >    <info url="http://root.cern.ch/root/"/>
189 >    <lib name="Physics"/>
190 >    <use name="roothistmatrix"/>
191 >  </tool>
192 > EOF_TOOLFILE
193 >
194 > # rootgraphics toolfile, identical to old "root" toolfile
195 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootgraphics.xml
196 >  <tool name="rootgraphics" version="%v">
197 >    <info url="http://root.cern.ch/root/"/>
198 >    <lib name="TreePlayer"/>
199 >    <lib name="Graf3d"/>
200 >    <lib name="Postscript"/>
201 >    <use name="rootgpad"/>
202 >  </tool>
203   EOF_TOOLFILE
204  
205   # rootcintex toolfile
206 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootcintex
207 < <doc type=BuildSystem::ToolDoc version=1.0>
208 < <Tool name=rootcintex version=%v>
209 < <info url="http://root.cern.ch/root/"></info>
210 < <lib name=Cintex>
211 < <use name=ROOTRflx>
212 < <use name=ROOTCore>
213 < </Tool>
214 < EOF_TOOLFILE
215 <
216 < # rootinteractive toolfile
217 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootinteractive
218 < <doc type=BuildSystem::ToolDoc version=1.0>
219 < <Tool name=rootinteractive version=%v>
220 < <info url="http://root.cern.ch/root/"></info>
221 < <lib name=Rint>
222 < <lib name=GQt>
223 < <use name=qt>
224 < <use name=libjpg>
225 < <use name=libpng>
226 < <use name=ROOT>
227 < </Tool>
206 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootcintex.xml
207 >  <tool name="rootcintex" version="%v">
208 >    <info url="http://root.cern.ch/root/"/>
209 >    <lib name="Cintex"/>
210 >    <use name="ROOTRflx"/>
211 >    <use name="ROOTCore"/>
212 >  </tool>
213 > EOF_TOOLFILE
214 >
215 > # rootinteractive toolfile (GQt/qt lib dependencies
216 > # have been moved to rootqt.xml)
217 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootinteractive.xml
218 >  <tool name="rootinteractive" version="%v">
219 >    <info url="http://root.cern.ch/root/"/>
220 >    <lib name="Rint"/>
221 >    <lib name="Gui"/>
222 >    <use name="libjpg"/>
223 >    <use name="libpng"/>
224 >    <use name="rootgpad"/>
225 >  </tool>
226 > EOF_TOOLFILE
227 >
228 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootqt.xml
229 >  <tool name="rootqt" version="%v">
230 >    <info url="http://root.cern.ch/root/"/>
231 >    <lib name="GQt"/>
232 >    <use name="qt"/>
233 >  </tool>
234   EOF_TOOLFILE
235  
236   # rootmath toolfile
237 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootmath
238 < <doc type=BuildSystem::ToolDoc version=1.0>
239 < <Tool name=rootmath version=%v>
240 < <info url="http://root.cern.ch/root/"></info>
241 < <lib name=MathCore>
242 < <lib name=MathMore>
243 < <use name=ROOTCore>
244 < <use name=gsl>
199 < </Tool>
237 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootmath.xml
238 >  <tool name="rootmath" version="%v">
239 >    <info url="http://root.cern.ch/root/"/>
240 >    <lib name="GenVector"/>
241 >    <lib name="MathMore"/>
242 >    <use name="ROOTCore"/>
243 >    <use name="gsl"/>
244 >  </tool>
245   EOF_TOOLFILE
246  
247   # rootminuit toolfile
248 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootminuit
249 < <doc type=BuildSystem::ToolDoc version=1.0>
250 < <Tool name=rootminuit version=%v>
251 < <info url="http://root.cern.ch/root/"></info>
252 < <lib name=Minuit>
253 < <use name=ROOT>
209 < </Tool>
248 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootminuit.xml
249 >  <tool name="rootminuit" version="%v">
250 >    <info url="http://root.cern.ch/root/"/>
251 >    <lib name="Minuit"/>
252 >    <use name="rootgpad"/>
253 >  </tool>
254   EOF_TOOLFILE
255  
256   # rootminuit2 toolfile
257 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootminuit2
258 < <doc type=BuildSystem::ToolDoc version=1.0>
259 < <Tool name=rootminuit2 version=%v>
260 < <info url="http://root.cern.ch/root/"></info>
261 < <lib name=Minuit2>
262 < <use name=ROOT>
219 < </Tool>
257 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootminuit2.xml
258 >  <tool name="rootminuit2" version="%v">
259 >    <info url="http://root.cern.ch/root/"/>
260 >    <lib name="Minuit2"/>
261 >    <use name="rootgpad"/>
262 >  </tool>
263   EOF_TOOLFILE
264  
265   # rootrflx toolfile
266 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootrflx
267 < <doc type=BuildSystem::ToolDoc version=1.0>
268 < <Tool name=rootrflx version=%v>
269 < <info url="http://root.cern.ch/root/"></info>
270 < <lib name=Reflex>
271 < <Client>
272 < <Environment name=ROOTRFLX_BASE default="%i"></Environment>
273 < <Environment name=LIBDIR default="$ROOTRFLX_BASE/lib"></Environment>
274 < <Environment name=INCLUDE default="$ROOTRFLX_BASE/include"></Environment>
275 < </Client>
276 < <use name=sockets>
277 < <use name=gccxml>
278 < <Runtime name=PATH value="$ROOTRFLX_BASE/bin" type=path>
279 < <Runtime name=ROOTSYS value="$ROOTRFLX_BASE/">
280 < <Runtime name=GENREFLEX value="$ROOTRFLX_BASE/bin/genreflex">
238 < </Tool>
266 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootrflx.xml
267 >  <tool name="rootrflx" version="%v">
268 >    <info url="http://root.cern.ch/root/"/>
269 >    <lib name="Reflex"/>
270 >    <client>
271 >      <environment name="ROOTRFLX_BASE" default="%i"/>
272 >      <environment name="LIBDIR" default="$ROOTRFLX_BASE/lib"/>
273 >      <environment name="INCLUDE" default="$ROOTRFLX_BASE/include"/>
274 >    </client>
275 >    <runtime name="PATH" value="$ROOTRFLX_BASE/bin" type="path"/>
276 >    <runtime name="ROOTSYS" value="$ROOTRFLX_BASE/"/>
277 >    <runtime name="GENREFLEX" value="$ROOTRFLX_BASE/bin/genreflex"/>
278 >    <use name="sockets"/>
279 >    <use name="gccxml"/>
280 >  </tool>
281   EOF_TOOLFILE
282  
283   # roothtml toolfile
284 < cat << \EOF_TOOLFILE >%i/etc/scram.d/roothtml
285 < <doc type=BuildSystem::ToolDoc version=1.0>
286 < <Tool name=roothtml version=%v>
287 < <info url="http://root.cern.ch/root/"></info>
288 < <lib name=Html>
289 < <use name=ROOT>
248 < </Tool>
249 < EOF_TOOLFILE
250 <
251 < # rootroofit toolfile
252 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootroofit
253 < <doc type=BuildSystem::ToolDoc version=1.0>
254 < <Tool name=rootroofit version=%v>
255 < <info url="http://root.cern.ch/root/"></info>
256 < <lib name=RooFitCore>
257 < <lib name=RooFit>
258 < <use name=ROOTMinuit>
259 < <use name=ROOTHtml>
260 < </Tool>
284 > cat << \EOF_TOOLFILE >%i/etc/scram.d/roothtml.xml
285 >  <tool name="roothtml" version="%v">
286 >    <info url="http://root.cern.ch/root/"/>
287 >    <lib name="Html"/>
288 >    <use name="rootgpad"/>
289 >  </tool>
290   EOF_TOOLFILE
291  
292   # rootmlp toolfile
293 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootmlp
294 < <doc type=BuildSystem::ToolDoc version=1.0>
295 < <Tool name=rootmlp version=%v>
296 < <info url="http://root.cern.ch/root/"></info>
297 < <lib name=MLP>
298 < <use name=ROOT>
270 < </Tool>
293 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootmlp.xml
294 >  <tool name="rootmlp" version="%v">
295 >    <info url="http://root.cern.ch/root/"/>
296 >    <lib name="MLP"/>
297 >    <use name="RootGraphics"/>
298 >  </tool>
299   EOF_TOOLFILE
300  
301   # roottmva toolfile
302 < cat << \EOF_TOOLFILE >%i/etc/scram.d/roottmva
303 < <doc type=BuildSystem::ToolDoc version=1.0>
304 < <Tool name=roottmva version=%v>
305 < <info url="http://root.cern.ch/root/"></info>
306 < <lib name=TMVA>
307 < <use name=ROOTMLP>
308 < </Tool>
302 > cat << \EOF_TOOLFILE >%i/etc/scram.d/roottmva.xml
303 >  <tool name="roottmva" version="%v">
304 >    <info url="http://root.cern.ch/root/"/>
305 >    <lib name="TMVA"/>
306 >    <use name="ROOTMLP"/>
307 >    <use name="rootminuit"/>
308 >  </tool>
309   EOF_TOOLFILE
310  
311   # rootthread toolfile
312 < cat << \EOF_TOOLFILE >%i/etc/scram.d/rootthread
313 < <doc type=BuildSystem::ToolDoc version=1.0>
314 < <Tool name=rootthread version=%v>
315 < <info url="http://root.cern.ch/root/"></info>
316 < <lib name=Thread>
289 < <use name=ROOTCore>
290 < </Tool>
312 > cat << \EOF_TOOLFILE >%i/etc/scram.d/rootthread.xml
313 >  <tool name="rootthread" version="%v">
314 >    <info url="http://root.cern.ch/root/"/>
315 >    <use name="ROOTCore"/>
316 >  </tool>
317   EOF_TOOLFILE
318  
319   %post
320 < %{relocateConfig}etc/scram.d/root
295 < %{relocateConfig}etc/scram.d/rootcore
296 < %{relocateConfig}etc/scram.d/rootcintex
297 < %{relocateConfig}etc/scram.d/rootinteractive
298 < %{relocateConfig}etc/scram.d/rootmath
299 < %{relocateConfig}etc/scram.d/rootminuit
300 < %{relocateConfig}etc/scram.d/rootminuit2
301 < %{relocateConfig}etc/scram.d/rootrflx
302 < %{relocateConfig}etc/scram.d/roothtml
303 < %{relocateConfig}etc/scram.d/rootroofit
304 < %{relocateConfig}etc/scram.d/rootmlp
305 < %{relocateConfig}etc/scram.d/roottmva
306 < %{relocateConfig}etc/scram.d/rootthread
320 > perl -p -i -e "s|%{instroot}|$RPM_INSTALL_PREFIX|g" $(find $RPM_INSTALL_PREFIX/%pkgrel/etc/scram.d -type f)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines