Tue, 29 Mar 2011 20:04:34 +0200
Rework package yet again, correcting and introducing new buildconf logic:
Conditionally disable bootstrap stage comparison correctly, correct
english grammar, better find system as(1) and ld(1), indotruce detailed
optimization option messages, more completely guess cpu types, allow
profiled bootstrapping without a preinstalled GCC because many other
compilers have long since implemented 64-bit arithmetic, instruct make
to build sequentially (not in sparallel) when building a profiled
bootstrap as GCC online documents recommend, and generally improve
comment blocks.
The single most important correction in this changeset relates to the
GCC changed optimization policy since at least GCC 4.5, in which -march
is always passed and not always correctly guessed. In the case of this
package, allowing GCC to guess the architecture leads to wild build
errors at various subcomponents (zlib, libgcc, libiberty...) and
bootstrap stages. It seems quite platform specific, and the safest
approach to correcting this seems to be explicitly always specifying the
-march argument when bootstrapping GCC. Because the best choice 'native'
is not available when bootstrapping using a foreign (non GCC) compiler,
a guess is made according to rpmmacros l_platform in that case.
It is questionable as to whether these recent optimization changes
on the part of GCC or this package are compatible with each other,
or if either are complete or correct at all. At least applying these
corrections allows this package to build again in most cases test.
1 ##
2 ## rrdtool.spec -- OpenPKG RPM Package Specification
3 ## Copyright (c) 2000-2009 OpenPKG Foundation e.V. <http://openpkg.net/>
4 ##
5 ## Permission to use, copy, modify, and distribute this software for
6 ## any purpose with or without fee is hereby granted, provided that
7 ## the above copyright notice and this permission notice appear in all
8 ## copies.
9 ##
10 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
21 ## SUCH DAMAGE.
22 ##
24 # package version
25 %define V_rrdtool 1.3.7
26 %define V_rrdtool_oo 0.24
27 %define V_rrdtool_creator 0.9
28 %define V_rrd_simple 1.44
30 # package information
31 Name: rrdtool
32 Summary: Round Robin Database
33 URL: http://www.rrdtool.org/
34 Vendor: Tobias Oetiker
35 Packager: OpenPKG Foundation e.V.
36 Distribution: OpenPKG Community
37 Class: BASE
38 Group: Database
39 License: LGPL
40 Version: %{V_rrdtool}
41 Release: 20090418
43 # package options
44 %option with_perl no
45 %option with_python no
47 # list of sources
48 Source0: http://oss.oetiker.ch/rrdtool/pub/rrdtool-%{V_rrdtool}.tar.gz
49 Source1: http://www.cpan.org/authors/id/M/MS/MSCHILLI/RRDTool-OO-%{V_rrdtool_oo}.tar.gz
50 Source2: http://www.cpan.org/authors/id/J/JA/JACQUELIN/RRDTool-Creator-%{V_rrdtool_creator}.tar.gz
51 Source3: http://www.cpan.org/authors/id/N/NI/NICOLAW/RRD-Simple-%{V_rrd_simple}.tar.gz
52 Patch0: rrdtool.patch
54 # build information
55 Prefix: %{l_prefix}
56 BuildRoot: %{l_buildroot}
57 BuildPreReq: OpenPKG, openpkg >= 20040130, gcc, make, pkgconfig, perl-openpkg >= 5.8.3-20040126, perl-module
58 PreReq: OpenPKG, openpkg >= 20040130
59 BuildPreReq: png, zlib, freetype, pango, cairo, libxml
60 PreReq: png, zlib, freetype, pango, cairo, libxml
61 %if "%{with_perl}" == "yes"
62 BuildPreReq: perl, perl-xml::with_libxml = yes, libart
63 PreReq: perl, perl-xml::with_libxml = yes, libart
64 %endif
65 %if "%{with_python}" == "yes"
66 BuildPreReq: python
67 PreReq: python
68 %endif
69 AutoReq: no
70 AutoReqProv: no
72 %description
73 RRD is the Acronym for Round Robin Database. RRD is a system
74 to store and display time-series data (i.e. network bandwidth,
75 machine-room temperature, server load average). It stores the
76 data in a very compact way that will not expand over time, and it
77 presents useful graphs by processing the data to enforce a certain
78 data density. It can be used either via simple wrapper scripts (from
79 shell or Perl) or via frontends that poll network devices and put a
80 friendly user interface on it.
82 %track
83 prog rrdtool = {
84 version = %{V_rrdtool}
85 url = http://oss.oetiker.ch/rrdtool/pub/
86 regex = rrdtool-(__VER__)\.tar\.gz
87 }
88 prog rrdtool:RRDTool-OO = {
89 version = %{V_rrdtool_oo}
90 url = http://www.cpan.org/authors/id/M/MS/MSCHILLI/
91 regex = RRDTool-OO-(__VER__)\.tar\.gz
92 }
93 prog rrdtool:RRDTool-Creator = {
94 version = %{V_rrdtool_creator}
95 url = http://www.cpan.org/authors/id/J/JA/JACQUELIN/
96 regex = RRDTool-Creator-(__VER__)\.tar\.gz
97 }
98 prog rrdtool:RRD-Simple = {
99 version = %{V_rrd_simple}
100 url = http://www.cpan.org/authors/id/N/NI/NICOLAW/
101 regex = RRD-Simple-(__VER__)\.tar\.gz
102 }
104 %prep
105 %setup -q
106 %setup -q -D -T -a 1
107 %setup -q -D -T -a 2
108 %setup -q -D -T -a 3
109 %patch -p0
110 %{l_shtool} subst \
111 -e 's;\-std=c99 *;;g' \
112 configure
113 rm -f bindings/perl-shared/ntmake.pl
114 rm -rf RRDTool-Creator-*/_build
116 %build
117 # configure package
118 ( echo "ac_cv_path_PERL=no"
119 echo "ac_cv_have_broken_isfinite=yes"
120 ) >config.cache
121 CC="%{l_cc}" \
122 CPPFLAGS="%{l_cppflags}" \
123 CFLAGS="%{l_cflags -O}" \
124 LDLAGS="%{l_ldflags}" \
125 LIBS="`pkg-config pangocairo --libs`" \
126 ./configure \
127 --cache-file=./config.cache \
128 --prefix=%{l_prefix} \
129 --mandir=%{l_prefix}/man \
130 %if "%{with_python}" == "yes"
131 --enable-python \
132 %else
133 --disable-python \
134 %endif
135 --disable-tcl \
136 --disable-ruby \
137 --disable-shared \
138 --enable-local-libpng \
139 --enable-local-zlib \
140 --enable-rrdcgi
142 # build package
143 %{l_make} %{l_mflags}
145 # build Perl part
146 %if "%{with_perl}" == "yes"
147 %{l_prefix}/bin/perl-openpkg prepare
148 %{l_prefix}/bin/perl-openpkg -d bindings/perl-piped configure build
149 %{l_prefix}/bin/perl-openpkg -d bindings/perl-shared configure build
150 %{l_prefix}/bin/perl-openpkg -d RRDTool-OO-%{V_rrdtool_oo} configure build
151 %{l_prefix}/bin/perl-openpkg -d RRDTool-Creator-%{V_rrdtool_creator} configure build
152 %{l_prefix}/bin/perl-openpkg -d RRD-Simple-%{V_rrd_simple} configure build
153 %endif
155 %install
156 rm -rf $RPM_BUILD_ROOT
158 # install package
159 %{l_shtool} subst \
160 -e 's/^\(install-data-am:\).*/\1/' \
161 Makefile
162 %{l_make} %{l_mflags} install \
163 DESTDIR=$RPM_BUILD_ROOT AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
165 # install Perl part
166 %if "%{with_perl}" == "yes"
167 %{l_prefix}/bin/perl-openpkg -d bindings/perl-piped install
168 %{l_prefix}/bin/perl-openpkg -d bindings/perl-shared install
169 %{l_prefix}/bin/perl-openpkg -d RRDTool-OO-%{V_rrdtool_oo} install
170 %{l_prefix}/bin/perl-openpkg -d RRDTool-Creator-%{V_rrdtool_creator} install
171 %{l_prefix}/bin/perl-openpkg -d RRD-Simple-%{V_rrd_simple} install
172 %endif
174 # strip down installation hierarchy
175 rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/doc
176 %if "%{with_python}" == "no"
177 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/python
178 %endif
179 rm -rf $RPM_BUILD_ROOT%{l_prefix}/rrdtool-*
180 rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/rrdtutorial.es.1
181 rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/locale
182 strip $RPM_BUILD_ROOT%{l_prefix}/bin/* 2>/dev/null || true
184 # post-process Perl part
185 %if "%{with_perl}" == "yes"
186 %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup
187 %else
188 >perl-openpkg-files
189 %endif
191 # determine installation files
192 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
193 %{l_files_std} `cat perl-openpkg-files`
195 %files -f files
197 %clean
198 rm -rf $RPM_BUILD_ROOT