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.
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}