%define POM patch-o-matic-ng-20041218 %define kernel_dir linux-%{version} %define iptables_dir iptables-1.3.1 %define crypto_loop_dir loop-AES-v3.0a # use openwall patch for kernel [0/1] %define openwall_kernel 1 # use crypto loop patches # better to use dm-crypt anyway, since crypto loop is obsoleted already %define crypto_loop 1 %define buildsource 1 # /usr/src/%{kslnk} -> /usr/src/linux-%{KVERREL} %define kslnk linux-2.4 #%define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE} # # RPM magic # %define _missing_doc_files_terminate_build 0 %define _unpackaged_files_terminate_build 0 # disable build root strip policy %define __spec_install_post /usr/lib/rpm/brp-compress || : %if %{openwall_kernel} %define _ow ow1 %define _ver %{version}-%{_ow} %else %define _ver %{version} %endif Name: kernel Summary: The Linux Kernel Version: 2.4.31 Release: 2 License: GPLv2 Group: System Environment/Kernel Vendor: The Linux Community URL: http://www.kernel.org ExclusiveOS: Linux Provides: kernel = %{version} Autoreqprov: no BuildPreReq: modutils >= 2.4.14-1, patch >= 2.5.4, bash >= 2.03, sh-utils, tar BuildPreReq: bzip2, findutils, dev, gzip, m4, perl BuildRequires: gcc >= 2.96-98 Source0: http://ftp.kernel.org/pub/linux/kernel/v2.4/%{kernel_dir}.tar.bz2 Source3: http://netfilter.org/files/%{iptables_dir}.tar.bz2 Source4: http://netfileter.org/files/%{POM}.tar.bz2 %if %{crypto_loop} Source5: http://loop-aes.sourceforge.net/loop-AES-latest.tar.bz2 %endif Source9: kernel-config-%{version}.gz # http://www.polbox.com/h/hs001/linux-2.4.27-mppe-mppc-1.1.patch.gz Patch0: linux-%{version}-mppe-mppc-1.3.patch.gz # http://www.ssi.bg/~alex/esfq/esfq-0.2-2.4.18.tar.gz Patch1: linux-2.4.18-esfq.diff.gz # http://openwall.com/linux/linux-2.4.31-ow1.tar.gz Patch2: linux-%{_ver}.diff.gz # ftp://ftp.suse.com/pub/people/mason/patches/data-logging/2.4.25/ Patch31: 01-reiserfs-free-blocks.diff.gz Patch32: 02-akpm-b_journal_head.diff.gz Patch33: 03-reiserfs-sync_fs-4.diff.gz Patch34: 04-data-logging-40.diff.gz Patch35: 05-write_times.diff.gz Patch36: 06-reiserfs-quota-28.diff.gz Patch37: 07-kinode-10.diff.gz Patch600: linux-2.4.0-nonintconfig.patch BuildRoot: /var/tmp/%{name}-%{PACKAGE_VERSION}-root %description The kernel package contains the Linux kernel (vmlinuz), the core of your Red Hat Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. %package source Summary: The source code for the Linux kernel. Group: Development/System Prereq: fileutils Requires: gawk, make Requires: gcc >= 2.96-98 %description source The kernel-source package contains the source code files for the Linux kernel. These source files are needed to build custom/third party device drivers. The source files can also be used to build a custom kernel that is better tuned to your particular hardware. Make sure you understand the support implications of building your own custom kernel. %prep ## ## Extracting sources ## %setup -q -n %{kernel_dir} %setup -q -D -T -b 3 -n %{kernel_dir} %setup -q -D -T -b 4 -n %{kernel_dir} %if %{crypto_loop} %setup -q -D -T -b 5 -n %{kernel_dir} %endif ## ## Patch sets ## # mppe/mppc %patch0 -p1 # esfq %patch1 -p1 # openwall %if %{openwall_kernel} %patch2 -p1 %endif # suse patches %patch31 -p1 %patch32 -p1 %patch33 -p1 %patch34 -p1 %patch35 -p1 %patch36 -p1 %patch37 -p1 # This patch adds a "make oldconfig_nonint" which is non-interactive and # also gives a list of missing options at the end. Useful for automated # builds (as used in the Red Hat buildsystem). %patch600 -p1 %build rm -rf $RPM_BUILD_ROOT ## patch-o-matic pushd ../%{POM} ## feed 'n' to all not-cleanly applied patches echo n | KERNEL_DIR=../%{kernel_dir} \ IPTABLES_DIR=../%{iptables_dir} \ ./runme --batch pending popd ## configure kernel make -s mrproper ## install config ## crypto loop, make sure we don't have CONFIG_BLK_DEV_LOOP != n %if %{crypto_loop} gzip -dc %{SOURCE9} | sed 's/^CONFIG_BLK_DEV_LOOP=./# CONFIG_BLK_DEV_LOOP is not set/' > ${RPM_BUILD_DIR}/%{kernel_dir}/.config %else gzip -dc %{SOURCE9} > ${RPM_BUILD_DIR}/%{kernel_dir}/.config %endif # We do make oldconfig twice; otherwise, make oldconfig tends to get stuff # wrong in the light of cyclic dependencies # make -s oldconfig_nonint # make -s oldconfig_nonint ## deprecated by using redhat oldconfig_nonint patch ## 20 questions with default answer perl -e 'print "\n" x 30' | make oldconfig cp .config kernel.config echo "MAKE DEPEND ..." make -s dep make -s include/linux/version.h echo "BUILDING KERNEL %{version}..." make -s bzImage echo "BUILDING MODULES ..." make -s modules echo "INSTALLING MODULES ..." mkdir -p $RPM_BUILD_ROOT/lib/modules/%{_ver} make -s INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=%{_ver} ## build crypto loop here %if %{crypto_loop} echo "BUILDING CRYPTO_LOOP ..." pushd ../%{crypto_loop_dir} make -s LINUX_SOURCE=../%{kernel_dir} INSTALL_MOD_PATH=$RPM_BUILD_ROOT RUNDM=n popd %endif ### ### install ### %install echo "INSTALL STAGE ..." # INSTALL_MOD_PATH=$RPM_BUILD_ROOT make modules_install mkdir -p $RPM_BUILD_ROOT/{boot,lib,lib/modules} %if %{buildsource} mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{version} # generated binaries should be removed; we don't want kernel-source to depend on glibc rm -f scripts/mkdep # copy the source over tar cf - . | tar xf - -C $RPM_BUILD_ROOT/usr/src/linux-%{version} # set the EXTRAVERSION to custom, so that people who follow a kernel # building howto don't accidentally overwrite their currently working moduleset #perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{release}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile # Linux talks about modules licensing #install -m 644 %{SOURCE10} $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} # clean up the destination make -s mrproper -C $RPM_BUILD_ROOT/usr/src/linux-%{version} #gzip -dc %{SOURCE9} > $RPM_BUILD_ROOT/usr/src/linux-%{version}/.config cp .config $RPM_BUILD_ROOT/usr/src/linux-%{version}/.config # needs a redhat oldconfig_nonint patch make -s oldconfig_nonint -C $RPM_BUILD_ROOT/usr/src/linux-%{version} make -s symlinks -C $RPM_BUILD_ROOT/usr/src/linux-%{version} make -s include/linux/version.h -C $RPM_BUILD_ROOT/usr/src/linux-%{version} # this generates modversions info which we want to include and we may as # well include the depends stuff as well, after we fix the paths make -s depend -C $RPM_BUILD_ROOT/usr/src/linux-%{version} find $RPM_BUILD_ROOT/usr/src/linux-%{version} -name ".*depend" | \ while read file ; do mv $file $file.old sed -e "s|[^ ]*\(/usr/src/linux\)|\1|g" < $file.old > $file rm -f $file.old done ## redhat kernel.spec have also this #for i in $RPM_BUILD_ROOT/lib/modules/*; do # rm -f $i/modules.* #done rm -f $RPM_BUILD_ROOT/usr/src/linux-%{version}/scripts/mkdep %endif rm -f $RPM_BUILD_ROOT/lib/modules/%{_ver}/build ln -sf ../../../usr/src/linux-%{version} $RPM_BUILD_ROOT/lib/modules/%{_ver}/build install -m 644 arch/i386/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-%{_ver} install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-%{_ver} install -m 644 .config $RPM_BUILD_ROOT/boot/config-%{_ver} # remove files that will be auto generated by depmod at rpm -i time rm -f $RPM_BUILD_ROOT/lib/modules/%{_ver}/modules.* # remove legacy pcmcia symlink that's no longer useful rm -rf $RPM_BUILD_ROOT/lib/modules/%{_ver}/pcmcia ### ### clean ### %clean #echo -rf $RPM_BUILD_ROOT ### ### scripts ### %post cd /boot #[ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade #[ -x /sbin/mkkerneldoth ] && /sbin/mkkerneldoth [ -x /sbin/new-kernel-pkg ] && /sbin/new-kernel-pkg --mkinitrd --depmod --install %{_ver} exit 0 %post source cd /usr/src rm -f %{kslnk} ln -snf linux-%{version} %{kslnk} ### ### file lists ### %files %defattr (-, root, root) #/boot/* /boot/vmlinuz-%{_ver} /boot/System.map-%{_ver} /boot/config-%{_ver} %dir /lib/modules %dir /lib/modules/%{_ver} /lib/modules/%{_ver}/kernel /lib/modules/%{_ver}/build %if %{crypto_loop} /lib/modules/%{_ver}/block/loop.o %endif %if %{buildsource} %files source %defattr(-,root,root) %dir /usr/src/linux-%{version} /usr/src/linux-%{version}/kernel.config /usr/src/linux-%{version}/.config /usr/src/linux-%{version}/COPYING* /usr/src/linux-%{version}/CREDITS /usr/src/linux-%{version}/Documentation /usr/src/linux-%{version}/MAINTAINERS /usr/src/linux-%{version}/Makefile /usr/src/linux-%{version}/README /usr/src/linux-%{version}/REPORTING-BUGS /usr/src/linux-%{version}/Rules.make /usr/src/linux-%{version}/arch /usr/src/linux-%{version}/drivers /usr/src/linux-%{version}/crypto /usr/src/linux-%{version}/fs /usr/src/linux-%{version}/init /usr/src/linux-%{version}/ipc /usr/src/linux-%{version}/kernel /usr/src/linux-%{version}/lib /usr/src/linux-%{version}/mm /usr/src/linux-%{version}/net /usr/src/linux-%{version}/scripts /usr/src/linux-%{version}/include #/usr/src/linux-%{version}/tmp_include_depends /usr/src/linux-%{version}/security /usr/src/linux-%{version}/.depend /usr/src/linux-%{version}/.hdepend %endif %changelog * Sat Jul 9 2005 Anatoly Pugachev 2.4.31-1 - iptables-1.3.1 - rebuild * Tue Dec 28 2004 Anatoly Pugachev 2.4.28-2 - added crypto loop support * Sun Dec 19 2004 Anatoly Pugachev 2.4.28-1 - remake kernel-spec based on redhat kernel.spec file from kernel-2.4.21-20.EL.src.rpm - rebuild * Wed Sep 08 2004 Anatoly Pugachev 2.4.27-1 - first build