mico/mico.spec

Wed, 14 Jan 2009 15:59:12 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 14 Jan 2009 15:59:12 +0100
changeset 86
78e7deb1d6ab
parent 6
eab6243607cb
child 628
10fbfbc9b548
permissions
-rw-r--r--

Correct and improve many buildconf and code logic blocks. In particular:
1. Document potential problems building with current binutils releases.
2. Document the flawed webkit and explain its temporary exclusion.
3. Document the edition of Qt which is built and installed.
4. Remove the Solaris x11_supdir logic as it is no longer found.
5. Correct several .pr[io] files including QMAKE_CXXFLAGS and INCPATH,
which previously caused preexisting Qt installations to deliver
erroneous old include and library logic instead of relying on
that of the currently building package. -I/opkg/include is now
placed at the end of the compile statements.
6. Don't trust the QMAKE_[INC|LIB]DIR_X11 identifiers in qmake.conf.
7. Allow more 64-bit builds and more properly identify the platform.
8. Place plugins (which are shared objects) in lib instead of share.
9. Build components as plugins when possible if with_shared is enabled.
10. Translate German text to English to be more consistent.
11. Instead of removing the pkgconfig directory of with_shared builds,
place it in a child directory useful for shared building.
12. Document the nonstandard shared build directory structure,
including using the hidden pkgconfig directory (PKG_CONFIG_PATH.)
13. Change %doc to specify files rather than directories in the RPM DB.

     1 ##
     2 ##  mico.spec -- OpenPKG RPM Package Specification
     3 ##  Copyright (c) 2000-2008 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 information
    25 Name:         mico
    26 Summary:      CORBA Toolkit
    27 URL:          http://www.mico.org/
    28 Vendor:       The MICO Project
    29 Packager:     OpenPKG Foundation e.V.
    30 Distribution: OpenPKG Community
    31 Class:        PLUS
    32 Group:        RPC
    33 License:      LGPL/GPL
    34 Version:      2.3.13
    35 Release:      20081215
    37 #   package options
    38 %option       with_ssl      no
    39 %option       with_x11      no
    40 %option       with_qt       no
    41 %option       with_gtk      no
    42 %option       with_tcl      no
    44 #   list of sources
    45 Source0:      http://www.mico.org/mico-%{version}.tar.gz
    46 Source2:      rc.mico
    48 #   build information
    49 Prefix:       %{l_prefix}
    50 BuildRoot:    %{l_buildroot}
    51 BuildPreReq:  OpenPKG, openpkg >= 20060823, make, gcc, gcc::with_cxx = yes
    52 PreReq:       OpenPKG, openpkg >= 20060823
    53 %if "%{with_ssl}" == "yes"
    54 BuildPreReq:  openssl
    55 PreReq:       openssl
    56 %endif
    57 %if "%{with_x11}" == "yes"
    58 BuildPreReq:  X11
    59 PreReq:       X11
    60 %endif
    61 %if "%{with_qt}" == "yes"
    62 BuildPreReq:  qt < 4, pkgconfig
    63 PreReq:       qt < 4
    64 %endif
    65 %if "%{with_gtk}" == "yes"
    66 BuildPreReq:  gtk
    67 PreReq:       gtk
    68 %endif
    69 %if "%{with_tcl}" == "yes"
    70 BuildPreReq:  tcl
    71 PreReq:       tcl
    72 %endif
    73 AutoReq:      no
    74 AutoReqProv:  no
    76 %description
    77     The acronym MICO expands to MICO Is CORBA. The intention of this
    78     project is to provide a freely available and fully compliant
    79     implementation of the CORBA standard. The following design
    80     principles guided the implementation of MICO:
    81     - Start from scratch, and only use standard APIs (Posix/Win32)
    82     - Don't rely on propietary or specialized libraries
    83     - Use standard C++ for the implementation
    84     - Only make use of widely available, free, non-proprietary tools
    85     - Only implement what is required for a CORBA compliant implementation
    86     - Provide a clear design even for implementation internals
    88 %track
    89     prog mico = {
    90         version   = %{version}
    91         url       = http://www.mico.org/down.html
    92         regex     = mico-(__VER__)\.tar\.gz
    93     }
    95 %prep
    96     %setup -q -n mico
    98 %build
    99     CC="%{l_cc}"
   100     CXX="%{l_cxx}"
   101     CFLAGS="%{l_cflags -O}"
   102     CXXFLAGS="%{l_cxxflags -O} -Wno-deprecated"
   103     CPPFLAGS="%{l_cppflags}"
   104     includedir=""
   105 %if "%{with_qt}" == "yes"
   106     CFLAGS="$CFLAGS `%{l_prefix}/bin/pkg-config --cflags-only-other qt`"
   107     CXXFLAGS="$CXXFLAGS `%{l_prefix}/bin/pkg-config --cflags-only-other qt`"
   108     CPPFLAGS="$CPPFLAGS `%{l_prefix}/bin/pkg-config --cflags-only-I qt`"
   109     includedir="$includedir %{l_prefix}/include/qt"
   110     LDFLAGS="$LDFLAGS `%{l_prefix}/bin/pkg-config --libs-only-L qt`"
   111 %endif
   112 %if "%{with_ssl}" == "yes"
   113     includedir="$includedir %{l_prefix}/include/openssl"
   114 %endif
   115 %if "%{with_gtk}" == "yes"
   116     includedir="$includedir %{l_prefix}/include/gtk"
   117 %endif
   118 %if "%{with_tcl}" == "yes"
   119     includedir="$includedir %{l_prefix}/include/tcl"
   120 %endif
   121     for dir in $includedir; do
   122         CPPFLAGS="$CPPFLAGS -I$dir"
   123     done
   124     LDFLAGS="%{l_ldflags}"
   125     JAVAC=no
   126     export CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS JAVAC
   127     ./configure \
   128         --prefix=%{l_prefix} \
   129 %if "%{with_ssl}" == "yes"
   130         --with-ssl=%{l_prefix} \
   131 %endif
   132 %if "%{with_x11}" == "yes"
   133         --with-x \
   134         --x-includes=`%{l_rc} --query x11_incdir` \
   135         --x-libraries=`%{l_rc} --query x11_libdir` \
   136 %else
   137         --without-x \
   138 %endif
   139 %if "%{with_qt}" == "yes"
   140         --with-qt=%{l_prefix} \
   141 %endif
   142 %if "%{with_gtk}" == "yes"
   143         --with-gtk=%{l_prefix} \
   144 %endif
   145 %if "%{with_tcl}" == "yes"
   146         --with-tcl=%{l_prefix} \
   147 %endif
   148         --disable-mini-stl \
   149         --disable-shared
   150     touch cpp/.depend
   151     %{l_make} %{l_mflags -O}
   153 %install
   154     rm -rf $RPM_BUILD_ROOT
   156     #   make directory structure
   157     %{l_shtool} mkdir -f -p -m 755 \
   158         $RPM_BUILD_ROOT%{l_prefix}/bin \
   159         $RPM_BUILD_ROOT%{l_prefix}/lib \
   160         $RPM_BUILD_ROOT%{l_prefix}/include/mico \
   161         $RPM_BUILD_ROOT%{l_prefix}/include/coss \
   162         $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
   163         $RPM_BUILD_ROOT%{l_prefix}/var/mico \
   164         $RPM_BUILD_ROOT%{l_prefix}/man/man1 \
   165         $RPM_BUILD_ROOT%{l_prefix}/man/man5 \
   166         $RPM_BUILD_ROOT%{l_prefix}/man/man8
   168     #   install binaries, libraries, headers
   169     %{l_make} %{l_mflags} install \
   170         LDCONFIG=true \
   171         INSTDIR=$RPM_BUILD_ROOT%{l_prefix} \
   172         SHARED_INSTDIR=$RPM_BUILD_ROOT%{l_prefix}
   174     #   install our own things
   175     %{l_shtool} install -c -m 755 %{l_value -s -a} \
   176         %{SOURCE rc.mico} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
   178     #   cleanup installation files
   179     rm -rf $RPM_BUILD_ROOT%{l_prefix}/doc
   180     rm -rf $RPM_BUILD_ROOT%{l_prefix}/include/ministl
   181     rm -f  $RPM_BUILD_ROOT%{l_prefix}/lib/mico-setup.*
   182     strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
   183     ( cd $RPM_BUILD_ROOT%{l_prefix}/lib
   184       for name in mico micoaux micocoss micoir; do
   185           mv lib${name}%{version}.a lib${name}.a
   186       done
   187 %if "%{with_x11}" == "yes"
   188       mv libmicox%{version}.a libmicox.a
   189 %endif
   190 %if "%{with_qt}" == "yes"
   191       mv libmicoqt%{version}.a libmicoqt.a
   192 %endif
   193 %if "%{with_gtk}" == "yes"
   194       mv libmicogtk%{version}.a libmicogtk.a
   195 %endif
   196 %if "%{with_tcl}" == "yes"
   197       mv libmicotcl%{version}.a libmicotcl.a
   198 %endif
   199     ) || exit $?
   201     #   generate files listing
   202     %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} \
   203         '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/mico'
   205 %files -f files
   207 %clean
   208     rm -rf $RPM_BUILD_ROOT
   210 %pre
   211     #   before upgrade, save status and stop service
   212     [ $1 -eq 2 ] || exit 0
   213     eval `%{l_rc} mico status 2>/dev/null | tee %{l_tmpfile}`
   214     %{l_rc} mico stop 2>/dev/null
   215     exit 0
   217 %post
   218     if [ $1 -eq 2 ]; then
   219         #   after upgrade, restore status
   220         eval `cat %{l_tmpfile}`; rm -f %{l_tmpfile}
   221         [ ".$mico_active" = .yes ] && %{l_rc} mico start
   222     fi
   223     exit 0
   225 %preun
   226     #   before erase, stop service
   227     [ $1 -eq 0 ] || exit 0
   228     %{l_rc} mico stop 2>/dev/null
   229     exit 0

mercurial