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