Add config.sub update to %configure macro
[platform/upstream/rpm.git] / packaging / rpm-tizen_macros
1 # directories
2 %_infodir               %{_prefix}/share/info
3 %_mandir                %{_prefix}/share/man
4 %_sysconfdir            /etc
5 %_localstatedir         /var
6 %_defaultdocdir         %{_usr}/share/doc/packages
7
8 # _rootprefix can be set to (/,%{_prefix}) to customize systemd installation)
9 %_rootprefix %{_prefix}
10 %_unitdir_user %{_prefix}/lib/systemd/user
11 %_unitdir %{_rootprefix}/lib/systemd/system
12
13 # package build macros
14 # %make_install           make install DESTDIR=%{?buildroot}
15 # %makeinstall            make DESTDIR=%{?buildroot:%{buildroot}} install
16 %rb_arch                %(echo %{_host_cpu}-linux | sed -e "s/i686/i586/" -e "s/armv5tel/armv4l/" -e "s/hppa2.0/hppa/")
17 %rb_ver                 %(/usr/bin/ruby -e 'puts VERSION.sub(/\\\.\\\d$/, "")')
18
19 # Update config.sub file for packages not supporting current platform
20 %maybe_update_configsub \
21 %ifarch riscv64 \
22 [[ -e config.sub ]] && install -m 0755 $(automake --print-libdir)/config.sub config.sub \
23 %endif \
24 %{nil}
25
26 # external kernel module helper macro(s)
27 %kernel_devel_uname_r %(/bin/rpm -q --provides $(/bin/rpm -q --whatprovides kernel-devel-uname-r) | sed -ne 's,kernel-devel-uname-r = ,, p')
28 %kernel_release %(/bin/rpm -q --queryformat '%{RPMTAG_VERSION}-%{RPMTAG_RELEASE}' $(/bin/rpm -q --whatprovides kernel))
29 %kernel_name    %(/bin/rpm -q --queryformat '%{RPMTAG_NAME}' $(/bin/rpm -q --whatprovides kernel))
30
31 # this script calls all scripts in %{_rpmconfigdir}/brp-tizen.d
32 %__arch_install_post   %{_rpmconfigdir}/check-buildroot
33
34 %__strip_install_post    \
35     %{!?__debug_package:%{_rpmconfigdir}/brp-strip %{__strip}} \
36     %{_rpmconfigdir}/brp-strip-static-archive %{__strip} \
37 #    %{_rpmconfigdir}/brp-strip-comment-note %{__strip} %{__objdump} \
38 %{nil}
39
40 %__os_install_post    \
41     %{_rpmconfigdir}//brp-compress \
42     %{!?_rpm_strip_disable:%{__strip_install_post}}\
43     %{_rpmconfigdir}/brp-python-hardlink \
44     %{!?disable_docs_package:%{_rpmconfigdir}/tizen/find-docs.sh %{buildroot}} \
45 %{nil}
46
47 #    %{_rpmconfigdir}/tizen/brp-implant-ident-static
48 #
49 %__isu_install_post \
50     %{_rpmconfigdir}/tizen/find-isufiles.sh %{_builddir}/%{?buildsubdir}/isu.list \
51 %{nil}
52
53 %__spec_install_post\
54     %{?__debug_package:%{__debug_install_post}}\
55     %{__arch_install_post}\
56     %{__os_install_post}\
57     %{__isu_install_post}\
58 %{nil}
59
60 # macro: %configure_kernel_source
61 #
62 #
63 %configure_kernel_source() \
64         if test -d /usr/src/linux ; then \
65             pushd /usr/src/linux \
66             test -f .config || cp arch/%_arch/defconfig.default .config \
67             yes "" | make oldconfig \
68             make dep \
69             popd \
70         fi \
71         %nil
72
73 %install_info(:-:) \
74     ALL_ARGS=(%{**}) \
75     NUM_ARGS=${#ALL_ARGS[@]} \
76     if test -x /sbin/install-info ; then \
77         if test -e "${ALL_ARGS[$((NUM_ARGS-1))]}" ; then \
78             /sbin/install-info "${ALL_ARGS[@]}" \
79         fi \
80     fi ;
81
82 %install_info_delete(:-:) \
83     ALL_ARGS=(%{**}) \
84     NUM_ARGS=${#ALL_ARGS[@]} \
85     if test -x /sbin/install-info ; then \
86         if ! test -e "${ALL_ARGS[$((NUM_ARGS-1))]}" ; then \
87             /sbin/install-info --quiet --delete "${ALL_ARGS[@]}" \
88         fi ; \
89     fi ;
90
91 # find-supplements.ksyms parses this macro directly out of the spec file:
92 %supplements_kernel_module() \
93     %{expand:%(if ! rpm -q kernel-syms > /dev/null; then echo "%fail Please add the kernel-syms package to BuildRequires"; fi)}
94
95 %do_profiling 1
96 %cflags_profile_generate -fprofile-generate
97 %cflags_profile_feedback -fprofile-use
98
99
100
101 # Tizen
102 #
103 %configure \
104   %maybe_update_configsub \
105   AR="%__ar"; export AR ; \
106   NM="%__nm"; export NM ; \
107   RANLIB="%__ranlib"; export RANLIB ; \
108   CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
109   CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
110   FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
111   ./configure --build=%{_build} --host=%{_host} \\\
112         --program-prefix=%{?_program_prefix} \\\
113         --prefix=%{_prefix} \\\
114         --exec-prefix=%{_exec_prefix} \\\
115         --bindir=%{_bindir} \\\
116         --sbindir=%{_sbindir} \\\
117         --sysconfdir=%{_sysconfdir} \\\
118         --datadir=%{_datadir} \\\
119         --includedir=%{_includedir} \\\
120         --libdir=%{_libdir} \\\
121         --libexecdir=%{_libexecdir} \\\
122         --localstatedir=%{_localstatedir} \\\
123         --sharedstatedir=%{_sharedstatedir} \\\
124         --mandir=%{_mandir} \\\
125         --infodir=%{_infodir}
126
127
128 %reconfigure \
129   AR="%__ar"; export AR ; \
130   NM="%__nm"; export NM ; \
131   RANLIB="%__ranlib"; export RANLIB ; \
132   CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
133   CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
134   FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
135   autoreconf -v --install --force || exit 1 \
136   ./configure --build=%{_build} --host=%{_host} \\\
137         --program-prefix=%{?_program_prefix} \\\
138         --prefix=%{_prefix} \\\
139         --exec-prefix=%{_exec_prefix} \\\
140         --bindir=%{_bindir} \\\
141         --sbindir=%{_sbindir} \\\
142         --sysconfdir=%{_sysconfdir} \\\
143         --datadir=%{_datadir} \\\
144         --includedir=%{_includedir} \\\
145         --libdir=%{_libdir} \\\
146         --libexecdir=%{_libexecdir} \\\
147         --localstatedir=%{_localstatedir} \\\
148         --sharedstatedir=%{_sharedstatedir} \\\
149         --mandir=%{_mandir} \\\
150         --infodir=%{_infodir}
151
152 %autogen \
153   AR="%__ar"; export AR ; \
154   NM="%__nm"; export NM ; \
155   RANLIB="%__ranlib"; export RANLIB ; \
156   CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
157   CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
158   FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
159   ./autogen.sh --build=%{_build} --host=%{_host} \\\
160         --program-prefix=%{?_program_prefix} \\\
161         --prefix=%{_prefix} \\\
162         --exec-prefix=%{_exec_prefix} \\\
163         --bindir=%{_bindir} \\\
164         --sbindir=%{_sbindir} \\\
165         --sysconfdir=%{_sysconfdir} \\\
166         --datadir=%{_datadir} \\\
167         --includedir=%{_includedir} \\\
168         --libdir=%{_libdir} \\\
169         --libexecdir=%{_libexecdir} \\\
170         --localstatedir=%{_localstatedir} \\\
171         --sharedstatedir=%{_sharedstatedir} \\\
172         --mandir=%{_mandir} \\\
173         --infodir=%{_infodir}
174
175
176 %makeinstall \
177   %{__make} \\\
178         prefix=%{?buildroot:%{buildroot}}%{_prefix} \\\
179         exec_prefix=%{?buildroot:%{buildroot}}%{_exec_prefix} \\\
180         bindir=%{?buildroot:%{buildroot}}%{_bindir} \\\
181         sbindir=%{?buildroot:%{buildroot}}%{_sbindir} \\\
182         sysconfdir=%{?buildroot:%{buildroot}}%{_sysconfdir} \\\
183         datadir=%{?buildroot:%{buildroot}}%{_datadir} \\\
184         includedir=%{?buildroot:%{buildroot}}%{_includedir} \\\
185         libdir=%{?buildroot:%{buildroot}}%{_libdir} \\\
186         libexecdir=%{?buildroot:%{buildroot}}%{_libexecdir} \\\
187         localstatedir=%{?buildroot:%{buildroot}}%{_localstatedir} \\\
188         sharedstatedir=%{?buildroot:%{buildroot}}%{_sharedstatedir} \\\
189         mandir=%{?buildroot:%{buildroot}}%{_mandir} \\\
190         infodir=%{?buildroot:%{buildroot}}%{_infodir} \\\
191   install
192
193
194 %make_install \
195   %{__make} \\\
196         DESTDIR=%{?buildroot:%{buildroot}} \\\
197         INSTALL_ROOT=%{?buildroot:%{buildroot}} \\\
198   install  \
199   rm -f %{?buildroot:%{buildroot}}%{_infodir}/dir \
200   find %{?buildroot:%{buildroot}} -regex ".*\\.la$" | xargs rm -f -- \
201   %{!?keepstatic:find %{?buildroot:%{buildroot}} -regex ".*\\.a$" | xargs rm -f --}
202
203 %_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\
204         && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
205         [ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-j$RPM_BUILD_NCPUS")
206
207 %lang_package(n:f:) \
208 %package %{-n:-n %{-n*}-}locale \
209 Summary: Translations and Locale for package %{name}\
210 Requires: %{-n:%{-n*}}%{!-n:%{name}} = %{version} \
211 Provides: %{-n:%{-n*}}%{!-n:%{name}}-lang-all = %{version} \
212 BuildArch:  noarch \
213 %description %{-n:-n %{-n*}-}locale\
214 This package provides translations for package %{name}.\
215 %files %{-n:-n %{-n*}-}locale -f %{-f:%{-f*}.lang} %{!-f:%{name}.lang}\
216 %defattr(-,root,root,-)\
217 %{nil}
218
219 %docs_package \
220 %package docs \
221 Summary: Documentation for package %{name}\
222 AutoReqProv: 0\
223 %description docs\
224 This package provides documentation for package %{name}.\
225 %files docs -f documentation.list\
226 %defattr(-,root,root,-)\
227 %{nil}
228
229 %isu_package \
230 %package isu \
231 Summary: ISU Package configuration \
232 AutoReqProv: 0\
233 %description isu\
234 This package provides ISU configuration for package %{name}.\
235 %files isu -f isu.list\
236 %defattr(-,root,root,-)\
237 %{nil}
238
239 # Bad hack to set $LANG to C during all RPM builds
240 %prep \
241 %%prep\
242 LANG=C\
243 export LANG\
244 unset DISPLAY\
245 %{nil}
246
247 %build %%build\
248 LANG=C\
249 export LANG\
250 unset DISPLAY\
251 CFLAGS="%optflags" ; export CFLAGS ; \
252 CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
253 FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
254 LDFLAGS="${LDFLAGS:-%{?global_LDFLAGS}}"; export LDFLAGS ; \
255 %{nil}
256
257 %install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}}\
258 %%install\
259 LANG=C\
260 export LANG\
261 %{?_enable_binutils_strip:export STRIP_DEFAULT_PACKAGE="binutils"} \
262 unset DISPLAY\
263 rm -rf %{?buildroot:%{buildroot}} \
264 mkdir -p %{?buildroot:%{buildroot}} \
265 %{nil}
266
267
268 %clean %%clean\
269 rm -rf %{?buildroot:%{buildroot}} \
270 %{nil}
271
272 %find_lang      %{_rpmconfigdir}/find-lang.sh %{buildroot}
273 %find_docs      %{_rpmconfigdir}/tizen/find-docs.sh %{buildroot}
274
275
276
277 #==============================================================================
278 # ---- default .desktop directories per the desktop-entry freedesktop.org spec
279
280 %_desktopdir    %{_datadir}/applications
281
282 #==============================================================================
283 # ---- Generic auto req/prov filtering macros
284 #
285 # http://fedoraproject.org/wiki/PackagingDrafts/AutoProvidesAndRequiresFiltering
286
287 # prevent anything matching from being scanned for provides
288 %filter_provides_in(P) %{expand: \
289 %global __filter_prov_cmd %{?__filter_prov_cmd} %{__grep} -v %{-P} '%*' | \
290 }
291
292 # prevent anything matching from being scanned for requires
293 %filter_requires_in(P) %{expand: \
294 %global __filter_req_cmd %{?__filter_req_cmd} %{__grep} -v %{-P} '%*' | \
295 }
296
297 # filter anything matching out of the provides stream
298 %filter_from_provides() %{expand: \
299 %global __filter_from_prov %{?__filter_from_prov} | %{__sed} -e '%*' \
300 }
301
302 # filter anything matching out of the requires stream
303 %filter_from_requires() %{expand: \
304 %global __filter_from_req %{?__filter_from_req} | %{__sed} -e '%*' \
305 }
306
307 # actually set up the filtering bits
308 %filter_setup %{expand: \
309 %global _use_internal_dependency_generator 0 \
310 %global __deploop() while read FILE; do %{_rpmconfigdir}/rpmdeps -%{1} ${FILE}; done | /bin/sort -u \
311 %global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \
312 %global __find_requires /bin/sh -c "%{?__filter_req_cmd}  %{__deploop R} %{?__filter_from_req}" \
313 }
314
315 %remove_docs \
316   rm -rf %{?buildroot:%{buildroot}}%{_infodir} \
317   rm -rf %{?buildroot:%{buildroot}}%{_defaultdocdir} \
318   rm -rf %{?buildroot:%{buildroot}}%{_datadir}/doc/%{name} \
319   rm -rf %{?buildroot:%{buildroot}}%{_datadir}/doc/%{name}-%{version} \
320   rm -rf %{?buildroot:%{buildroot}}%{_datadir}/gtk-doc \
321   rm -rf %{?buildroot:%{buildroot}}%{_datadir}/doc \
322   rm -rf %{?buildroot:%{buildroot}}%{_datadir}/man \
323   find %{?buildroot:%{buildroot}} -regex ".*/man/man./.*\.[0-9]" | xargs rm -f -- \
324   find %{?buildroot:%{buildroot}} -regex ".*/man/../man./.*\.[0-9]" | xargs rm -f -- \
325   find %{?buildroot:%{buildroot}} -regex ".*/man/man./.*\.[0-9]pm" | xargs rm -f --
326
327
328 %install_service() \
329 mkdir -p %{buildroot}/%{_unitdir}/%{1} \
330 ln -s ../%{2}  %{buildroot}/%{_unitdir}/%{1}/%{2}  \
331 %{nil}
332
333
334 %_fontsdir               %{_usr}/share/fonts
335 %_ttfontsdir             %{_fontsdir}/truetype
336 %_miscfontsdir           %{_fontsdir}/misc
337 %_fontsconfdir           %{_sysconfdir}/fonts
338 %_fontsconfddir          %{_fontsconfdir}/conf.d
339 %_fontsconfavaildir      %{_datadir}/%{name}/conf.avail
340
341 %devel_package \
342 %package devel \
343 Summary: Development files for package %{name}\
344 Group: Development\
345 %description devel\
346 This package provides header files and other developer releated files for package %{name}.\
347 %files devel \
348 %{_includedir}/*\
349 %{_libdir}/pkgconfig/*.pc\
350 %{_libdir}/*.so\
351 %{nil}
352
353 %devel_desc This package contains all necessary include files and libraries needed \
354 to develop applications that require %{name}.\
355 %{nil}
356
357 %posttrans(n:) %%posttrans %{?-n:-n %{-n*}}%{*} \
358 echo "Running %{?-n:%{-n*}}%{!?-n:%{name}%{?1:-%{1}}} %%posttrans script" \
359 %{nil}
360
361 %_debug_manifest %{_rpmconfigdir}/debug.manifest
362
363 %_install_debug_manifest \
364    cp %{_debug_manifest} %{_builddir}/%{?buildsubdir}/%{name}-debuginfo.manifest \
365    cp %{_debug_manifest} %{_builddir}/%{?buildsubdir}/%{name}-debugsource.manifest \
366 %{nil}
367
368 %_buildinfo "Tizen %tizen_full_version"\
369 "%_project/%_repository"\
370 "%(gcc --version | head -n 1)-%(rpm -q gcc --queryformat \"%{VCS}\" | sed -e 's/.*\#//')"\
371 %{?_auxbuildinfo}\
372 %{nil}