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