Merge branch 'master' of ssh://tz.otcshare.org/profile/base/rpm
[platform/upstream/rpm.git] / packaging / rpm.spec
1 %define rpmhome /usr/lib/rpm
2
3 Name:           rpm
4 BuildRequires:  binutils
5 BuildRequires:  bzip2
6 BuildRequires:  file-devel
7 BuildRequires:  findutils
8 BuildRequires:  gcc
9 BuildRequires:  gettext-tools
10 BuildRequires:  glibc-devel
11 BuildRequires:  gzip
12 BuildRequires:  libacl-devel
13 BuildRequires:  pkgconfig(bzip2)
14 BuildRequires:  libcap-devel
15 BuildRequires:  libelf-devel
16 BuildRequires:  libtool
17 BuildRequires:  pkgconfig(lua)
18 BuildRequires:  make
19 BuildRequires:  pkgconfig(ncurses)
20 BuildRequires:  patch
21 BuildRequires:  pkgconfig(popt)
22 BuildRequires:  xz-devel
23 BuildRequires:  pkgconfig(zlib)
24 BuildRequires:  pkgconfig(nss)
25 BuildRequires:  uthash-devel
26 BuildRequires:  libxml2-devel
27 BuildRequires:  libattr-devel
28 BuildRequires:  pkgconfig(libsmack)
29
30
31 Provides:       rpminst
32 Provides:       rpm-libs
33 Summary:        The RPM Package Manager
34 License:        GPL-2.0+
35 Group:          System/Packages
36 Version:        4.11.0.1
37 Release:        0
38 Source0:        rpm-%{version}.tar.bz2
39 Source1:        db-4.8.30.tar.bz2
40 Source2:            db-4.8.30-integration.dif
41 Source4:        rpm-tizen_macros
42 Source8:        rpmconfigcheck
43 Source13:           find-docs.sh
44 Source22:           device-sec-policy
45 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
46 #
47 # avoid bootstrapping problem
48 %define _binary_payload w9.bzdio
49
50 %description
51 RPM Package Manager is the main tool for managing the software packages
52 of Tizen.
53
54 RPM can be used to install and remove software packages. With rpm, it
55 is easy to update packages.  RPM keeps track of all these manipulations
56 in a central database.  This way it is possible to get an overview of
57 all installed packages.  RPM also supports database queries.
58
59 %package devel
60 Summary:        Include Files and Libraries mandatory for Development
61 Group:          System/Packages
62 Requires:       rpm = %{version}
63 Requires:       popt-devel
64
65 %description devel
66 This package contains the RPM C library and header files.  These
67 development files will simplify the process of writing programs which
68 manipulate RPM packages and databases and are intended to make it
69 easier to create graphical package managers or any other tools that
70 need an intimate knowledge of RPM packages in order to function.
71
72 %package build
73 Summary:        Tools and Scripts to create rpm packages
74 Group:          System/Packages
75 Requires:       rpm = %{version}
76 Provides:       rpmbuild rpm:%_bindir/rpmbuild
77 Requires:       bzip2
78 Requires:       xz
79 Requires:       gzip
80 Requires:       binutils
81 Requires:       make
82 Requires:       gcc
83 Requires:       findutils
84 Requires:       patch
85 Requires:       glibc-devel
86
87 %description build
88 If you want to build a rpm, you need this package. It provides rpmbuild
89 and requires some packages that are usually required 
90
91 %package security-plugin
92 Summary: MSM security plugin for rpm
93 Group: Development/Libraries
94 Requires: rpm = %{version}-%{release}
95 Requires: smack
96 Requires: libxml2
97 Requires: nss
98
99 %description security-plugin
100 This package contains the MSM security plugin for rpm that performs
101 security-related functionality. 
102
103
104 %prep
105 %setup -q -n rpm-%{version}
106 rm -rf sqlite
107 tar xjf %{S:1}
108 ln -s db-4.8.30 db
109 chmod -R u+w db/*
110 # will get linked from db3
111 rm -f rpmdb/db.h
112 patch -p0 < %{S:2}
113
114 if [ -s /etc/rpm/tizen_macros ]; then
115         cp -a /etc/rpm/tizen_macros %{SOURCE4}
116 fi
117 cp -a %{SOURCE4} tizen_macros
118 rm -f m4/libtool.m4
119 rm -f m4/lt*.m4
120
121 %build
122 CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss`"
123 export CPPFLAGS 
124 export CFLAGS="%{optflags} -ffunction-sections"
125 export LDFLAGS="-Wl,-Bsymbolic-functions -ffunction-sections"
126 %ifarch armv5tel
127 export CFLAGS="-g -O0 -fno-strict-aliasing -ffunction-sections"
128 %endif
129
130 %if %{_target_cpu}
131 %ifarch %arm
132 BUILDTARGET="--build=%{_target_cpu}-tizen-linux-gnueabi"
133 %else
134 BUILDTARGET="--build=%{_target_cpu}-tizen-linux"
135 %endif
136 %endif
137
138 autoreconf -i -f
139 ./configure --disable-dependency-tracking --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
140 --libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var  --with-lua \
141 --with-acl --with-cap  --enable-shared %{?with_python: --enable-python} --with-msm $BUILDTARGET
142
143 make %{?_smp_mflags}
144
145 %install
146 mkdir -p %{buildroot}/usr/lib
147 mkdir -p %{buildroot}/usr/share/locale
148 ln -s ../share/locale %{buildroot}/usr/lib/locale
149 %make_install
150 install -m 644 db3/db.h %{buildroot}/usr/include/rpm
151 # remove .la file and the static variant of libpopt
152 # have to remove the dependency from other .la files as well
153 #for f in %{buildroot}/%{_libdir}/*.la; do
154 #    sed -i -e "s,/%_lib/libpopt.la,-lpopt,g" $f
155 #done
156 mkdir -p %{buildroot}%{_sysconfdir}/rpm
157 cp -a tizen_macros %{buildroot}/usr/lib/rpm
158 mkdir -p %{buildroot}/usr/lib/rpm/tizen
159 install -m 755 %{SOURCE13} %{buildroot}/usr/lib/rpm/tizen
160 install -m 644 %{SOURCE22} ${RPM_BUILD_ROOT}%{_sysconfdir}/device-sec-policy
161 ln -s ../tizen_macros %{buildroot}/usr/lib/rpm/tizen/macros
162 for d in BUILD RPMS SOURCES SPECS SRPMS BUILDROOT ; do
163   mkdir -p %{buildroot}/usr/src/packages/$d
164   chmod 755 %{buildroot}/usr/src/packages/$d
165 done
166 for d in %{buildroot}/usr/lib/rpm/platform/*-linux/macros ; do
167   dd=${d%%-linux/macros}
168   dd=${dd##*/}
169   mkdir %{buildroot}/usr/src/packages/RPMS/$dd
170   chmod 755 %{buildroot}/usr/src/packages/RPMS/$dd
171 done
172 mkdir -p %{buildroot}/var/lib/rpm
173 gzip -9 %{buildroot}/%{_mandir}/man[18]/*.[18]
174 export RPM_BUILD_ROOT
175 chmod 755 doc/manual
176 rm -rf doc/manual/Makefile*
177 rm -f %{buildroot}/usr/lib/rpmpopt
178 rm -rf %{buildroot}%{_mandir}/{fr,ja,ko,pl,ru,sk}
179 rm -f %{buildroot}%{_prefix}/share/locale/de/LC_MESSAGES/rpm.mo
180 rm -f %{buildroot}/usr/lib/rpm/cpanflute %{buildroot}/usr/lib/rpm/cpanflute2
181 install -m 755 scripts/find-supplements{,.ksyms} %{buildroot}/usr/lib/rpm
182 install -m 755 scripts/firmware.prov %{buildroot}/usr/lib/rpm
183 install -m 755 scripts/debuginfo.prov %{buildroot}/usr/lib/rpm
184 rm -f %{buildroot}/usr/lib/locale %{buildroot}/usr/lib/rpmrc
185 mkdir -p %{buildroot}/etc/rpm
186 chmod 755 %{buildroot}/etc/rpm
187 mkdir -p %{buildroot}%{rpmhome}/macros.d
188 # remove some nonsense or non-working scripts
189 pushd %{buildroot}/usr/lib/rpm/
190 for f in rpm2cpio.sh rpm.daily rpmdiff* rpm.log rpm.xinetd freshen.sh u_pkg.sh \
191          magic magic.mgc magic.mime* rpmfile *.pl javadeps brp-redhat \
192          brp-strip-static-archive vpkg-provides*.sh http.req sql.req tcl.req \
193          rpmdb_* brp-sparc64-linux brp-strip-comment-note brp-java-gcjcompile
194 do
195     rm -f $f
196 done
197 for i in /usr/share/automake-*/*; do
198   if test -f "$i" && test -f "${i##*/}"; then
199     rm -f "${i##*/}"
200   fi
201 done
202 popd
203 rm -rf %{buildroot}/%{_libdir}/python%{py_ver}
204 rm -f %{buildroot}%{_libdir}/*.la
205 rm -f %{buildroot}%{_libdir}/rpm-plugins/*.la
206 sh %{buildroot}/usr/lib/rpm/find-lang.sh %{buildroot} rpm
207 %ifarch armv7hl
208 # rpm is using the host_cpu as default for the platform, but armv7hl is not known by the kernel.
209 # so we need to enforce the platform here.
210 # We don't want to use armv7l because it would make us incompatible to Fedora and MeeGo plattforms.
211 echo -n armv7hl-tizen-linux> %{buildroot}/etc/rpm/platform
212 %endif
213
214 %post
215 /sbin/ldconfig
216 test -f var/lib/rpm/Packages || rpm --initdb
217 rm -f var/lib/rpm/Filemd5s var/lib/rpm/Filedigests var/lib/rpm/Requireversion var/lib/rpm/Provideversion
218
219 %postun 
220 /sbin/ldconfig
221
222 %files -f rpm.lang
223 %defattr(-,root,root)
224 %doc    COPYING GROUPS
225         /etc/rpm
226         /bin/rpm
227 %{_bindir}/rpm2cpio
228 %{_bindir}/rpmdb
229 %{_bindir}/rpmkeys
230 %{_bindir}/rpmquery
231 %{_bindir}/rpmverify
232 %{_bindir}/rpmqpack
233 %attr(0755, root, root) %dir %{rpmhome}
234 %{rpmhome}/macros
235 %{rpmhome}/macros.d
236 %{rpmhome}/rpmpopt*
237 %{rpmhome}/rpmrc
238 %{rpmhome}/tizen/macros
239 %{rpmhome}/tizen_macros
240 %{rpmhome}/rpm.supp
241 %{rpmhome}/tgpg
242 %{rpmhome}/platform
243
244 %dir    %{_libdir}/rpm-plugins
245         %{_libdir}/rpm-plugins/exec.so
246         %{_libdir}/librpm.so.*
247         %{_libdir}/librpmio.so.*
248     %{_libdir}/librpmbuild.so.*
249     %{_libdir}/librpmsign.so.*
250 %doc    %{_mandir}/man[18]/*.[18]*
251 %dir    /var/lib/rpm
252 %dir    %attr(755,root,root) /usr/src/packages/BUILD
253 %dir    %attr(755,root,root) /usr/src/packages/SPECS
254 %dir    %attr(755,root,root) /usr/src/packages/SOURCES
255 %dir    %attr(755,root,root) /usr/src/packages/SRPMS
256 %dir    %attr(755,root,root) /usr/src/packages/RPMS
257 %dir    %attr(755,root,root) /usr/src/packages/BUILDROOT
258 %dir    %attr(755,root,root) /usr/src/packages/RPMS/*
259
260 %files build
261 %defattr(-,root,root)
262 %{_bindir}/rpmbuild
263 %{_bindir}/gendiff
264 %{_bindir}/rpmspec
265 %{_bindir}/rpmsign
266
267 %{rpmhome}/tizen/find-*
268 %{rpmhome}/brp-*
269 %{rpmhome}/find-supplements*
270 %{rpmhome}/check-*
271 %{rpmhome}/debugedit
272 %{rpmhome}/find-debuginfo.sh
273 %{rpmhome}/find-lang.sh
274 %{rpmhome}/*provides*
275 %{rpmhome}/*requires*
276 %{rpmhome}/*deps*
277 %{rpmhome}/*.prov
278 %{rpmhome}/*.req
279 %{rpmhome}/macros.*
280 %{rpmhome}/fileattrs
281
282
283 %files devel
284 %defattr(644,root,root,755)
285 %{_bindir}/rpmgraph
286 /usr/include/rpm
287         %{_libdir}/librpm.so
288         %{_libdir}/librpmbuild.so
289         %{_libdir}/librpmio.so
290         %{_libdir}/librpmsign.so
291         %{_libdir}/pkgconfig/rpm.pc
292
293 %files security-plugin
294 %defattr(-,root,root)
295 %{_libdir}/rpm-plugins/msm.so
296 %config(noreplace) %{_sysconfdir}/device-sec-policy
297