rrdtool/rrdtool.spec

Tue, 29 Mar 2011 20:04:34 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 29 Mar 2011 20:04:34 +0200
changeset 334
4a34d7a82eab
parent 169
00f30de09998
child 368
603801a09393
permissions
-rw-r--r--

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

mercurial