confuse/confuse.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 118
1661222b021d
child 387
33ae2d61c751
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.

michael@116 1 ##
michael@116 2 ## confuse.spec -- OpenPKG RPM Specification
michael@116 3 ## Copyright (c) 2009 Michael Schloh von Bennewitz <michael@schloh.com>
michael@116 4 ##
michael@116 5 ## Permission to use, copy, modify, and distribute this software for
michael@116 6 ## any purpose with or without fee is hereby granted, provided that
michael@116 7 ## the above copyright notice and this permission notice appear in all
michael@116 8 ## copies.
michael@116 9 ##
michael@116 10 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
michael@116 11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@116 12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@116 13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@116 14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@116 15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@116 16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@116 17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@116 18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@116 19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@116 20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@116 21 ## SUCH DAMAGE.
michael@116 22 ##
michael@116 23
michael@116 24
michael@116 25 # package information
michael@116 26 Name: confuse
michael@118 27 Summary: Configuration Parsing Library
michael@116 28 URL: http://www.nongnu.org/confuse/
michael@116 29 Vendor: Martin Hedenfalk
michael@116 30 Packager: Michael Schloh von Bennewitz
michael@116 31 Distribution: Michael Schloh von Bennewitz
michael@116 32 Class: EVAL
michael@116 33 Group: Libraries
michael@116 34 License: ISC
michael@116 35 Version: 2.6
michael@116 36 Release: 20090320
michael@116 37
michael@116 38 # list of sources
michael@117 39 Source0: http://bzero.se/confuse/confuse-%{version}.tar.gz
michael@116 40
michael@116 41 # build information
michael@116 42 Prefix: %{l_prefix}
michael@116 43 BuildRoot: %{l_buildroot}
michael@116 44 BuildPreReq: OpenPKG, openpkg >= 20040130, make
michael@116 45 PreReq: OpenPKG, openpkg >= 20040130
michael@116 46 AutoReq: no
michael@116 47 AutoReqProv: no
michael@116 48
michael@116 49 %description
michael@116 50 Previously known as libcfg, confuse is a configuration file
michael@116 51 parser library which supports sections and (lists of) values
michael@116 52 (strings, integers, floats, booleans or other sections). Other
michael@116 53 features include parsing of single and double quoted strings,
michael@116 54 environment variable expansion, functions and nested include
michael@116 55 statements. It makes it very easy to add configuration file
michael@116 56 capability to a program using a simple API.
michael@116 57
michael@116 58 %track
michael@116 59 prog confuse = {
michael@116 60 version = %{version}
michael@116 61 url = http://bzero.se/confuse/
michael@117 62 regex = confuse-(__VER__)\.tar\.gz
michael@116 63 }
michael@116 64
michael@116 65 %prep
michael@116 66 # unpack sources
michael@116 67 %setup -q
michael@116 68
michael@116 69 %build
michael@116 70 # run the autoconf(1) generated configuration logic
michael@116 71 CC="%{l_cc}" \
michael@116 72 CFLAGS="%{l_cflags -O}" \
michael@116 73 CPPFLAGS="%{l_cppflags}" \
michael@116 74 LDFLAGS="%{l_ldflags}" \
michael@127 75 GREP="grep" \
michael@116 76 ./configure \
michael@116 77 --prefix=%{l_prefix} \
michael@116 78 --disable-nls
michael@116 79
michael@116 80 # run the native build logic using parallel make
michael@116 81 %{l_make} %{l_mflags -O}
michael@116 82
michael@116 83 %install
michael@116 84 # remove previously existing installations
michael@116 85 rm -rf $RPM_BUILD_ROOT
michael@116 86
michael@116 87 # install files
michael@116 88 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
michael@116 89
michael@116 90 # determine installation files
michael@116 91 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
michael@116 92
michael@116 93 %files -f files
michael@116 94
michael@116 95 %clean
michael@116 96 rm -rf $RPM_BUILD_ROOT
michael@116 97

mercurial