| |
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 ## |
| |
27 |
| |
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"}) |
| |
30 |
| |
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 |
| |
37 |
| |
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') |
| |
49 |
| |
50 # the OpenPKG instance location (backward compatibility only) |
| |
51 %l_location %{l_tag} |
| |
52 |
| |
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} |
| |
60 |
| |
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} |
| |
68 |
| |
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} |
| |
76 |
| |
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} |
| |
82 |
| |
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} |
| |
88 |
| |
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} |
| |
94 |
| |
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") |
| |
97 |
| |
98 # old OpenPKG platform identification |
| |
99 %l_target %{l_platform -t} |
| |
100 |
| |
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; }') |
| |
106 |
| |
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; }') |
| |
112 |
| |
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; }') |
| |
118 |
| |
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; }') |
| |
124 |
| |
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} |
| |
130 |
| |
131 # define the installation hierarchy (used parts) |
| |
132 %l_prefix @l_prefix@ |
| |
133 %l_prefix_static @l_prefix_static@ |
| |
134 |
| |
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 |
| |
149 |
| |
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")} |
| |
163 |
| |
164 # local version of the empty macro |
| |
165 %l_nil %{nil} |
| |
166 |
| |
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} |
| |
184 |
| |
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) |
| |
188 |
| |
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} |
| |
217 |
| |
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 |
| |
222 |
| |
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 |
| |
229 |
| |
230 # provide path to platform identification file |
| |
231 %__platform %{l_prefix}/etc/openpkg/platform |
| |
232 |
| |
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 |
| |
244 |
| |
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} |
| |
271 |
| |
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} -- %*) |
| |
278 |
| |
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) |
| |
282 |
| |
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) |
| |
285 |
| |
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 |
| |
291 |
| |
292 # path to local build root |
| |
293 %l_buildroot %{_tmppath}/%{name}-%{version}-root |
| |
294 |
| |
295 # path to local temporary location |
| |
296 %l_tmpdir() %{_tmppath} |
| |
297 %l_tmpfile() %{l_tmpdir}/%{name}-%{version}-%{release}-tmp%{?1:-%1} |
| |
298 |
| |
299 # executable path for %post/%pre |
| |
300 %_install_script_path %{l_prefix}/bin:%{l_prefix}/sbin:/bin:/sbin:/usr/bin:/usr/sbin |
| |
301 |
| |
302 # names of RPM files |
| |
303 %l_srcrpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.src.rpm |
| |
304 %l_binrpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}-%%{OS}-%{l_tag}.rpm |
| |
305 |
| |
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} |
| |
311 |
| |
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 |
| |
316 |
| |
317 # package signature type is OpenPGP via GnuPG |
| |
318 %__gpg %{l_prefix}/bin/gpg |
| |
319 %_signature gpg |
| |
320 %__vsflags 1 |
| |
321 |
| |
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}} |
| |
325 |
| |
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') |
| |
329 |
| |
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} |
| |
334 |
| |
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} |
| |
342 |
| |
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) |
| |
345 |
| |
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}/ |
| |
367 |
| |
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 |
| |
374 |
| |
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 |
| |
377 |
| |
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}} |
| |
407 |
| |
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} |
| |
432 |