%define builduml 0
%define buildxen 0
%define builddoc 0
+%define headers 1
+
+%{!?pldistro:%global pldistro planetlab}
# default is to not build this - to override, use something like
# kernel-SPECVARS := iwlwifi=1
# rpm does not seem to have a syntax for defining overridable defaults
# any better solution would be more than welcome.
-%define build_iwlwifi %{?iwlwifi:1}%{!?iwlwifi:0}
+%{!?iwlwifi:%global iwlwifi 0}
+
+# default is to search the config file after pldistro
+# e.g. set
+# kernel-SPECVARS := kernelconfig=planetlab
+# to use the planetlab config from another pldistro
+# without having to manage symlinks
+%{!?kernelconfig:%global kernelconfig %{pldistro}}
# Versions of various parts
# for module-tag.py - sublevel is used for the version (middle) part of tag names
%define name linux-2.6
%define module_version_varname sublevel
-%define taglevel 36
+%define taglevel 48
#
# Polite request for people who spin their own kernel rpms:
# updated every time the PL kernel is updated.
%define vini_pl_patch 561
-%define release vs%{vsversion}.%{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%define requiresreboot 0
-%{!?pldistro:%global pldistro planetlab}
+%define kernelrelease vs%{vsversion}.%{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%define packagerelease %{kernelrelease}
%define signmodules 0
%define make_target bzImage
-%define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE}
+
+%if "%{distro}" == "Fedora" && %{distrorelease} >= 13
+%define KVERREL %{version}-%{kernelrelease}
+%else
+%define KVERREL %{PACKAGE_VERSION}-%{kernelrelease}
+%endif
# Override generic defaults with per-arch defaults
Group: System Environment/Kernel
License: GPLv2
Version: %{rpmversion}
-Release: %{release}
+Release: %{packagerelease}
ExclusiveOS: Linux
Provides: kernel = %{version}
Provides: kernel-drm = 4.3.0
-Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}
-Provides: kernel-smp = %{rpmversion}-%{release}
-Provides: kernel-smp-%{_target_cpu} = %{rpmversion}-%{release}
+Provides: kernel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}
+Provides: kernel-smp = %{rpmversion}-%{kernelrelease}
+Provides: kernel-smp-%{_target_cpu} = %{rpmversion}-%{kernelrelease}
Prereq: %{kernel_prereq}
Conflicts: %{kernel_dot_org_conflicts}
Conflicts: %{package_conflicts}
Source0: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-%{kversion}.tar.bz2
-Source11: %{pldistro}-%{kversion}-i686.config
-Source12: %{pldistro}-%{kversion}-x86_64.config
+Source11: %{kernelconfig}-%{kversion}-i686.config
+Source12: %{kernelconfig}-%{kversion}-x86_64.config
%if %{builduml}
-Source20: %{pldistro}-%{kversion}-i686-uml.config
+Source20: %{kernelconfig}-%{kversion}-i686-uml.config
%endif
%if %{buildxen}
-Source30: %{pldistro}-%{kversion}-i686-xenU.config
+Source30: %{kernelconfig}-%{kversion}-i686-xenU.config
%endif
# Mainline patches
%endif
Patch010: linux-2.6-010-e1000e.patch
+Patch015: linux-2.6-015-igb.patch
+# disabled
+#Patch016: linux-2.6-016-bnx2x.patch
Patch020: linux-2.6-020-build-id.patch
Patch030: linux-2.6-030-netns.patch
Patch040: linux-2.6-040-i_mutex-check.patch
+Patch050: linux-2.6-050-getline.patch
# These are patches picked up from Fedora/RHEL
Patch100: linux-2.6-100-build-nonintconfig.patch
+Patch150: linux-2.6-150-cciss-allow-kexec-to-work.patch
+Patch151: linux-2.6-151-cciss-SAS.patch
+
# Linux-VServer
Patch200: patch-%{rpmversion}-vs%{vsversion}.diff
Patch210: linux-2.6-210-vserver-cpu-sched.patch
Patch525: linux-2.6-525-sknid-elevator.patch
Patch526: linux-2.6-526-tun-tap.patch
Patch527: linux-2.6-527-iptables-classify-add-mark.patch
+Patch528: linux-2.6-528-enable-stdtun.patch
Patch530: linux-2.6-530-built-by-support.patch
Patch540: linux-2.6-540-oom-kill.patch
Patch550: linux-2.6-550-raise-default-nfile-ulimit.patch
%endif
Patch680: linux-2.6-680-htb-hysteresis-tso.patch
Patch690: linux-2.6-690-web100.patch
+Patch700: linux-2.6-700-fperm.patch
+Patch710: linux-2.6-710-avoid-64bits-addr-pcmcia.patch
+# This one is a backport from usptream.
+Patch720: linux-2.6-720-bonding-layer23.patch
+Patch721: linux-2.6-721-bonding-layer3.patch
+Patch722: linux-2.6-722-bonding-rr.patch
+
+Patch800: linux-2.6-800-fix-4-bit-apicid-assumption.patch
+
+Patch810: linux-2.6-810-ich10.patch
+
+Patch900: linux-2.6-900-ext3_mount_default_to_barrier.patch
+Patch910: linux-2.6-910-support_barriers_on_single_device_dm_devices.patch
+
+Patch950: linux-2.6.950-ext3_backports.patch
# See also the file named 'sources' here for the related checksums
# NOTE. iwlwifi should be in-kernel starting from 2.6.24
# see http://bughost.org/bugzilla/show_bug.cgi?id=1584
-%if %{build_iwlwifi}
+%if %{iwlwifi}
%define mac80211_version 10.0.4
Patch600: http://intellinuxwireless.org/mac80211/downloads/mac80211-%{mac80211_version}.tgz
%define iwlwifi_version 1.2.25
The kernel package contains the Linux kernel (vmlinuz), the core of any
Linux operating system. The kernel handles the basic functions
of the operating system: memory allocation, process allocation, device
-input and output, etc.
+input and output, etc.
+Configured with kernelconfig=%{kernelconfig} and iwlwifi=%{iwlwifi}
%package devel
Summary: Development package for building kernel modules to match the kernel.
Group: System Environment/Kernel
AutoReqProv: no
-Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}
-Provides: kernel-smp-devel = %{rpmversion}-%{release}
-Provides: kernel-smp-devel-%{_target_cpu} = %{rpmversion}-%{release}
+Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}
+Provides: kernel-smp-devel = %{rpmversion}-%{kernelrelease}
+Provides: kernel-smp-devel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}
Prereq: /usr/bin/find
%description devel
Group: System Environment/Kernel
Provides: kernel = %{version}
-Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}xenU
+Provides: kernel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}xenU
Prereq: %{kernel_prereq}
Conflicts: %{kernel_dot_org_conflicts}
Conflicts: %{package_conflicts}
Summary: Development package for building kernel modules to match the kernel.
Group: System Environment/Kernel
AutoReqProv: no
-Provides: kernel-xenU-devel-%{_target_cpu} = %{rpmversion}-%{release}
-Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}xenU
-Provides: kernel-devel = %{rpmversion}-%{release}xenU
+Provides: kernel-xenU-devel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}
+Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}xenU
+Provides: kernel-devel = %{rpmversion}-%{kernelrelease}xenU
Prereq: /usr/sbin/hardlink, /usr/bin/find
%description xenU-devel
%package uml-devel
Summary: Development package for building kernel modules to match the UML kernel.
Group: System Environment/Kernel
-Provides: kernel-uml-devel-%{_target_cpu} = %{rpmversion}-%{release}
-Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}smp
-Provides: kernel-devel = %{rpmversion}-%{release}smp
+Provides: kernel-uml-devel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}
+Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}smp
+Provides: kernel-devel = %{rpmversion}-%{kernelrelease}smp
AutoReqProv: no
Prereq: /usr/sbin/hardlink, /usr/bin/find
Group: System Environment/Kernel
Provides: kernel = %{version}
Provides: kernel-drm = 4.3.0
-Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}
+Provides: kernel-%{_target_cpu} = %{rpmversion}-%{kernelrelease}
%description vserver
VServers do not require and cannot use kernels, but some RPMs have
(e.g. tcpdump). This package installs no files but provides the
necessary dependencies to make rpm and yum happy.
+%package headers
+Summary: Kernel header
+Group: System Environment/Kernel
+
+%description headers
+This package contains the sanitized kernel headers.
%prep
# First we unpack the kernel tarball.
cd kernel-%{kversion}
fi
+%if %{requiresreboot}
+echo "This is a trivial maintenance update. There will be no reboot following installation."
+%endif
+
KERNEL_PREVIOUS=vanilla
# Dark RPM-magic to apply each patch to a hardlinked copy of the tree.
%define ApplyPatch() \
%endif
%ApplyPatch 10
+%ApplyPatch 15
+%if 0
+%ApplyPatch 16
+%endif
%ApplyPatch 20
# NetNS patch for VINI
%ApplyPatch 30
%endif
%ApplyPatch 40
+%ApplyPatch 50
%ApplyPatch 100
+%ApplyPatch 150
+%ApplyPatch 151
+
%ApplyPatch 200
%ApplyPatch 210
%ApplyPatch 220
%ApplyPatch 525
%ApplyPatch 526
%ApplyPatch 527
+%ApplyPatch 528
%ApplyPatch 530
%ApplyPatch 540
%ApplyPatch 670
%endif
%ApplyPatch 680
-%ApplyPatch 690
+%ApplyPatch 700
+%ApplyPatch 710
+%ApplyPatch 720
+%ApplyPatch 721
+%ApplyPatch 722
+%ApplyPatch 800
+%ApplyPatch 810
+
+%ApplyPatch 900
+%ApplyPatch 910
+%ApplyPatch 950
# NetNS conflict-resolving patch for VINI. Will work with patch vini_pl_patch-1 but may
# break with later patches.
%ApplyPatch %vini_pl_patch
%endif
-%if %{build_iwlwifi}
+%if %{iwlwifi}
# Run the mac80211 stuff in the kernel tree holding the last patch
tar -xzf %{PATCH600}
pushd mac80211-%{mac80211_version}
# Pick the right config file for the kernel we're building
if [ -n "$Flavour" ] ; then
- Config=%{pldistro}-%{kversion}-%{_target_cpu}-$Flavour.config
+ Config=%{kernelconfig}-%{kversion}-%{_target_cpu}-$Flavour.config
DevelDir=/usr/src/kernels/%{KVERREL}-$Flavour-%{_target_cpu}
DevelLink=/usr/src/kernels/%{KVERREL}$Flavour-%{_target_cpu}
else
- Config=%{pldistro}-%{kversion}-%{_target_cpu}.config
+ Config=%{kernelconfig}-%{kversion}-%{_target_cpu}.config
DevelDir=/usr/src/kernels/%{KVERREL}-%{_target_cpu}
DevelLink=
fi
- KernelVer=%{version}-%{release}$Flavour
+ KernelVer=%{version}-%{kernelrelease}$Flavour
echo BUILDING A KERNEL FOR $Flavour %{_target_cpu}...
# make sure EXTRAVERSION says what we want it to say
- perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?patchlevel:.%{patchlevel}}-%{release}$Flavour/" Makefile
+ perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?patchlevel:.%{patchlevel}}-%{kernelrelease}$Flavour/" Makefile
# and now to start the build process
make -s ARCH=$Arch nonint_oldconfig > /dev/null
make -s ARCH=$Arch %{?_smp_mflags} $MakeTarget
make -s ARCH=$Arch %{?_smp_mflags} modules || exit 1
+%if %{headers}
+ make -s ARCH=$Arch INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr
+ find $RPM_BUILD_ROOT/%{_includedir} -name \*.cmd -delete
+ rm -f $RPM_BUILD_ROOT/%{_includedir}/{..,.}{check,install}*
+ rm -rf $RPM_BUILD_ROOT/usr/include/scsi
+%endif
-%if %{build_iwlwifi}
+%if %{iwlwifi}
# build the iwlwifi driver
make -C %{_builddir}/kernel-%{kversion}/iwlwifi-%{iwlwifi_version} ARCH=$Arch \
KSRC=%{_builddir}/kernel-%{kversion}/linux-%{_target_cpu}-%{kversion}$Flavour
mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer
make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer
-%if %{build_iwlwifi}
+%if %{iwlwifi}
# install iwlwifi
# make -C %{_builddir}/kernel-%{kversion}/iwlwifi-%{iwlwifi_version} ARCH=$Arch \
# KSRC=%{_builddir}/kernel-%{kversion}/linux-%{_target_cpu}-%{kversion}$Flavour \
fi
fi
-[ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade %{rpmversion}-%{release}
+[ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade %{rpmversion}-%{kernelrelease}
#/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install %{KVERREL}
# Older modutils do not support --package option
/sbin/new-kernel-pkg --mkinitrd --depmod --install %{KVERREL}
}
popd > /dev/null
+%if %{requiresreboot}
# ask for a reboot
mkdir -p /etc/planetlab
touch /etc/planetlab/update-reboot
+%endif
%post devel
[ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
%dir %{_datadir}/doc/kernel-doc-%{kversion}
%endif
+%if %{headers}
+%files headers
+%defattr(-,root,root)
+%dir %{_includedir}
+%{_includedir}/*
+%endif
+
%changelog
+* Fri May 07 2010 S.Çağlar Onur <caglar@cs.princeton.edu> - linux-2.6-22-48
+- Support next generation of HP Smart Array SAS/SATA controllers
+
+* Thu Apr 15 2010 S.Çağlar Onur <caglar@cs.princeton.edu> - linux-2.6-22-47
+- Tagging 22 branch with following changes;
+- * Make barrier=1 for ext3 filesystem,
+- * Support barriers on single device dm devices,
+- * Introduce various ext3 related fixes,
+- * Fix conflict between glibc-headers kernel-headers packages
+
+* Tue Mar 16 2010 S.Çağlar Onur <caglar@cs.princeton.edu> - linux-2.6-22-46
+- every released package should have a tag in svn, so remove updatelevel from naming scheme and also change the variable name
+
+* Tue Mar 16 2010 S.Çağlar Onur <caglar@cs.princeton.edu> - linux-2.6-22-45
+- add support for ICH10
+
+* Fri Feb 19 2010 S.Çağlar Onur <caglar@cs.princeton.edu> - linux-2.6-22-44
+- Disable rebooting
+
+* Fri Feb 05 2010 S.Çağlar Onur <caglar@cs.princeton.edu> - linux-2.6-22-43
+- Tagging 22 branch with following changes;
+- * new e1000 driver,
+- * VXC_PROC_WRITE support,
+- * Bonding and multipath support,
+- * IGB driver support,
+- * Boot fix for the HP DL320 G6 boxes,
+- * Kexec fix for CCISS controllers,
+
+* Fri Jun 26 2009 Daniel Hokka Zakrisson <daniel@hozac.com> - linux-2.6-22-42
+- Bonding and multipath things.
+
+* Thu Jun 11 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-41
+- configs for the embedemu pldistro
+
+* Wed Jun 03 2009 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-40
+- Added patch 700, which implements VXC_PROC_WRITE support
+
+* Tue May 26 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-39
+- outputs the kernel-headers rpm as backported from 2.6.27
+
+* Fri May 15 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-38
+- the pcmcia patch needed to be adapted to 2.6.22
+
+* Tue May 12 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-37
+- enable patch about 64bits adresses and cardbus
+
* Thu Apr 09 2009 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-36
- Inserting this patch, which I missed in the previous tag.