On Wed, 2005-06-29 at 18:23 +0200, Ralf Corsepius wrote:
> I honestly don't care which is the base and which is the
subpackage. The
> biggest issue I see is with arch determination, since they HAVE to be
> the same between base and subpackage.
Not, if you separate "building the rpm" from "releasing the rpm".
Example:
# rpm -q --qf '%{ARCH} %{SOURCERPM}\n' glibc-headers glibc
i386 glibc-2.3.5-10.src.rpm
i686 glibc-2.3.5-10.src.rpm
Thats a very good point, but it will certainly make conditionalizing the
spec file fun. :)
I'm not opposed to that.
Example spec:
# This is defined by the buildsystem, NOT on a per package basis.
#%define kver 2.6.11-1.1369_FC4
%define cleankver %(echo %{kver} | sed s,-,_,g)
%define kernelonlyarches i586 i686 ppc64 sparc64
%define userspacearches i386 ppc sparc
%define kernelanduserarches ia64 x86_64
Name: foo
Version: 0.3.6
Release: 1
Summary: Userspace components for foo
Group: System Environment/Base
License: Whatever
URL:
http://www.example.com/foo
Source0:
http://www.example.com/foo/foo-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: kernel-module-%{name}
BuildRequires: kernel-devel-%{_target_cpu} = %{kver}
ExclusiveArch: %{kernelonlyarches} %{userspacearches} %{kernelanduserarches}
%description
These are userspace libraries and binaries to make the foo module usable.
%package devel
Group: Development/Libraries
Summary: Development headers and libraries for foo
Requires: %{name} = %{version}-%{release}
%description devel
This package contains the include files and static libraries for
developing applications that use foo.
%package -n kernel-module-%{name}
Group: System Environment/Base
Version: %{version}
Release: %{release}.%{cleankver}
Requires: kernel-%{_target_cpu} = %{kver}
Provides: kernel-module
%description -n kernel-module-%{name}
This package contains the foo module compiled for kernel %{kver} on %{_target_cpu}.
%prep
%setup -q
%build
make %{?_smp_mflags} ...
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
%post -n kernel-module-%{name}
[ $1 -eq 1 ] && depmod -ae -F /boot/System.map-%{kver} %{kver} >/dev/null || :
%postun -n kernel-module-%{name}
depmod -ae -F /boot/System.map-%{kver} %{kver} >/dev/null || :
%ifarch %{userspacearches} %{kernelanduserarches}
%files
%defattr(-,root,root,0755)
# docs go here
%doc ...
%{_bindir}/fooexec
%{_libdir}/*.so.*
%files devel
%defattr(-,root,root,0755)
%{_includedir}/*
%{_libdir}/*.a
%{_libdir}/*.so
%endif
%ifarch %{kernelspacearches} %{kernelanduserarches}
%files -n kernel-module-%{name}
%defattr(-,root,root,-)
# This package should NOT have anything besides the module, to avoid file conflicts.
/lib/modules/%{kver}/...
%endif
%changelog
* Gud Fez 74 6395 Foobly Barowitz <foobly(a)barowitz.tld>
- Initial RPM release
~spot
--
Tom "spot" Callaway: Red Hat Sales Engineer || GPG Fingerprint: 93054260
Fedora Extras Steering Committee Member (RPM Standards and Practices)
Aurora Linux Project Leader:
http://auroralinux.org
Lemurs, llamas, and sparcs, oh my!