# rawhide doesn't have new enough lzma yet %bcond_with lzma # sqlite backend is broken atm, disabled for now %bcond_with sqlite # just for giggles, option to build with internal Berkeley DB %bcond_with int_bdb # not yet, a missing test-data file in beta1 tarball causes two tests to fail %bcond_with check # switch rpm itself back to md5 file digests until the dust settles a bit %define _source_filedigest_algorithm 0 %define _binary_filedigest_algorithm 0 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} %define rpmhome /usr/lib/rpm %define rpmver 4.7.0 %define snapver beta1 %define srcver %{rpmver}-%{snapver} %define bdbver 4.7.25 %define dbprefix db Summary: The RPM package management system Name: rpm Version: %{rpmver} Release: 0.%{snapver}.1%{?dist} Group: System Environment/Base Url: http://www.rpm.org/ Source0: http://rpm.org/releases/testing/%{name}-%{srcver}.tar.bz2 %if %{with int_bdb} Source1: db-%{bdbver}.tar.gz %endif Source10: desktop-file.prov Source11: fontconfig.prov Patch0: rpm-4.7.0-devel-autodep.patch Patch1: rpm-4.5.90-pkgconfig-path.patch Patch2: rpm-4.5.90-gstreamer-provides.patch # Fedora specspo is setup differently than what rpm expects, considering # this as Fedora-specific patch for now Patch3: rpm-4.6.0-fedora-specspo.patch # Patches already in upstream # These are not yet upstream Patch300: rpm-4.7.0-extra-provides.patch # Partially GPL/LGPL dual-licensed and some bits with BSD # SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD License: GPLv2+ Requires(post): coreutils %if %{without int_bdb} # db recovery tools, rpmdb_util symlinks Requires: db4-utils = %{bdbver} %endif Requires: popt >= 1.10.2.1 Requires: crontabs Requires: logrotate Requires: curl %if %{without int_bdb} BuildRequires: db4-devel = %{bdbver} %endif %if %{with check} BuildRequires: fakechroot %endif # XXX generally assumed to be installed but make it explicit as rpm # is a bit special... BuildRequires: redhat-rpm-config BuildRequires: gawk BuildRequires: elfutils-devel >= 0.112 BuildRequires: elfutils-libelf-devel BuildRequires: readline-devel zlib-devel BuildRequires: nss-devel # The popt version here just documents an older known-good version BuildRequires: popt-devel >= 1.10.2 BuildRequires: file-devel BuildRequires: gettext-devel BuildRequires: libselinux-devel BuildRequires: ncurses-devel BuildRequires: bzip2-devel >= 0.9.0c-2 BuildRequires: python-devel >= 2.2 BuildRequires: lua-devel >= 5.1 %if %{with lzma} BuildRequires: lzma-devel >= 4.42 %endif %if %{with sqlite} BuildRequires: sqlite-devel %endif # Not enabling these yet # BuildRequires: libcap-devel libacl-devel BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description The RPM Package Manager (RPM) is a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating software packages. Each software package consists of an archive of files along with information about the package like its version, a description, etc. %package libs Summary: Libraries for manipulating RPM packages Group: Development/Libraries License: GPLv2+ and LGPLv2+ with exceptions Requires: rpm = %{version}-%{release} %description libs This package contains the RPM shared libraries. %package devel Summary: Development files for manipulating RPM packages Group: Development/Libraries License: GPLv2+ and LGPLv2+ with exceptions Requires: rpm = %{version}-%{release} Requires: pkgconfig Requires: nss-devel Requires: libselinux-devel Requires: elfutils-libelf-devel Requires: popt-devel %if %{with lzma} Requires: lzma-devel >= 4.42 %endif %if %{with sqlite} Requires: sqlite-devel %endif %description devel This package contains the RPM C library and header files. These development files will simplify the process of writing programs that manipulate RPM packages and databases. These files are intended to simplify the process of creating graphical package managers or any other tools that need an intimate knowledge of RPM packages in order to function. This package should be installed if you want to develop programs that will manipulate RPM packages and databases. %package build Summary: Scripts and executable programs used to build packages Group: Development/Tools Requires: rpm = %{version}-%{release} Requires: elfutils >= 0.128 binutils Requires: findutils sed grep gawk diffutils file patch >= 2.5 Requires: unzip gzip bzip2 cpio lzma Requires: pkgconfig %description build The rpm-build package contains the scripts and executable programs that are used to build packages using the RPM Package Manager. %package python Summary: Python bindings for apps which will manipulate RPM packages Group: Development/Libraries Requires: rpm = %{version}-%{release} %description python The rpm-python package contains a module that permits applications written in the Python programming language to use the interface supplied by RPM Package Manager libraries. This package should be installed if you want to develop Python programs that will manipulate RPM packages and databases. %package apidocs Summary: API documentation for RPM libraries Group: Documentation BuildArch: noarch %description apidocs This package contains API documentation for developing applications that will manipulate RPM packages and databases. %prep %setup -q -n %{name}-%{srcver} %{?with_int_bdb:-a 1} %patch0 -p1 -b .devel-autodep %patch1 -p1 -b .pkgconfig-path %patch2 -p1 -b .gstreamer-prov %patch3 -p1 -b .fedora-specspo %patch300 -p1 -b .extra-prov %if %{with int_bdb} ln -s db-%{bdbver} db %endif %build %if %{without int_bdb} #CPPFLAGS=-I%{_includedir}/db%{bdbver} #LDFLAGS=-L%{_libdir}/db%{bdbver} %endif CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss`" CFLAGS="$RPM_OPT_FLAGS" export CPPFLAGS CFLAGS LDFLAGS # Using configure macro has some unwanted side-effects on rpm platform # setup, use the old-fashioned way for now only defining minimal paths. ./configure \ --prefix=%{_usr} \ --sysconfdir=%{_sysconfdir} \ --localstatedir=%{_var} \ --sharedstatedir=%{_var}/lib \ --libdir=%{_libdir} \ %{!?with_int_bdb: --with-external-db} \ %{?with_sqlite: --enable-sqlite3} \ --with-lua \ --with-selinux \ --enable-python make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make DESTDIR="$RPM_BUILD_ROOT" install # Save list of packages through cron mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily install -m 755 scripts/rpm.daily ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily/rpm mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d install -m 644 scripts/rpm.log ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/rpm install -p -m 755 %{SOURCE10} %{SOURCE11} ${RPM_BUILD_ROOT}%{rpmhome}/ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rpm mkdir -p $RPM_BUILD_ROOT/var/lib/rpm for dbi in \ Basenames Conflictname Dirnames Group Installtid Name Packages \ Providename Provideversion Requirename Requireversion Triggername \ Filedigests Pubkeys Sha1header Sigmd5 \ __db.001 __db.002 __db.003 __db.004 __db.005 __db.006 __db.007 \ __db.008 __db.009 do touch $RPM_BUILD_ROOT/var/lib/rpm/$dbi done # plant links to db utils as rpmdb_foo so existing documantion is usable %if %{without int_bdb} for dbutil in \ archive deadlock dump load printlog \ recover stat upgrade verify do ln -s ../../bin/%{dbprefix}_${dbutil} $RPM_BUILD_ROOT/%{rpmhome}/rpmdb_${dbutil} done ln -s ../../bin/berkeley_%{dbprefix}_svc $RPM_BUILD_ROOT/%{rpmhome}/rpmdb_svc %endif %find_lang %{name} find $RPM_BUILD_ROOT -name "*.la"|xargs rm -f # avoid dragging in tonne of perl libs for an unused script chmod 0644 $RPM_BUILD_ROOT/%{rpmhome}/perldeps.pl %clean rm -rf $RPM_BUILD_ROOT %if %{with check} %check make check %endif %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig %posttrans # XXX this is klunky and ugly, rpm itself should handle this dbstat=/usr/lib/rpm/rpmdb_stat if [ -x "$dbstat" ]; then if "$dbstat" -e -h /var/lib/rpm 2>&1 | grep -q "doesn't match environment version \| Invalid argument"; then rm -f /var/lib/rpm/__db.* fi fi exit 0 %files -f %{name}.lang %defattr(-,root,root,-) %doc CHANGES GROUPS COPYING CREDITS ChangeLog doc/manual/[a-z]* %{_sysconfdir}/cron.daily/rpm %config(noreplace,missingok) %{_sysconfdir}/logrotate.d/rpm %dir %{_sysconfdir}/rpm %attr(0755, root, root) %dir /var/lib/rpm %attr(0644, rpm, rpm) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/lib/rpm/* %attr(0755, root, root) %dir %{rpmhome} /bin/rpm %{_bindir}/rpm2cpio %{_bindir}/rpmdb %{_bindir}/rpmsign %{_bindir}/rpmquery %{_bindir}/rpmverify %{_mandir}/man8/rpm.8* %{_mandir}/man8/rpm2cpio.8* # XXX this places translated manuals to wrong package wrt eg rpmbuild %lang(fr) %{_mandir}/fr/man[18]/*.[18]* %lang(ko) %{_mandir}/ko/man[18]/*.[18]* %lang(ja) %{_mandir}/ja/man[18]/*.[18]* %lang(pl) %{_mandir}/pl/man[18]/*.[18]* %lang(ru) %{_mandir}/ru/man[18]/*.[18]* %lang(sk) %{_mandir}/sk/man[18]/*.[18]* %{rpmhome}/macros %{rpmhome}/rpmpopt* %{rpmhome}/rpmrc %{rpmhome}/rpmdb_* %{rpmhome}/rpm.daily %{rpmhome}/rpm.log %{rpmhome}/rpm.xinetd %{rpmhome}/rpm2cpio.sh %{rpmhome}/tgpg %{rpmhome}/platform %files libs %defattr(-,root,root) %{_libdir}/librpm*.so.* %files build %defattr(-,root,root) %{_bindir}/rpmbuild %{_bindir}/gendiff %{_mandir}/man1/gendiff.1* %{rpmhome}/brp-* %{rpmhome}/check-buildroot %{rpmhome}/check-files %{rpmhome}/check-prereqs %{rpmhome}/check-rpaths* %{rpmhome}/debugedit %{rpmhome}/find-debuginfo.sh %{rpmhome}/find-lang.sh %{rpmhome}/find-provides %{rpmhome}/find-requires %{rpmhome}/javadeps %{rpmhome}/mono-find-provides %{rpmhome}/mono-find-requires %{rpmhome}/osgideps.pl %{rpmhome}/perldeps.pl %{rpmhome}/libtooldeps.sh %{rpmhome}/pkgconfigdeps.sh %{rpmhome}/perl.prov %{rpmhome}/perl.req %{rpmhome}/tcl.req %{rpmhome}/pythondeps.sh %{rpmhome}/rpmdeps %{rpmhome}/config.guess %{rpmhome}/config.sub %{rpmhome}/mkinstalldirs %{rpmhome}/rpmdiff* %{rpmhome}/desktop-file.prov %{rpmhome}/fontconfig.prov %{rpmhome}/macros.perl %{rpmhome}/macros.python %{rpmhome}/macros.php %{_mandir}/man8/rpmbuild.8* %{_mandir}/man8/rpmdeps.8* %files python %defattr(-,root,root) %{python_sitearch}/rpm %files devel %defattr(-,root,root) %{_includedir}/rpm %{_libdir}/librp*[a-z].so %{_mandir}/man8/rpmgraph.8* %{_bindir}/rpmgraph %{_libdir}/pkgconfig/rpm.pc %files apidocs %defattr(-,root,root) %doc doc/librpm/html/* %changelog * Fri Mar 06 2009 Panu Matilainen - 4.7.0-0.beta1.1 - update to 4.7.0-beta1 (http://rpm.org/wiki/Releases/4.7.0) * Fri Feb 27 2009 Panu Matilainen - 4.6.0-11 - build rpm itself with md5 file digests for now to ensure upgradability * Thu Feb 26 2009 Panu Matilainen - 4.6.0-10 - handle NULL passed as EVR in rpmdsSingle() again (#485616) * Wed Feb 25 2009 Panu Matilainen - 4.6.0-9 - pull out python byte-compile syntax check for now * Mon Feb 23 2009 Panu Matilainen - 4.6.0-8 - make -apidocs sub-package noarch - fix source URL * Sat Feb 21 2009 Panu Matilainen - 4.6.0-7 - loosen up restrictions on dependency names (#455119) - handle inter-dependent pkg-config files for requires too (#473814) - error/warn on elf binaries in noarch package in build * Fri Feb 20 2009 Panu Matilainen - 4.6.0-6 - error out on uncompilable python code (Tim Waugh) * Tue Feb 17 2009 Jindrich Novy - 4.6.0-5 - remove two offending hunks from anyarch patch causing that RPMTAG_BUILDARCHS isn't written to SRPMs * Mon Feb 16 2009 Jindrich Novy - 4.6.0-4 - inherit group tag from the main package (#470714) - ignore BuildArch tags for anyarch actions (#442105) - don't check package BuildRequires when doing --rmsource (#452477) - don't fail because of missing sources when only spec removal is requested (#472427) * Mon Feb 16 2009 Panu Matilainen - 4.6.0-3 - updated fontconfig provide script - fc-query does all the hard work now * Mon Feb 09 2009 Panu Matilainen - 4.6.0-2 - build against db 4.7.x * Fri Feb 06 2009 Panu Matilainen - 4.6.0-1 - update to 4.6.0 final - revert libmagic looking into compressed files for now, breaks ooffice build * Fri Feb 06 2009 Panu Matilainen - 4.6.0-0.rc4.5 - enable fontconfig provides generation * Thu Feb 05 2009 Panu Matilainen - 4.6.0-0.rc4.4 - fixup rpm translation lookup to match Fedora specspo (#436941) * Wed Feb 04 2009 Panu Matilainen - 4.6.0-0.rc4.3 - extract mimehandler provides from .desktop files - preliminaries for extracting font provides (not enabled yet) - dont classify font metrics data as fonts - only run script dep extraction once per file, duh * Sat Jan 31 2009 Panu Matilainen - 4.6.0-0.rc4.2 - change platform sharedstatedir to something more sensible (#185862) - add rpmdb_foo links to db utils for documentation compatibility * Fri Jan 30 2009 Panu Matilainen - 4.6.0-0.rc4.1 - update to 4.6.0-rc4 - fixes #475582, #478907, #476737, #479869, #476201 * Fri Dec 12 2008 Panu Matilainen - 4.6.0-0.rc3.2 - add back defaultdocdir patch which hadn't been applied on 4.6.x branch yet * Fri Dec 12 2008 Panu Matilainen - 4.6.0-0.rc3.1 - add dist-tag, rebuild * Tue Dec 09 2008 Panu Matilainen - 4.6.0-0.rc3.1 - update to rpm 4.6.0-rc3 - fixes #475214, #474550, #473239 * Wed Dec 3 2008 Jeremy Katz - 4.6.0-0.rc2.9 - I built into the wrong place * Wed Dec 3 2008 Jeremy Katz - 4.6.0-0.rc2.8 - python 2.6 rebuild again * Wed Dec 03 2008 Panu Matilainen - make rpm-build require pkgconfig (#473978) * Tue Dec 02 2008 Panu Matilainen - fix pkg-config provide generation when pc's depend on each other (#473814) * Mon Dec 01 2008 Jindrich Novy - include rpmfileutil.h from rpmmacro.h, unbreaks net-snmp (#473420) * Sun Nov 30 2008 Panu Matilainen - rebuild for python 2.6 * Sat Nov 29 2008 Panu Matilainen - update to 4.6.0-rc2 - fixes #471820, #473167, #469355, #468319, #472507, #247374, #426672, #444661 - enable automatic generation of pkg-config and libtool dependencies #465377 * Fri Oct 31 2008 Panu Matilainen - adjust find-debuginfo for "file" output change (#468129) * Tue Oct 28 2008 Panu Matilainen - Florian's improved fingerprinting hash algorithm from upstream * Sat Oct 25 2008 Panu Matilainen - Make noarch sub-packages actually work - Fix defaultdocdir logic in installplatform to avoid hardwiring mandir * Fri Oct 24 2008 Jindrich Novy - update compat-db dependencies (#459710) * Wed Oct 22 2008 Panu Matilainen - never add identical NEVRA to transaction more than once (#467822) * Sun Oct 19 2008 Panu Matilainen - permit tab as macro argument separator (#467567) * Thu Oct 16 2008 Panu Matilainen - update to 4.6.0-rc1 - fixes #465586, #466597, #465409, #216221, #466503, #466009, #463447... - avoid using %%configure macro for now, it has unwanted side-effects on rpm * Wed Oct 01 2008 Panu Matilainen - update to official 4.5.90 alpha tarball - a big pile of misc bugfixes + translation updates - isa-macro generation fix for ppc (#464754) - avoid pulling in pile of perl dependencies for an unused script - handle both "invalid argument" and clear env version mismatch on posttrans * Thu Sep 25 2008 Jindrich Novy - don't treat %patch numberless if -P parameter is present (#463942) * Thu Sep 11 2008 Panu Matilainen - add hack to support extracting gstreamer plugin provides (#438225) - fix another macro argument handling regression (#461180) * Thu Sep 11 2008 Jindrich Novy - create directory structure for rpmbuild prior to build if it doesn't exist (#455387) - create _topdir if it doesn't exist when installing SRPM - don't generate broken cpio in case of hardlink pointing on softlink, thanks to pixel@mandriva.com * Sat Sep 06 2008 Jindrich Novy - fail hard if patch isn't found (#461347) * Mon Sep 01 2008 Jindrich Novy - fix parsing of boolean expressions in spec (#456103) (unbreaks pam, jpilot and maybe other builds) * Tue Aug 26 2008 Jindrich Novy - add support for noarch subpackages - fix segfault in case of insufficient disk space detected (#460146) * Wed Aug 13 2008 Panu Matilainen - 4.5.90-0.git8461.2 - fix archivesize tag generation on ppc (#458817) * Fri Aug 08 2008 Panu Matilainen - 4.5.90-0.git8461.1 - new snapshot from upstream - fixes #68290, #455972, #446202, #453364, #456708, #456103, #456321, #456913, #458260, #458261 - partial fix for #457360 * Thu Jul 31 2008 Florian Festi - 4.5.90-0.git8427.1 - new snapshot from upstream * Thu Jul 31 2008 Florian Festi - 4.5.90-0.git8426.10 - rpm-4.5.90-posttrans.patch - use header from rpmdb in posttrans to make anaconda happy * Sat Jul 19 2008 Panu Matilainen - 4.5.90-0.git8426.9 - fix regression in patch number handling (#455872) * Tue Jul 15 2008 Panu Matilainen - 4.5.90-0.git8426.8 - fix regression in macro argument handling (#455333) * Mon Jul 14 2008 Panu Matilainen - 4.5.90-0.git8426.7 - fix mono dependency extraction (adjust for libmagic string change) * Sat Jul 12 2008 Panu Matilainen - 4.5.90-0.git8426.6 - fix type mismatch causing funky breakage on ppc64 * Fri Jul 11 2008 Panu Matilainen - 4.5.90-0.git8426.5 - flip back to external bdb - fix tab vs spaces complaints from rpmlint - add dep for lzma and require unzip instead of zip in build (#310694) - add pkgconfig dependency to rpm-devel - drop ISA-dependencies for initial introduction - new snapshot from upstream for documentation fixes * Thu Jul 10 2008 Panu Matilainen - 4.5.90-0.git8424.4 - handle int vs external db in posttrans too * Wed Jul 08 2008 Panu Matilainen - 4.5.90-0.git8424.3 - require curl as external url helper * Wed Jul 08 2008 Panu Matilainen - 4.5.90-0.git8424.2 - add support for building with or without internal db * Wed Jul 08 2008 Panu Matilainen - rpm 4.5.90-0.git8424.1 (alpha snapshot) - adjust to build against Berkeley DB 4.5.20 from compat-db for now - add posttrans to clean up db environment mismatch after upgrade - forward-port devel autodeps patch * Tue Jul 08 2008 Panu Matilainen - adjust for rpmdb index name change - drop unnecessary vendor-macro patch for real - add ISA-dependencies among rpm subpackages - make lzma and sqlite deps conditional and disabled by default for now * Fri Feb 01 2008 Panu Matilainen - spec largely rewritten, truncating changelog