chiark / gitweb /
[PATCH] klibc: version 1.0.3
[elogind.git] / klibc / klibc.spec.in
index f8bccc390e5ffb646e1af821ccbfe4c2de3b95f7..cab496b917fbfe7bcba7a07bfff22ff58394e9cb 100644 (file)
-%define _rpmdir rpms
-%define _builddir .
-
 Summary: A minimal libc subset for use with initramfs.
 Name: klibc
-Version: 0.89
+Version: @@VERSION@@
 Release: 1
 License: BSD/GPL
 Group: Development/Libraries
-URL: http://www.zytor.com/klibc
-Source: /dev/null
+URL: http://www.zytor.com/mailman/listinfo/klibc
+Source: http://www.kernel.org/pub/linux/libs/klibc-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
-Packager: Bryan O'Sullivan <bos@serpentine.com>
+BuildRequires: kernel >= 2.6.0
+Packager: H. Peter Anvin <hpa@zytor.com>
 Prefix: /usr
 Vendor: Starving Linux Artists
 
+%define klibcdir  %{_prefix}/lib/klibc
+%define libdocdir %{_docdir}/%{name}-%{version}-%{release}
+%define bindocdir %{_docdir}/%{name}-utils-%{version}-%{release}
+
 %description
 %{name} is intended to be a minimalistic libc subset for use with
 initramfs.  It is deliberately written for small size, minimal
-entanglement, and portability, not speed.  It is definitely a work in
-progress, and a lot of things are still missing.
+entanglement, and portability, not speed.
 
-%package kernheaders
-Summary: Kernel headers used during the build of klibc.
+%package devel
+Summary: Libraries and tools needed to compile applications against klibc.
 Group: Development/Libraries
+Requires: klibc = %{version}-%{release}
 
-%description kernheaders
-This package contains the set of kernel headers that were required to
-build %{name} and the utilities that ship with it.  This may or may
-not be a complete enough set to build other programs that link against
-%{name}.  If in doubt, use real kernel headers instead.
+%description devel
+This package contains the link libraries, header files, and gcc
+wrapper scripts needed to compile applications against klibc.
 
 %package utils
-Summary: Small statically-linked utilities built with klibc.
+Summary: Small utilities built with klibc.
 Group: Utilities/System
+Requires: klibc = %{version}-%{release}
 
 %description utils
-
-This package contains a collection of programs that are statically
-linked against klibc.  These duplicate some of the functionality of a
-regular Linux toolset, but are typically much smaller than their
-full-function counterparts.  They are intended for inclusion in
-initramfs images and embedded systems.
+This package contains a collection of programs that are linked against
+klibc.  These duplicate some of the functionality of a regular Linux
+toolset, but are typically much smaller than their full-function
+counterparts.  They are intended for inclusion in initramfs images and
+embedded systems.
 
 %prep
-if [ ! -L linux ]; then
-    echo "*** You must have a symlink named linux to build klibc" 1>&2
-    exit 1
-fi
-if [ ! -f linux/include/asm/page.h ]; then
-    echo "*** You need to 'make prepare' in the linux tree before building klibc" 1>&2
-    exit 1
-fi
-mkdir -p %{buildroot} %{_rpmdir}
+%setup -q
+cp -dRs /lib/modules/`uname -r`/build ./linux
+# Shouldn't need this when getting the build tree from /lib/modules
+# make -C linux defconfig ARCH=%{_target_cpu}
+# make -C linux prepare ARCH=%{_target_cpu}
+# Deal with braindamage in RedHat's kernel-source RPM
+rm -f linux/include/linux/config.h
+cat <<EOF > linux/include/linux/config.h
+#ifndef _LINUX_CONFIG_H
+#define _LINUX_CONFIG_H
+
+#include <linux/autoconf.h>
+
+#endif
+EOF
+mkdir -p %{buildroot}
 
 %build
-make
+make  ARCH=%{_target_cpu} prefix=%{_prefix} bindir=%{_bindir} \
+       INSTALLDIR=%{klibcdir} mandir=%{_mandir} INSTALLROOT=%{buildroot}
 
 %install
 rm -rf %{buildroot}
+make  ARCH=%{_target_cpu} prefix=%{_prefix} bindir=%{_bindir} \
+       INSTALLDIR=%{klibcdir} mandir=%{_mandir} INSTALLROOT=%{buildroot} \
+       install
+
+# Make the .so file in /lib a hardlink (they will be expanded as two
+# files automatically if it crosses filesystems when extracted.)
+ln -f %{buildroot}%{klibcdir}/lib/klibc-*.so %{buildroot}/lib
 
-dest=%{buildroot}/%{prefix}
-lib=$dest/%{_lib}/klibc
-inc=$dest/include/klibc
-exe=$dest/libexec/klibc
-doc=$dest/share/doc/%{name}-%{version}
-udoc=$dest/share/doc/%{name}-utils-%{version}
-
-# First, the library.
-
-install -dD -m 755 $lib $inc/kernel $exe $doc $udoc
-install -m 755 klibc/klibc.so $lib
-install -m 644 klibc/libc.a $lib
-install -m 644 klibc/crt0.o $lib
-install -m 644 klibc/libc.so.hash $lib
-ln $lib/klibc.so $lib/libc.so
-ln $lib/klibc.so $lib/klibc-$(cat $lib/libc.so.hash).so
-
-# Next, the generated binaries.
-
-install -m 755 ash/sh $exe
-install -m 755 gzip/gzip $exe
-ln $exe/gzip $exe/gunzip
-ln $exe/gzip $exe/zcat
-install -m 755 ipconfig/ipconfig $exe
-install -m 755 kinit/kinit $exe
-install -m 755 nfsmount/nfsmount $exe
-for i in chroot dd fstype mkdir mkfifo mount umount; do
-    install -m 755 utils/$i $exe
-done
-
-# The docs.
-
-install -m 444 README $doc
-install -m 444 klibc/README $doc/README.klibc
-install -m 444 klibc/arch/README $doc/README.klibc.arch
-
-install -m 444 gzip/COPYING $udoc/COPYING.gzip
-install -m 444 gzip/README $udoc/README.gzip
-install -m 444 ipconfig/README $udoc/README.ipconfig
-install -m 444 kinit/README $udoc/README.kinit
-
-# Finally, the include files.
-
-bitsize=$(make --no-print-directory -C klibc bitsize)
-cp --parents $(find klibc/include \( -name CVS -o -name SCCS \) -prune \
-    -o -name '*.h' -print) $inc
-mv $inc/klibc $inc/klibc.$$
-mv $inc/klibc.$$/include/* $inc
-mv $inc/bits$bitsize/bitsize $inc
-rm -rf $inc/klibc.$$ $inc/bits[0-9]*
-pushd klibc/arch/%{_arch}/include
-cp --parents -f $(find . \( -name CVS -o -name SCCS \) -prune \
-    -o -name '*.h' -print) $inc
-popd
-
-# Yeugh.  Find the transitive closure over all kernel headers included
-# by klibc, and copy them into place.
-
-find . -name '.*.d' | xargs -r sed -e 's,[ \t][ \t]*,\n,g' | sed -n -e 's,^\.\./linux/include/,,p' | sort | uniq | (cd linux/include && xargs -ri cp --parents '{}' $inc/kernel)
+# Install the docs
+mkdir -p %{buildroot}%{bindocdir} %{buildroot}%{libdocdir}
+install -m 444 README %{buildroot}%{libdocdir}
+install -m 444 klibc/README %{buildroot}%{libdocdir}/README.klibc
+install -m 444 klibc/arch/README %{buildroot}%{libdocdir}/README.klibc.arch
+
+install -m 444 gzip/COPYING %{buildroot}%{bindocdir}/COPYING.gzip
+install -m 444 gzip/README %{buildroot}%{bindocdir}/README.gzip
+install -m 444 ipconfig/README %{buildroot}%{bindocdir}/README.ipconfig
+install -m 444 kinit/README %{buildroot}%{bindocdir}/README.kinit
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+#
+# Note: libc.so and interp.o are technically -devel files, but
+# put them in this package until we can make really, really sure
+# the dependency system can avoid confusion.  (In fact, it would be
+# good to eventually get them out of here, so that multiple runtimes
+# can be installed should it be necessary.)
+#
 %files
 %defattr(-,root,root,-)
-%docdir %{prefix}/share/doc/%{name}-%{version}
-%{prefix}/%{_lib}/klibc
-%dir %{prefix}/include/klibc
-%{prefix}/include/klibc/*.h
-%{prefix}/include/klibc/arpa
-%{prefix}/include/klibc/bitsize
-%{prefix}/include/klibc/klibc
-%{prefix}/include/klibc/net
-%{prefix}/include/klibc/netinet
-%{prefix}/include/klibc/sys
-%{prefix}/share/doc/%{name}-%{version}
-
-%files kernheaders
+/lib/klibc-*.so
+%{klibcdir}/lib/*.so
+%{klibcdir}/lib/interp.o
+
+%files devel
 %defattr(-,root,root,-)
-%{prefix}/include/klibc/kernel
+%{klibcdir}/include
+%{klibcdir}/lib/*.a
+%{klibcdir}/lib/crt0.o
+%{_bindir}/klcc
+%doc %{_mandir}/man1/*
+%doc %{libdocdir}/*
 
 %files utils
 %defattr(-,root,root,-)
-%{prefix}/libexec/klibc
-%docdir %{prefix}/share/doc/%{name}-utils-%{version}
-%{prefix}/share/doc/%{name}-utils-%{version}
+%{klibcdir}/bin
+%doc %{bindocdir}/*
 
 %changelog
+* Tue Mar 1 2005 H. Peter Anvin <hpa@zytor.com>
+- New "make install" scheme, klcc
+
+* Tue Jul 6 2004 H. Peter Anvin <hpa@zytor.com>
+- Update to use kernel-source RPM for the kernel symlink.
+
 * Sat Nov 29 2003 Bryan O'Sullivan <bos@serpentine.com> - 
 - Initial build.