openpkg/rpmmacros

Fri, 16 Jan 2009 10:58:21 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2009 10:58:21 +0100
changeset 92
645923d1e875
child 303
2bd9bf3f6f03
permissions
-rw-r--r--

Correct and improve code logic, buildconf, and packaging. In particular:
1. Use descriptive variable names <var>libs instead of just <var>.
2. Although Nokia states in all Qt builds that 'NOTE: When linking
against OpenSSL, you can override the default library names
through OPENSSL_LIBS.' and even gives an example, their own
configuration logic rejects such an attempt. Correct this by
hard coding the OpenSSL library string in the configure script.
3. Consistently use the whitespace substitution [\t ] throughout.
4. Patch the buggy INCPATH of SQL plugin Qmake project files.
5. Add the 'x11' configuration variable to the qtconfig Qmake
project using the src/gui/gui.pro file as a model. This is
needed for qtconfig although not in other tools, because
the qtconfig buildconf indirectly includes qt_x11_p.h which
is dependent on X11 headers.
6. Avoid 'ld.so: fatal: hardware capability unsupported: SSE2 AMD_3DNow'
on platforms for which the config.tests/unix/[3dnow|sse2] succeed
although unsopported at run time by testing for the x86-64
instruction set at build time and regulating hardware capabilities.
7. Correctly install the desinger plugin by explicitly building it.
8. Remove custom plugin installation logic which is unnecessary.
9. Correct removal of temporary paths from shared object files.

     1 ##
     2 ##  rpmmacros -- OpenPKG RPM Macros
     3 ##  Copyright (c) 2000-2007 OpenPKG Foundation e.V. <http://openpkg.net/>
     4 ##  Copyright (c) 2000-2007 Ralf S. Engelschall <http://engelschall.com/>
     5 ##
     6 ##  Permission to use, copy, modify, and distribute this software for
     7 ##  any purpose with or without fee is hereby granted, provided that
     8 ##  the above copyright notice and this permission notice appear in all
     9 ##  copies.
    10 ##
    11 ##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    12 ##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    13 ##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    14 ##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
    15 ##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    16 ##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    17 ##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    18 ##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    19 ##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    20 ##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    21 ##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    22 ##  SUCH DAMAGE.
    23 ##
    24 ##  The purpose of this macro set is to override the default
    25 ##  macros in the OpenPKG RPM installation for the @l_prefix@ hierarchy.
    26 ##
    28 #   the OpenPKG release identification (for the current package or as a fallback for the bootstrap package)
    29 %l_openpkg_release(F:)   %(%{l_prefix}/libexec/openpkg/release --release="%{?release}%{!?release:%(%{l_rpm} -q --qf '%{release}' openpkg)}" %{?-F:-F "%{-F*}"}%{!?-F:-F "OpenPKG-%%t"})
    31 #   the OpenPKG OIDs (root is officially registered at IANA)
    32 %l_openpkg_oid           1.3.6.1.4.1.18749
    33 %l_openpkg_oid_bootstrap %{l_openpkg_oid}.4.1
    34 %l_openpkg_oid_instance  %{l_openpkg_oid_bootstrap}.1
    35 %l_openpkg_oid_platform  %{l_openpkg_oid_bootstrap}.2
    36 %l_openpkg_oid_tagfmtopt %{l_openpkg_oid_bootstrap}.3
    38 #   the OpenPKG package tagging
    39 %l_tag_fmt               @TAG@
    40 %l_tag_fmt_compat        %(prefix="%{l_prefix_static}"; if [ ".`expr $prefix : '/[^/][^/]*$'`" != .0 ]; then loc=`echo $prefix | cut -c2-4`; else loc=`echo $prefix | sed -e 's;/\\(.\\)[^/]*;\\1;g' | cut -c1-3`; fi; echo $loc)
    41 %l_tag_fmt_loc           %(echo "%{l_prefix_static}" | sed -e 's;^/\\([^/]\\)[^/]*/\\([^/]\\)[^/]*/\\([^/]\\).*;\\1\\2\\3;' -e 's;^/\\([^/]\\)[^/]*/\\([^/][^/]\\).*;\\1\\2;' -e 's;^/\\([^/][^/]\\)[^/]*/\\([^/]\\).*;\\1\\2;' -e 's;^/\\([^/]\\)[^/]*/\\([^/]\\).*;\\1\\2;' -e 's;^/\\([^/][^/][^/]\\).*;\\1;' -e 's;^/\\([^/][^/]\\).*;\\1;' -e 's;^/\\([^/]\\).*;\\1;')
    42 %l_tag_fmt_opt           %(uuid_ns="`%{l_uuid} -v3 ns:OID %{l_openpkg_oid_tagfmtopt}`"; %{l_uuid} -v3 $uuid_ns '%{?_options}')
    43 %l_tag_fmt_uuid          %(%{l_uuid} -v1)
    44 %l_tag_fmt_time          %(date '+%%Y%%m%%d%%H%%M%%S')
    45 %l_tag_fmt_user          %(%{l_shtool} echo -e '%%u')
    46 %l_tag_fmt_host          %(%{l_shtool} echo -e '%%h%%d')
    47 %l_tag_gen               %{expand:%(echo '%{l_tag_fmt}' | sed -e 's/<\\([a-zA-Z][_a-zA-Z0-9]*\\)>/%%{l_tag_fmt_\\1}/g')}
    48 %l_tag                   %(echo "%{l_tag_gen}" | sed -e 's;-;;g')
    50 #   the OpenPKG instance location (backward compatibility only)
    51 %l_location              %{l_tag}
    53 #   standard RPM host platform identification
    54 #   (defaults via "shtool platform" and uname(3); used internally)
    55 #%_host_cpu              ...USE INTERNAL DEFAULT...
    56 #%_host_vendor           ...USE INTERNAL DEFAULT...
    57 #%_host_os               ...USE INTERNAL DEFAULT...
    58 %_host_alias             %{nil}
    59 %_host                   %{_host_cpu}-%{_host_os}
    61 #   standard RPM build platform identification
    62 #   (defaults via %{_host*} macros; not used internally AFAIK)
    63 %_build_cpu              %{_host_cpu}
    64 %_build_vendor           %{_host_vendor}
    65 %_build_os               %{_host_os}
    66 %_build_alias            %{_host_alias}
    67 %_build                  %{_host}
    69 #   standard RPM target platform identification
    70 #   (defaults via %{_host*} macros; used internally for %ifarch/%ifnarch)
    71 %_target_cpu             %{_host_cpu}
    72 %_target_vendor          %{_host_vendor}
    73 %_target_os              %{_host_os}
    74 %_target_alias           %{_host_alias}
    75 %_target                 %{_host}
    77 #   legacy RPM platform macros
    78 #   (defaults via config.guess/config.sub under RPM build-time)
    79 %_arch                   %{_host_cpu}
    80 %_vendor                 %{_host_vendor}
    81 %_os                     %{_host_os}
    83 #   legacy RPM platform macros
    84 #   (defaults via various other macros; partly used internally)
    85 %_build_arch             %{_arch}
    86 %_target_platform        %{_target_cpu}-%{_target_vendor}-%{_target_os}
    87 %_gnu                    %{nil}
    89 #   official OpenPKG host platform identification
    90 %l_host_arch             %{_host_cpu}
    91 %l_host_vendor           %{_host_vendor}
    92 %l_host_os               %{_host_os}
    93 %l_host                  %{_host_cpu}-%{_host_os}
    95 #   new OpenPKG platform identification
    96 %l_platform(cptF:)       %(if [ ".%{?-F}" != . ]; then fmt="%{-F*}"; else T="%{?-c:c}%{?-p:p}%{?-t:t}"; [ ".$T" = . ] && T="p"; fmt="%%<a$T>-%%<s$T>"; fi; %{l_shtool} platform -n -L -S "" -C "+" -F "$fmt")
    98 #   old OpenPKG platform identification
    99 %l_target                %{l_platform -t}
   101 #   the *S*uper-user user/group name/id pair
   102 %l_susr                  @SUSR@
   103 %l_sgrp                  @SGRP@
   104 %l_suid                  %((getent passwd "%{l_susr}"; grep "^%{l_susr}:" /etc/passwd; ypmatch "%{l_susr}" passwd; nismatch "%{l_susr}" passwd; nidump passwd . | grep "^%{l_susr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   105 %l_sgid                  %((getent group  "%{l_sgrp}"; grep "^%{l_sgrp}:" /etc/group;  ypmatch "%{l_sgrp}" group;  nismatch "%{l_sgrp}" group;  nidump group  . | grep "^%{l_susr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   107 #   the *M*anagement user/group name/id pair
   108 %l_musr                  @MUSR@
   109 %l_mgrp                  @MGRP@
   110 %l_muid                  %((getent passwd "%{l_musr}"; grep "^%{l_musr}:" /etc/passwd; ypmatch "%{l_musr}" passwd; nismatch "%{l_musr}" passwd; nidump passwd . | grep "^%{l_musr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   111 %l_mgid                  %((getent group  "%{l_mgrp}"; grep "^%{l_mgrp}:" /etc/group;  ypmatch "%{l_mgrp}" group;  nismatch "%{l_mgrp}" group;  nidump group  . | grep "^%{l_musr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   113 #   the *R*restricted user/group name/id pair
   114 %l_rusr                  @RUSR@
   115 %l_rgrp                  @RGRP@
   116 %l_ruid                  %((getent passwd "%{l_rusr}"; grep "^%{l_rusr}:" /etc/passwd; ypmatch "%{l_rusr}" passwd; nismatch "%{l_rusr}" passwd; nidump passwd . | grep "^%{l_rusr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   117 %l_rgid                  %((getent group  "%{l_rgrp}"; grep "^%{l_rgrp}:" /etc/group;  ypmatch "%{l_rgrp}" group;  nismatch "%{l_rgrp}" group;  nidump group  . | grep "^%{l_rusr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   119 #   the *N*on-privileged user/group name/id pair
   120 %l_nusr                  @NUSR@
   121 %l_ngrp                  @NGRP@
   122 %l_nuid                  %((getent passwd "%{l_nusr}"; grep "^%{l_nusr}:" /etc/passwd; ypmatch "%{l_nusr}" passwd; nismatch "%{l_nusr}" passwd; nidump passwd . | grep "^%{l_nusr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   123 %l_ngid                  %((getent group  "%{l_ngrp}"; grep "^%{l_ngrp}:" /etc/group;  ypmatch "%{l_ngrp}" group;  nismatch "%{l_ngrp}" group;  nidump group  . | grep "^%{l_nusr}:") 2>/dev/null | sed -e 'q' | awk -F: '{ print $3; }')
   125 #   backward compatibility (openpkg < 20020204)
   126 %l_fsusr                 %{l_musr}
   127 %l_fsgrp                 %{l_mgrp}
   128 %l_npuid                 %{l_nuid}
   129 %l_npgid                 %{l_ngid}
   131 #   define the installation hierarchy (used parts)
   132 %l_prefix                @l_prefix@
   133 %l_prefix_static         @l_prefix_static@
   135 #   define the installation hierarchy (unused parts)
   136 %l_exec_prefix           %{l_prefix}
   137 %l_bindir                %{l_prefix}/bin
   138 %l_sbindir               %{l_prefix}/sbin
   139 %l_libexecdir            %{l_prefix}/libexec
   140 %l_datadir               %{l_prefix}/share
   141 %l_sysconfdir            %{l_prefix}/etc
   142 %l_sharedstatedir        %{l_prefix}/com
   143 %l_localstatedir         %{l_prefix}/var
   144 %l_libdir                %{l_prefix}/lib
   145 %l_includedir            %{l_prefix}/include
   146 %l_infodir               %{l_prefix}/info
   147 %l_mandir                %{l_prefix}/man
   148 %l_docdir                %{l_prefix}/doc
   150 #   provide killer macro "%{l_value -s|-b|-c (l_xxx ...|-a|-A)}" which
   151 #   expands to the values of previous l_xxx variables in this file. With
   152 #   option "-s" it expands into a chain of "-e 's;<name>;<value>;g'"
   153 #   constructs for used with Stream Editor sed(1), with option "-b" it
   154 #   expands into a chain of "<name>='<value>';" constructs for use with
   155 #   Bourne-Shell sh(1), with option "-c" it expands into a chain of "set
   156 #   <name> = '<value>';" constructs for use with C-Shell csh(1). But
   157 #   be careful, <value> currently (for expansion speed reasons) is not
   158 #   escaped, so make sure the values of the above macros do not contain
   159 #   ";" for "-s" and ";" for "-b" and "-c". You can either specify one
   160 #   or more names of variables to expand or use "-a" for mostly all
   161 #   variables and "-A" for really all variables.
   162 %l_value(sbcaA)          %{expand:%(l=""; for x in `if [ ".%*" != . ]; then echo "%* "; else p=""; if [ ".%{-a:yes}" = .yes ]; then p="^%%l_(prefix|[smrn](usr|grp|uid|gid))"; elif [ ".%{-A:yes}" = .yes ]; then p="^%%l_"; fi; if [ ".$p" != . ]; then egrep "$p" %{l_prefix}/etc/openpkg/rpmmacros | sed -e '/^%%l_value/,$d' -e 's;^%%\\(l_[a-z1-9_]*\\).*;\\1;'; fi; fi`; do e=""; if [ ".%{-s:yes}" = .yes ]; then e="-e 's;@$x@;%%{$x};g'"; elif [ ".%{-b:yes}" = .yes ]; then e="$x='%%{$x}';"; elif [ ".%{-c:yes}" = .yes ]; then e="set $x = '%%{$x}';"; else e="%%{$x}"; fi; if [ ".$l" = . ]; then l="$e"; else l="$l $e"; fi; done; echo "$l")}
   164 #   local version of the empty macro
   165 %l_nil                   %{nil}
   167 #   override the internal RPM hierarchy variables
   168 %_usr                    %{nil}
   169 %_var                    %{nil}
   170 %_usrsrc                 %{nil}
   171 %_topdir                 %{nil}
   172 %_dbpath                 %{l_prefix}/RPM/DB
   173 %_builddir               %{l_prefix}/RPM/TMP
   174 %_tmppath                %{l_prefix}/RPM/TMP
   175 %_sourcedir              %{l_prefix}/RPM/SRC/%{name}
   176 %_specdir                %{l_prefix}/RPM/SRC/%{name}
   177 %_rpmdir                 %{l_prefix}/RPM/PKG
   178 %_srcrpmdir              %{l_prefix}/RPM/PKG
   179 %_repackage_dir          %{l_prefix}/RPM/PKG
   180 %_cache_dbpath           %{l_prefix}/RPM/PKG
   181 %_solve_dbpath           %{l_prefix}/RPM/PKG
   182 %_solve_pkgsdir          %{l_prefix}/RPM/PKG
   183 %_defaultdocdir          %{l_docdir}
   185 #   complement the %{SOURCE<n>} and %{PATCH<n>} with %{SOURCE <file>} and %{PATCH <file>}
   186 %SOURCE()                %(f="%1"; if [ -f "%{_specdir}/$f" ]; then echo "%{_specdir}/$f"; else echo "%{_sourcedir}/$f"; fi)
   187 %PATCH()                 %(f="%1"; if [ -f "%{_specdir}/$f" ]; then echo "%{_specdir}/$f"; else echo "%{_sourcedir}/$f"; fi)
   189 #   override RPM's absolute tool paths with relative ones
   190 #   (because if you upgrade RPM it would hard-code tools in own hierarchy, too)
   191 %__awk                   awk
   192 %__bzip2                 %{_bzip2bin}
   193 %__cat                   cat
   194 %__chgrp                 chgrp
   195 %__chmod                 chmod
   196 %__chown                 chown
   197 %__cp                    cp
   198 %__cpio                  cpio
   199 %__grep                  grep
   200 %__gzip                  %{_gzipbin}
   201 %__id                    id
   202 %__install               install
   203 %__ln_s                  ln -s
   204 %__make                  make
   205 %__mkdir                 mkdir
   206 %__mkdir_p               %{l_shtool} mkdir -p
   207 %__mv                    mv
   208 %__patch                 %{_patchbin}
   209 %__perl                  perl
   210 %__pgp                   %{_pgpbin}
   211 %__rm                    rm
   212 %__rsh                   rsh
   213 %__sed                   sed
   214 %__ssh                   ssh
   215 %__tar                   %{_tarbin}
   216 %__unzip                 %{_unzipbin}
   218 #   override some more RPM macros where the default value is not acceptable
   219 %_dependency_whiteout    %{nil}
   220 %__debug_install_post    %{nil}
   221 %_unpackaged_files_terminate_build 0
   223 #   provide fixed paths to tools (standard)
   224 %_gzipbin                %{l_prefix}/lib/openpkg/gzip
   225 %_bzip2bin               %{l_prefix}/lib/openpkg/bzip2
   226 %_patchbin               %{l_prefix}/lib/openpkg/patch
   227 %_tarbin                 %{l_prefix}/lib/openpkg/tar
   228 %_unzipbin               %{l_prefix}/lib/openpkg/unzip
   230 #   provide path to platform identification file
   231 %__platform              %{l_prefix}/etc/openpkg/platform
   233 #   provide fixed paths to tools (additional)
   234 %l_rc                    %{l_prefix}/etc/rc
   235 %l_rpm                   %{l_prefix}/libexec/openpkg/rpm
   236 %l_rpm2cpio              %{l_prefix}/libexec/openpkg/rpm2cpio
   237 %l_rpm_config            %{l_prefix}/libexec/openpkg/rpm-config
   238 %l_lsync                 %{l_prefix}/libexec/openpkg/lsync
   239 %l_rpmtool               %{l_prefix}/lib/openpkg/rpmtool
   240 %l_shtool                %{l_prefix}/lib/openpkg/shtool
   241 %l_curl                  %{l_prefix}/lib/openpkg/curl
   242 %l_bash                  %{l_prefix}/lib/openpkg/bash
   243 %l_uuid                  %{l_prefix}/lib/openpkg/uuid
   245 #   provide smart paths to tools
   246 %l_tool_locate()         %(if [ ".%{expand:%%{?use_%1}}" != . ]; then tool="%{expand:%%{use_%1}}"; elif [ -f "%{l_prefix}/bin/%2" ]; then tool="%{l_prefix}/bin/%2"; elif [ -f "%{l_prefix}/lib/openpkg/%2" ]; then tool="%{l_prefix}/lib/openpkg/%2"; else tool="%2"; fi; echo $tool)
   247 %l_gzip                  %{l_tool_locate gzip     gzip}
   248 %l_bzip2                 %{l_tool_locate bzip2    bzip2}
   249 %l_tar                   %{l_tool_locate tar      tar}
   250 %l_make                  %{l_tool_locate make     make}
   251 %l_cc                    %{l_tool_locate cc       cc}
   252 %l_ar                    %{l_tool_locate ar       ar}
   253 %l_ld                    %{l_tool_locate ld       ld}
   254 %l_as                    %{l_tool_locate as       as}
   255 %l_strip                 %{l_tool_locate strip    strip}
   256 %l_cxx                   %{l_tool_locate cxx      c++}
   257 %l_patch                 %{l_tool_locate patch    patch}
   258 %l_sed                   %{l_tool_locate sed      sed}
   259 %l_grep                  %{l_tool_locate grep     grep}
   260 %l_awk                   %{l_tool_locate awk      awk}
   261 %l_autoconf              %{l_tool_locate autoconf autoconf}
   262 %l_automake              %{l_tool_locate automake automake}
   263 %l_libtool               %{l_tool_locate libtool  libtool}
   264 %l_flex                  %{l_tool_locate flex     flex}
   265 %l_bison                 %{l_tool_locate bison    bison}
   266 %l_perl                  %{l_tool_locate perl     perl}
   267 %l_miniperl              %{l_tool_locate miniperl miniperl}
   268 %l_openssl               %{l_tool_locate openssl  openssl}
   269 %l_xmkmf                 %{l_tool_locate xmkmf    xmkmf}
   270 %l_vcheck                %{l_tool_locate vcheck   vcheck}
   272 #   tool options
   273 %l_mflags(O)             %(%{l_sane_env}; %{l_rpmtool} mflags %{-O:-O} "%{l_make}")
   274 %l_cflags(O)             %(%{l_sane_env}; %{l_rpmtool} cflags %{-O:-O} "%{l_cc}")
   275 %l_cxxflags(O)           %(%{l_sane_env}; %{l_rpmtool} cflags %{-O:-O} "%{l_cxx}")
   276 %l_cppflags(i)           %(%{l_sane_env}; %{l_rpmtool} cppflags -p%{l_prefix} %{-i:-i} -- %*)
   277 %l_ldflags()             %(%{l_sane_env}; %{l_rpmtool} ldflags  -p%{l_prefix}          -- %*)
   279 #   OSSP fake syslog library
   280 %l_fsl_ldflags()         %(if [ ".%{with_fsl}" = ".yes" ]; then flags=`(%{l_prefix}/bin/fsl-config --all --ldflags) 2>/dev/null`; else flags=''; fi; echo $flags)
   281 %l_fsl_libs()            %(if [ ".%{with_fsl}" = ".yes" ]; then flags=`(%{l_prefix}/bin/fsl-config --all --libs   ) 2>/dev/null`; else flags=''; fi; echo $flags)
   283 #   determine the current username
   284 %l_whoami                %((id -un) 2>/dev/null || (whoami) 2>/dev/null || (who am i | cut "-d " -f1) 2>/dev/null || echo $LOGNAME)
   286 #   macros for dynamically generating a %files list
   287 %l_files_defattr         '%%defattr(-,%{l_musr},%{l_mgrp})'
   288 %l_files_all             '%{l_prefix}'
   289 %l_files_noshared        '%%not %%dir {%{l_prefix},%{l_prefix}/*,%{l_prefix}/etc/rc.d,%{l_prefix}/man/*}'
   290 %l_files_std()           %l_files_defattr %l_files_all %l_files_noshared
   292 #   path to local build root
   293 %l_buildroot             %{_tmppath}/%{name}-%{version}-root
   295 #   path to local temporary location
   296 %l_tmpdir()              %{_tmppath}
   297 %l_tmpfile()             %{l_tmpdir}/%{name}-%{version}-%{release}-tmp%{?1:-%1}
   299 #   executable path for %post/%pre
   300 %_install_script_path    %{l_prefix}/bin:%{l_prefix}/sbin:/bin:/sbin:/usr/bin:/usr/sbin
   302 #   names of RPM files
   303 %l_srcrpmfilename        %%{NAME}-%%{VERSION}-%%{RELEASE}.src.rpm
   304 %l_binrpmfilename        %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}-%%{OS}-%{l_tag}.rpm
   306 #   override the name scheme for RPM files
   307 %_rpmfilename            %{l_binrpmfilename}
   308 %_build_name_fmt         %{l_binrpmfilename}
   309 %_repackage_name_fmt     %{l_binrpmfilename}
   310 %_solve_name_fmt         %{_solve_pkgsdir}/%{l_binrpmfilename}
   312 #   override the payload compression for the CPIO parts of an RPM
   313 #   (we use the equivalent of "bzip2 -9")
   314 %_source_payload         w9.bzdio
   315 %_binary_payload         w9.bzdio
   317 #   package signature type is OpenPGP via GnuPG
   318 %__gpg                   %{l_prefix}/bin/gpg
   319 %_signature              gpg
   320 %__vsflags               1
   322 #   two macro-processor add-ons (should be part of forthcoming RPM releases)
   323 %ifdef()                 %if %{expand:%%{?%{1}:1}%%{!?%{1}:0}}
   324 %ifndef()                %if %{expand:%%{?%{1}:0}%%{!?%{1}:1}}
   326 #   macro for package option configuration
   327 %option()                %{expand:%%{!?%{1}:%%global %*}} %{expand:%%global _options %{?_options:%{_options}:}%{1}=%%%{1}} \
   328 Provides: %{name}::%{1} = %(echo '%{expand:%%{%{1}}}' | sed -e 's;%%;%%%%;g' -e 's; ;%%20;g' -e 's;	;%%09;g')
   330 #   macros for NoSource/NoPatch (distribution restriction) integrity handling
   331 %NoSource()              %(if [ ".%{?restriction}" != ".no" ]; then echo "NoSource: %1"; fi)%{expand:%%global _restricted %{?_restricted:%{_restricted}} %%{SOURCEURL%1}}
   332 %NoPatch()               %(if [ ".%{?restriction}" != ".no" ]; then echo "NoPatch: %1"; fi)%{expand:%%global _restricted %{?_restricted:%{_restricted}} %%{PATCHURL%1}}
   333 %integrity()             %{l_check_nosource}
   335 #   macros for checking build environment
   336 %l_check_nosource()      %(%{l_sane_env}; checkok=1; checkinfo=`echo "Sorry, this OpenPKG package contains a DISTRIBUTION RESTRICTED source file."; echo "Before you can proceed building this package, fetch missing files MANUALLY:"`; for url in . %{?_restricted}; do [ ".$url" = .. ] && continue; eval `echo "$url" | sed -e 's!^\\(.*\\)::/\\([^/][^/]*\\)$!;url=\\"\\1\\"; file=\\"\\2\\"!' -e 's!^\\([^:;][^:]*://.*/\\)\\([^/][^/]*\\)$!;url=\\"\\1\\"; file=\\"\\2\\"!' -e 's:^\\([^;].*\\)$:;url="(unknown location) "; file="\\1":' -e 's:^;::'`; if [ ! -f "%{_specdir}/$file" ] && [ ! -f "%{_sourcedir}/$file" ]; then checkok=0; checkinfo=`echo "${checkinfo}"; echo ""; echo "from ${url}"; echo "file ${file}"; echo "here %{_sourcedir}/$file"`; fi; done; if [ $checkok -ne 1 ]; then echo "set +x"; echo "$checkinfo" | %{l_rpmtool} msg -b -t error | sed -e 's;^;echo ";' -e 's;$;";'; echo "exit 1"; fi)
   337 %l_check_class()         %(%{l_sane_env}; class=`echo "@:%{?class}:%{?distribution}" | sed -e 's;^@:\\([^:][^:]*\\):.*$;\\1;' -e 's;^@:.*\\[\\(.*\\)\\].*$;\\1;' -e 's;^@:.*$;JUNK;'`; %{l_rpmtool} check-class "$class")
   338 %prep %%prep\
   339     %{l_check_nosource} \
   340     %{l_check_class} \
   341     %{nil}
   343 #   macro-processor add-on for testing external conditions
   344 %l_test(pfd)             %(if [ ".%{?-p:yes}" = .yes ]; then %{l_rpm} -q %1 >/dev/null 2>&1; rc=$?; elif [ ".%{?-f:yes}" = .yes ]; then test -f %1; rc=$?; elif [ ".%{?-d:yes}" = .yes ]; then test -d %1; rc=$?; fi; if [ ".$rc" = .0 ]; then echo "yes"; else echo "no"; fi)
   346 #   default list of vendor source fetching locations
   347 %l_fetch_mirror_0        -
   348 %l_fetch_mirror_1        -
   349 %l_fetch_mirror_2        -
   350 %l_fetch_mirror_3        -
   351 %l_fetch_mirror_4        -
   352 %l_fetch_mirror_5        -
   353 %l_fetch_mirror_6        -
   354 %l_fetch_mirror_7        -
   355 %l_fetch_mirror_8        -
   356 %l_fetch_mirror_9        -
   357 %l_fetch_backup_0        -
   358 %l_fetch_backup_1        -
   359 %l_fetch_backup_2        -
   360 %l_fetch_backup_3        -
   361 %l_fetch_backup_4        -
   362 %l_fetch_backup_5        -
   363 %l_fetch_backup_6        -
   364 %l_fetch_backup_7        -
   365 %l_fetch_backup_8        -
   366 %l_fetch_backup_9        ftp://ftp.openpkg.org/sources/DST/%{name}/
   368 #   sane build environment setup
   369 %l_build_path            %(if [ -d %{l_prefix}/lib/openpkg/override ]; then echo "%{l_prefix}/lib/openpkg/override:"; fi)%{l_prefix}/bin:%{l_prefix}/sbin:@l_build_path@%(if [ -d %{l_prefix}/lib/openpkg/fallback ]; then echo ":%{l_prefix}/lib/openpkg/fallback"; fi)
   370 %l_build_ldlp            %{l_prefix}/lib:@l_build_ldlp@
   371 %l_build_ulim            @l_build_ulim@
   372 %l_build_shell_cmd       %{l_prefix}/lib/openpkg/bash
   373 %l_build_shell_opt       --norc --noprofile --posix
   375 #   sane build environment for manual usage in macros (currently just $PATH)
   376 %l_sane_env              PATH="%{l_build_path}"; export PATH; LD_LIBRARY_PATH="%{l_build_ldlp}"; export LD_LIBRARY_PATH
   378 #   sane build environment for %prep/%build/%install
   379 %_buildshell             env -i %{l_build_shell_cmd} %{l_build_shell_opt}
   380 %___build_pre \
   381 HOME="%{l_prefix}"\
   382 SHELL="%{l_build_shell_cmd}"\
   383 TERM="%(echo $TERM)"\
   384 TMPDIR="%{_tmppath}"\
   385 USER="%(echo $USER)"\
   386 LOGNAME="%(echo $LOGNAME)"\
   387 PATH="%{l_build_path}"\
   388 LD_LIBRARY_PATH="%{l_build_ldlp}"\
   389 export HOME SHELL TMPDIR USER LOGNAME PATH LD_LIBRARY_PATH\
   390 RPM_SOURCE_DIR=\"%{u2p:%{_sourcedir}}\"\
   391 RPM_BUILD_DIR=\"%{u2p:%{_builddir}}\"\
   392 RPM_OPT_FLAGS=\"%{optflags}\"\
   393 RPM_ARCH=\"%{l_host_arch}\"\
   394 RPM_OS=\"%{l_host_os}\"\
   395 RPM_DOC_DIR=\"%{_docdir}\"\
   396 RPM_PACKAGE_NAME=\"%{name}\"\
   397 RPM_PACKAGE_VERSION=\"%{version}\"\
   398 RPM_PACKAGE_RELEASE=\"%{release}\"\
   399 export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS RPM_DOC_DIR\
   400 export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\
   401 %{?buildroot:RPM_BUILD_ROOT=\"%{u2p:%{buildroot}}\"\
   402 export RPM_BUILD_ROOT}\
   403 %{l_build_ulim}\
   404 umask 022\
   405 %{verbose:set -x}%{!verbose:exec >/dev/null}\
   406 cd %{u2p:%{_builddir}}
   408 #   special %track section support
   409 %__spec_track_template VCFILE="%{_tmppath}/%{name}-%{version}-%{release}.vc"\
   410 rm -f $VCFILE\
   411 set -o noclobber\
   412 sed -e 's;^ *#.*$;;' -e 's;^    ;;' >$VCFILE <<'EOF'\
   413 %{nil}
   414 %__spec_track_post EOF\
   415 if [ ".%{?___track_dump}" = .yes ]; then\
   416     cat $VCFILE\
   417 else\
   418     if [ ! -f "%{l_vcheck}" ]; then\
   419         echo "rpm:ERROR: Vendor source tracking functionality currently not available because"\
   420         echo "rpm:ERROR: URL tracking tool vcheck(1) not found under \\"%{l_vcheck}\\"."\
   421         echo "rpm:ERROR: You have to install the OpenPKG \\"vcheck\\" package first or set"\
   422         echo "rpm:ERROR: the RPM macro \\"%%{l_vcheck}\\" to the path of your vcheck(1) tool."\
   423         exit 0\
   424     fi\
   425     ( echo "config = {"\
   426       echo "}"\
   427     ) >>$VCFILE\
   428     %{l_vcheck} -v -f $VCFILE || true\
   429 fi\
   430 rm -f $VCFILE\
   431 %{nil}

mercurial