1
0
forked from pool/kernel-source

GIT Revision: 6c33ac4c17512344a51413a39060e307da80c2a8

OBS-URL: https://build.opensuse.org/package/show/Kernel:HEAD/kernel-source?expand=0&rev=7137
This commit is contained in:
Michal Marek 2011-10-05 05:01:45 +00:00 committed by Git OBS Bridge
parent eb21664016
commit ad364baade
86 changed files with 535980 additions and 0 deletions

6
README.KSYMS Normal file
View File

@ -0,0 +1,6 @@
This file is a place holder for the kernel-syms{,-rt} package. It is used
to group build dependencies for all kernel flavors.
The KMP build process will build KMPs against all installed kernel flavors
automatically. If you don't need to build against other flavors than the
ones you've already installed - it is safe to uninstall this package.

471
README.SUSE Normal file
View File

@ -0,0 +1,471 @@
WORKING WITH THE SUSE 2.6.x KERNEL SOURCES
Andreas Gruenbacher <agruen@suse.de>, SUSE Labs, 2003, 2004, 2005, 2006
Michal Marek <mmarek@suse.de>, SUSE Labs, 2010
This document gives an overview of how SUSE Linux kernels are
created, and describes tasks like building individual kernels
and creating external kernel modules.
A companion HOWTO that describes how to build driver update disks (among
other things) is available at:
http://developer.novell.com/wiki/index.php/Creating_a_Driver_Update_Disk_%28DUD%29
TABLE OF CONTENTS
Overview
Compiling your own kernel
Building additional (external) modules
Supported vs. unsupported modules
Patch selection mechanism
Where to find configuration files
How to configure the kernel sources
Module load paths
OVERVIEW
The kernels for SUSE are generated from the vanilla Linux kernel sources
found at http://ftp.kernel.org, on top of which a number of patches are
applied. The resulting kernel source tree is configured and built,
resulting in a binary kernel.
The add-on patches and configuration files are maintained in
a GIT repository at
http://gitorious.org/opensuse/kernel-source
A script (scripts/tar-up.sh) packs up the files in the repository in a
form suitable for rpmbuild. When building the RPM packages, the
following binary packages get created:
* kernel-source
The kernel source tree, generated by unpacking the vanilla kernel
sources and applying the patches. The kernel sources are used by
a number of other packages. They can also be used for compiling
additional kernel modules.
* kernel-$FLAVOR
A number of binary kernels (for example, kernel-default for
uniprocessor machines, kernel-smp for smp machines, etc.). These
packages are all generated from the same kernel sources, and
differ in the kernel configurations used.
* kernel-$FLAVOR-base
A subset of kernel-$FLAVOR, for use in paravirtualized quests that
only require a few device and filesystem drivers.
* kernel-$FLAVOR-devel
The files used for generating kernel module packages for use with
kernel-$FLAVOR.
* kernel-syms
A meta package that pulls in the relevant kernel-$FLAVOR-devel
packages for a given architecture.
The repository contains the configuration files (.config) for all SUSE
kernel flavors. All configuration files are included in the
kernel-source package (see WHERE TO FIND CONFIGURATION FILES below).
In the installed system, the kernel-source package installs files in the
following directories:
* /usr/src/linux-$VERSION-$RELEASE/
The kernel sources.
* /usr/src/linux
A symbolic link to /usr/src/linux-$VERSION-$RELEASE.
* /usr/src/linux-$VERSION-$RELEASE-obj/$ARCH/$FLAVOR/
Kernel build object files for one kernel flavor. These
files are used for compiling additional kernel modules.
* /usr/src/linux-obj
A symbolic link to /usr/src/linux-$VERSION-$RELEASE-obj/$ARCH/$FLAVOR.
* /usr/share/doc/packages/kernel-source/
This document and an external kernel module example.
* /etc/init.d/running-kernel
Init script that adapts the kernel sources in /usr/src/linux to
the running kernel.
COMPILING YOUR OWN KERNEL
The kernel sources are found in the kernel-source package. The
recommended way to produce a binary kernel is:
(1) Install kernel-source. Change to the /usr/src/linux directory.
(2) Create a build directory for use in configuring and building
the kernel. Using /usr/src/linux directly requires root priviledges
and will cause problems if you need to build kernel modules for
other installed kernels.
(3) Configure the kernel (for example, ``make -C /usr/src/linux
O=$(pwd) oldconfig'' or ``make -C /usr/src/linux O=$(pwd) cloneconfig'',
see HOW TO CONFIGURE THE KERNEL SOURCES).
(4) Build the kernel and all its modules (``make'').
(5) Make sure that /etc/modprobe.d/unsupported-modules contains
allow_unsupported_modules 1
otherwise modprobe will refuse to load any modules.
(6) Install the kernel and the modules (``make modules_install'',
followed by ``make install''). This will automatically create
an initrd for the new kernel as well (see ``mkinitrd -h'').
(7) Add the kernel to the boot manager. When using lilo, run ``lilo''
to update the boot map.
Instead of building binary kernels by hand, you can also build
one of the kernel-$FLAVOR packages using RPM.
BUILDING ADDITIONAL (EXTERNAL) MODULES
A single binary kernel module generally only works for a specific
version of the kernel source tree, for a specific architecture and
configuration. This means that for each binary kernel that SUSE ships, a
custom module must be built. This requirement is to some extent relaxed
by the modversion mechanism: modversions attach a checksum to each
symbol (function or variable) exported to modules by the kernel. This
allows to use kernel modules that have been built for a kernel with a
different version or release number in many cases, as long as none of
the symbols the module uses have changed between the two kernel
versions.
When releasing maintenance or security update kernels for a specific
product, we carefully try to keep the kernel ABI stable. Despite this,
we sometimes have no choice but to break binary compatibility. In this
case, those kernel modules must be rebuilt.
Additional kernel modules for one of the SUSE kernel flavors can be
built in three different ways:
(1) by configuring the kernel sources in a separate build directory
(see HOW TO CONFIGURE THE KERNEL SOURCES), or
(2) by using one of the standard configurations in
/usr/src/linux-obj/$ARCH/$FLAVOR, or
(3) by creating a Kernel Module Package (KMP) as described in the
Kernel Module Packages Manual, http://www.suse.de/~agruen/KMPM/.
The first method involves the following steps:
(1) Install the kernel-source package.
(2) Configure the kernel, see HOW TO CONFIGURE THE KERNEL SOURCES.
(3) Create files required for compiling external modules:
``make scripts'' and ``make prepare''.
(4) Compile the module(s) by changing into the module source directory
and typing ``make -C $(your_build_dir) M=$(pwd)''.
(5) Install the module(s) by typing
``make -C $(your_build_dir) M=$(pwd) modules_install''.
The second method involves the following steps:
(1) Install the kernel-source package.
(2) Install kernel-syms.$ARCH.rpm. This package is necessary for
symbol version information (CONFIG_MODVERSIONS).
(3) Compile the module(s) by changing into the module source directory
and typing ``make -C /usr/src/linux-obj/$ARCH/$FLAVOR M=$(pwd)''.
Substitute $ARCH and $FLAVOR with the architecture and flavor
for which to build the module(s).
If the installed kernel sources match the running kernel, you
can build modules for the running kernel by using the path
/lib/modules/$(uname -r)/build as the -C option in the above
command. (build is a symlink to /usr/src/linux-obj/$ARCH/$FLAVOR).
Starting with SuSE Linux 9.2 / SLES9 Service Pack 1, the
modversion information for the running kernel is also
contained in the kernel-$FLAVOR packages, and so for building
modules for the running kernel, the kernel-syms package is no
longer required.
(4) Install the module(s) with
``make -C /usr/src/linux-obj/$ARCH/$FLAVOR M=$(pwd) modules_install''.
Whenever building modules, please use the kernel build infrastructure as
much as possible, and do not try to circumvent it. The
Documentation/kbuild directory in the kernel sources documents kbuild
makefiles.
Please take a look at the demo module installed under
/usr/share/doc/packages/kernel-source for a simple example of an Kernel
Module Package (KMP).
SUPPORTED VS. UNSUPPORTED MODULES
As an extension to the mainline kernel, modules can be tagged as
supported (directly by SUSE, or indirectly by a third party) or
unsupported. Modules which are known to be flakey or for which SUSE does
not have the necessary expertise are marked as unsupported. Modules for
which SUSE has third-party support agreements are marked as externally
supported. Modules for which SUSE provides direct support are marked as
supported.
The support status of a module can be queried with the modinfo tool.
Modinfo will report one of the following:
- direct support by SUSE: "supported: yes"
- third-party support: "supported: external"
- unsupported modules: no supported tag.
At runtime, the setting of the" unsupported" kernel command line
parameter and /proc/sys/kernel/unsupported determines whether
unsupported modules can be loaded or not, and whether or not loading an
unsupported module causes a warning in the system log:
0 = only allow supported modules,
1 = warn when loading unsupported modules,
2 = don't warn.
Irrespective of this setting, loading an externally supported or unsupported
module both set a kernel taint flag. The taint flags are included in
Oopses. The taint status of the kernel can be inspected in
/proc/sys/kernel/tainted: Bits 0 to 4 have the following meanings:
bit 0 = a module with a GPL-incompatible license was loaded (tainted & 1),
bit 1 = module load was enforced (tainted & 2),
bit 2 = an SMP-unsafe module was loaded (tainted & 4),
bit 3 = (reserved),
bit 4 = an unsupported module was loaded (tainted & 16),
bit 5 = a module with third-party support was loaded (tainted & 32).
bit 10 = a machine check exception has occurred (taint & 1024; x86_64 only
so far).
The corresponding codes for the taint flags in Oopses are (x = unknown):
- "Pxxx" if bit 0 set or else
"Gxxx" if bit 0 unset,
- "xFxx" if bit 1 set or else
"x xx" if bit 1 unset,
- "xxSx" if set or else
"xx x" if bit 2 unset,
- "xxxU" if bit 4 set or else
"xxxX" if bit 5 set or else
"xxx ".
By default, external modules will not have the supported flag (that is,
they wil be marked as unsupported). For building externally supported
modules, please get in touch with Kurt Garloff <garloff@suse.de>.
PATCH SELECTION MECHANISM
The SUSE kernels consist of the vanilla kernel sources on top of which a
number of patches is applied. The file series.conf determines which
patches are applied and which are excluded. A script named "guards"
converts series.conf into a plain list of patch files to be applied.
Guards decides which patches to include and exclude based on a list of
symbols. From the kernel-source.src.rpm package, a fully patched
kernel source tree can be generated from vanilla sources + patches like
this:
# Install the package:
$ rpm -i kernel-source.src.rpm
# Unpack the patches and the kernel sources:
$ cd /usr/src/packages/SOURCES
$ for f in patches.*.tar.bz2; do \
tar -xjf "$f" || break; \
done
$ tar -xjf linux-2.6.5.tar.bz2
# Apply the patches
$ for p in $(./guards < series.conf); do
patch -d linux-2.6.5 -p1 < $p || break
done
The configuration script config.conf which is similar to series.conf is
used for configuration file selection. See the section WHERE TO FIND
CONFIGURATION FILES.
The file format of series.conf and config.conf should be obvious from
the comments in series.conf, and from the guards(1) manual page. (The
guards(1) manual page can be generated by running pod2man on the guards
script.)
WHERE TO FIND CONFIGURATION FILES
Kernel configuration files are stored in the kernel GIT repository. When
packing up the repository, they end up in config.tar.bz2.
The kernel-$FLAVOR packages are based on config/$ARCH/$FLAVOR.
(kernel-default is based on config/$ARCH/default, for example). The
kernel-$FLAVOR packages install their configuration files as
/boot/config-$VER_STR (for example, /boot/config-2.6.5-99-default). The
config is also packaged in the kernel-$FLAVOR-devel package as
/usr/src/linux-obj/$ARCH/$FLAVOR/.config.
In addition, the running kernel exposes a gzip compressed version of its
configuration file as /proc/config.gz. The kernel sources can be
configured based on /proc/config.gz with ``make cloneconfig''.
HOW TO CONFIGURE THE KERNEL SOURCES
Before a binary kernel is built or an additional loadable module
for an existing kernel is created, the kernel must be configured.
In order for a loadable module to work with an existing kernel, it must
be created with a configuration that is identical to the kernel's
configuration, or at least very close to that. Each configuration is
contained in a single file. The kernel-syms package installs
configurations for all standard SUSE kernel variants, so for building
only external kernel modules it is not necessary to configure the kernel
sources.
Configuring the kernel sources for a specific configuration is
straightfoward:
- Locate the configuration file you want to use. (See WHERE TO FIND
CONFIGURATION FILES above).
- Copy the configuration to the file .config in your build directory.
- Run the following commands in sequence to apply the configuration,
generate version information files, etc.:
make -C /usr/src/linux O=$PWD clean
make -C /usr/src/linux O=$PWD oldconfig
Alternatively to ``make oldconfig'', you can also use ``make
menuconfig'' for a text menu oriented user interface. If the kernel
sources do not match the configuration file exactly, ``make
oldconfig'' will prompt for settings that are undefined. Once this
step is completed, a Makefile will have been created that eliminates
the need to specify the locations of the kernel source and the build
directory.
For configuring the kernel to match the running kernel, there is a
shortcut ``make cloneconfig'' that expands the file /proc/config.gz
into .config, and then runs ``make oldconfig''.
HOW TO ADD CUSTOM PATCHES
Typically patches are added to the appropriate patches.* directory (e.g.
patches.fixes) and to series.conf. When the kernel-source package is
exported from the git repository, the patch will be automatically added
to the appropriate patch tarball.
If your goal is to create a kernel with only a few additional patches
and you don't want to be bothered with using the git repository, there
is an easier way.
The kernel-source SRPM ships with two empty archives that can be be
filled and automatically expanded when building the kernel. You can use
these to add your own patches and config options without disturbing the
rest of the kernel package. This is useful if you are using the openSUSE
Build Service and link to the main kernel-source project instead of
creating your own branch. The advantage to this is that your project
will automatically receive all the changes that go into the main project
without any further effort.
To add a patch using this mechanism, just add it to the
patches.addon.tar.bz2 archive and add an entry to the series.conf file.
The archive will be expanded automatically with the other kernel patches
when the source tree is constructed.
Some patches may add new Kconfig options. The config.addon.tar.bz2
archive contains the same hierarchy as config.tar.bz2, but is under
config.addon. You can add your new config options to files named after
their config/ counterparts.
For example, the file used to configure the i386 default kernel is named
config/i386/default. To add config options to that kernel, you would
create a new file called config.addon/i386/default with the options as
formatted in a normal Linux kernel .config file. This is important
because the kernel build is non-interactive and will fail if it
encounters new config options without entries in the config file.
MODULE LOAD PATHS
Modules that belong to a specific kernel release are installed in
/lib/modules/2.6.5-99-smp and similar. Note that this path contains the
kernel package release number. Modules from KMPs must be installed
below /lib/modules/2.6.5-99-smp/updates/ and similar: modules below
updates/ have priority over other modules.
When KMPs contain modules that are compatible between multiple installed
kernels, symlinks are used to make those modules available to those
compatible kernels like this:
/lib/modules/2.6.16-100-smp/weak-updates/foo.ko ->
/lib/modules/2.6.16-99-smp/updates/foo.ko
Modules in the weak-updates directory have lower priority than modules
in /lib/modules/2.6.16-100-smp/updates/, and higher priority than other
modules in /lib/modules/2.6.16-100-smp.
REFERENCES
General
Documentation in the kernel source tree.
Linux Documentation Project, http://www.tldp.org/
Linux Weekly News, http://lwn.net
Rusty's Remarkably Unreliable Guides (Kernel Hacking
and Kernel Locking guides),
http://www.netfilter.org/unreliable-guides/
Kernel newbies, http://www.kernelnewbies.org/
Loadable Kernel Modules
Peter Jay Salzman and Ori Pomerantz: Linux Kernel Module
Programming Guide, Version 2.4, April 2003,
http://www.tldp.org/guides.html
Kernel Module Packages
Andreas Gruenbacher: Kernel Module Packages Manual.
Versions for CODE9 (SLES9, SUSE LINUX 10.0) and CODE10
(SUSE Linux 10.1, SLES10),
http://www.suse.de/~agruen/KMPM/

47
apply-patches Normal file
View File

@ -0,0 +1,47 @@
#!/bin/sh
#
# Given a series.conf file and a directory with patches, applies them to the
# current directory.
# Used by kernel-source.spec.in and kernel-binary.spec.in
USAGE="$0 [--vanilla] <series.conf> <patchdir> [symbol ...]"
set -e
set -o pipefail
vanilla=false
if test "$1" == "--vanilla"; then
vanilla=true
shift
fi
if test $# -lt 2; then
echo "$USAGE" >&2
exit 1
fi
DIR="${0%/*}"
SERIES_CONF=$1
PATCH_DIR=$2
shift 2
trap 'rm -f "$series"' EXIT
series=$(mktemp)
# support for patches in patches.addon/series
cp "$SERIES_CONF" "$series"
if ! $vanilla && test -e "$PATCH_DIR/patches.addon/series"; then
# make it user-friendly and automatically prepend "patches.addon/"
# if there is no "/"
sed -r 's|^([[:space:]]*)([^#[:space:]][^/]*)$|\1patches.addon/\2|' \
"$PATCH_DIR/patches.addon/series" >>"$series"
fi
(
echo "trap 'echo \"*** patch \$_ failed ***\"' ERR"
echo "set -ex"
"$DIR"/guards "$@" <"$series" | \
if $vanilla; then
egrep '^patches\.(kernel\.org|rpmify)/'
else
cat
fi |\
sed "s|^|patch -s -F0 -E -p1 --no-backup-if-mismatch -i $PATCH_DIR/|"
) | sh

45
arch-symbols Normal file
View File

@ -0,0 +1,45 @@
#!/bin/sh
#############################################################################
# Copyright (c) 2003-2005,2009 Novell, Inc.
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail,
# you may find current contact information at www.novell.com
#############################################################################
# With --list, list all known architectures, otherwise print the generic
# name for this architecture (or the one specified on command line).
if [ "$1" = "--list" ]; then
# List all known architectures
echo i386 mips{,64} sparc{,64} ppc{,64} s390{,x} ia64 x86_64 alpha parisc
exit 0
fi
if [ -n "$1" ]; then
ARCH="$1"
else
ARCH="`arch`"
fi
case "$ARCH" in
# from rpm --eval '%ix86'
i?86 | pentium3 | pentium4 | athlon | geode)
echo i386
;;
*)
echo "$ARCH"
;;
esac

17
check-for-config-changes Normal file
View File

@ -0,0 +1,17 @@
#! /bin/bash
# lines 4 contains a timestamp...
differences="$(
diff -bU0 <(sed -e '/^# .* is not set$/p' -e '/^$\|^#/d' "$1" | sort) \
<(sed -e '/^# .* is not set$/p' -e '/^$\|^#/d' "$2" | sort) \
| grep '^[-+][^-+]'
)" || true
if [ -n "$differences" ]; then
echo
echo "Changes after running \`make oldconfig':"
echo "$differences"
echo
if echo "$differences" | grep -q '^+' ; then
exit 1
fi
fi

36
check-supported-list Normal file
View File

@ -0,0 +1,36 @@
#! /bin/sh
sourcedir=$1
modpath=$2
# Check for modules not listed in supported.conf: First, for each module
# in the list, set mod_$module=1
for module in $($sourcedir/guards --list < $sourcedir/supported.conf \
| sed -e 's,.*/,,'); do
m=${module##*/}
m=${m%.ko}
eval mod_${m//-/_}=1
done
# Check if any installed module was not listed
status=
cd $modpath
for module in $(find . -name '*.ko' | sort); do
case "$module" in
./kernel/drivers/staging/* | ./kernel/Documentation/*)
continue ;;
esac
module=${module%.ko}
m=${module##*/}
m=${m//-/_}
m="mod_$m"
if [ -z "${!m}" ]; then
if [ -z "$status" ]; then
echo "Modules not listed in supported.conf:"
status=1
fi
echo ${module#./}
fi
done
exit $status

77
compute-PATCHVERSION.sh Normal file
View File

@ -0,0 +1,77 @@
#! /bin/bash
export LANG=POSIX
path=(.)
while test $# -gt 0; do
case "$1" in
--patches)
path[${#path[@]}]=$2
shift 2
;;
*)
echo "Usage $0 [--patches <dir>]" >&2
exit 1
esac
done
if test "${path[*]}" = "."; then
path=(. ..)
fi
source $(dirname $0)/config.sh
parse_srcversion()
{
local IFS=.
set -- ${SRCVERSION%%-*}
VERSION=$1
PATCHLEVEL=${2:-0}
SUBLEVEL=${3:-0}
EXTRAVERSION=${SRCVERSION#${SRCVERSION%%-*}}
}
parse_srcversion
EXTRA_SYMBOLS=$(set -- $([ -e $(dirname $0)/extra-symbols ] && cat $(dirname $0)/extra-symbols) ; echo $*)
series=$(mktemp)
tmp_files="$series"
trap 'rm -rf $tmp_files' EXIT
warned=false
while read patch; do
dir=${patch%/*}
for p in "${path[@]}"; do
if test -d "$p/$dir"; then
echo "$p/$patch"
continue 2
fi
done
for p in "${path[@]}"; do
if test -e "$p/$dir.tar.bz2"; then
echo "unpacking $p/$dir.tar.bz2" >&2
if ! $warned; then
echo "pass --patches <directory with unpacked tarballs> to avoid this" >&2
warned=true
fi
tmp_files="$tmp_files $dir"
tar -xjf "$p/$dir.tar.bz2"
echo "$patch"
continue 2
fi
done
echo "Can't find $patch" >&2
exit 1
done >"$series" < <($(dirname $0)/guards $EXTRA_SYMBOLS <series.conf)
# Parse all the changes to KERNELRELEASE out of all patches and
# convert them to shell code that can be evaluated. Evaluate it.
eval "$(
<"$series" xargs awk '
/^--- |^\+\+\+ / \
{ M = match($2, /^[^\/]+\/Makefile( \t|$)/) }
M && /^+(VERSION|PATCHLEVEL|SUBLEVEL|EXTRAVERSION)/ \
{ print }
' \
| sed -e 's,^+,,' -e 's, *= *\(.*\),="\1",'
)"
echo "$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"

1407
config-options.changes.txt Normal file

File diff suppressed because it is too large Load Diff

3
config.addon.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e1ddc0ec138354be50695298a844500f84b883a419c711785aba32e2c8e657f0
size 129

65
config.conf Normal file
View File

@ -0,0 +1,65 @@
# Kernel configuration file selection.
# See the arch-symbols script for a list of symbols defined.
# -syms excludes a flavor from the kernel-syms package (vanilla is excluded
# automatically).
#
# IMPORTANT: the subdirectory names map to cpuarch
# kernel-binary and kernel-source rely on this
#
+i386 i386/default
+i386 i386/desktop
+i386 i386/pae
+i386 -syms i386/debug
+i386 i386/xen
+i386 -syms i386/ec2
+i386 i386/vanilla
+i386 -syms i386/trace
+ia64 ia64/default
+ia64 -syms ia64/debug
+ia64 ia64/vanilla
+ia64 -syms ia64/trace
+x86_64 x86_64/default
+x86_64 x86_64/desktop
+x86_64 x86_64/xen
+x86_64 -syms x86_64/ec2
+x86_64 -syms x86_64/debug
+x86_64 x86_64/vanilla
+x86_64 -syms x86_64/trace
# openSuSE:
# G3 G4 bPlan
+ppc ppc/default
# G5 PS3 pSeries
+ppc ppc/ppc64
# PS3 bootloader
#+ppc -syms ppc/ps3
# maybe the kernels above were patched to death?
+ppc ppc/vanilla
# SLES
# identical to ppc64 flavor, all KMP packages need a kernel-default
# Up to now, the openSuSE 11.1 ppc media can not have a
# kernel-default.ppc.rpm and a kernel-default.ppc64.rpm to continue
# supporting 32bit and 64bit systems.
+ppc64 ppc64/default
# G5 pSeries
+ppc64 ppc64/ppc64
+ppc64 -syms ppc64/trace
+ppc64 -syms ppc64/debug
# maybe the kernels above were patched to death?
+ppc64 ppc64/vanilla
+s390 s390/s390
+s390 -syms s390/trace
+s390 s390/vanilla
+s390x s390x/default
+s390x -syms s390x/trace
+s390x s390x/vanilla
# Maintained by jengelh
# +sparc64 sparc64/default
# +sparc64 -syms sparc64/net

7
config.sh Normal file
View File

@ -0,0 +1,7 @@
# The version of the main tarball to use
SRCVERSION=3.1-rc8
# variant of the kernel-source package, either empty or "-rt"
VARIANT=
# buildservice projects to build the kernel against
OBS_PROJECT=openSUSE:Factory
IBS_PROJECT=SUSE:Factory:Head

3
config.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bb2cecf5e53290976a7c8ed25f4dcbca409fb3b2d17ac03fac55f64c53fcfc82
size 229573

60
configtool.pl Normal file
View File

@ -0,0 +1,60 @@
#!/usr/bin/perl
#
# Merge two kernel configs, eliminating duplicated assignments.
# TODO:
# support for #include-style directives in config files, to make the
# kernel configs more maintainable
use strict;
use warnings;
# ( { source => <file> name => ... value => ...}, { comment => ...}, ... )
my @lines;
# references into the @lines array
my %variables;
sub store_var {
my ($file, $line, $name, $value) = @_;
if (exists($variables{$name})) {
if ($variables{$name}->{source} eq $file) {
print STDERR "$file:$line: warning: $name redefined\n";
}
} else {
my $new = {};
push(@lines, $new);
$variables{$name} = $new;
}
$variables{$name}->{source} = $file;
$variables{$name}->{name} = $name;
$variables{$name}->{value} = $value;
}
sub store_comment {
my ($comment) = @_;
push(@lines, { comment => $comment });
}
while (<>) {
chomp;
if (/^CONFIG_(\w+)=(.*)/) {
store_var($ARGV, $., $1, $2);
} elsif (/^# CONFIG_(\w+) is not set/) {
store_var($ARGV, $., $1, 'n');
} elsif (/^$|^#/) {
store_comment($_);
} else {
print STDERR "$ARGV:$.: warning: ignoring unknown line\n";
}
}
for my $line (@lines) {
if (exists($line->{comment})) {
print "$line->{comment}\n";
} elsif ($line->{value} eq 'n') {
print "# CONFIG_$line->{name} is not set\n";
} else {
print "CONFIG_$line->{name}=$line->{value}\n";
}
}

16
devel-post.sh Normal file
View File

@ -0,0 +1,16 @@
relink() {
if [ -h "$2" ]; then
local old=$(readlink "$2")
[ "$old" = "$1" ] && return 0
echo "Changing symlink $2 from $old to $1"
elif [ -e "$2" ]; then
echo "Replacing file $2 with symlink to $1"
fi
rm -f "$2" \
&& ln -s "$1" "$2"
}
release="@KERNELRELEASE@@SRCVARIANT@-obj"
arch_flavor="@CPU_ARCH_FLAVOR@"
relink ../../linux-$release/"$arch_flavor" /usr/src/linux-obj/"$arch_flavor"

4
devel-pre.sh Normal file
View File

@ -0,0 +1,4 @@
# handle update from an older kernel-source with linux-obj as symlink
if [ -h /usr/src/linux-obj ]; then
rm -vf /usr/src/linux-obj
fi

18
find-provides Normal file
View File

@ -0,0 +1,18 @@
#! /bin/bash
trap 'rm -f "$filelist"' EXIT
filelist=$(mktemp -t ${0##*/}.XXXXXXXXXX)
grep -v '/kernel/drivers/staging/.*\.ko$' >"$filelist"
shopt -s nullglob
# pretend that /boot/vmlinux-* is in the -base package and not in -devel
if grep -q '/boot/System\.map\>' "$filelist"; then
prefix=$(sed -rn 's:(.*)/boot/System\.map\>.*:\1:p; T; q' "$filelist")
for f in "$prefix"/boot/vmlinux*; do
echo "$f" >>"$filelist"
done
else
perl -ni -e 'next if /\/boot\/vmlinux/ && !/\.debug$/; print' "$filelist"
fi
/usr/lib/rpm/find-provides "$@" <"$filelist"

82
group-source-files.pl Normal file
View File

@ -0,0 +1,82 @@
#!/usr/bin/perl
use Getopt::Long;
use strict;
&main();
sub main
{
my($dev_output, $ndev_output, $loc) = ("-", "-", ".");
&Getopt::Long::Configure(qw(bundling));
&GetOptions(
"D=s" => \$dev_output,
"N=s" => \$ndev_output,
"L=s" => \$loc,
);
my($dev, $ndev) = &scan($loc);
&output($dev, $ndev, $dev_output, $ndev_output);
}
sub scan
{
my $loc = shift @_;
my(@dev, @ndev);
foreach $_ (`find "$loc"`)
{
chomp $_;
if (!-f $_) {
# Generate directory list later.
next;
}
my $is_devel =
m{^\Q$loc\E.*/Kconfig} ||
m{^\Q$loc\E.*/Kbuild} ||
m{^\Q$loc\E.*/Makefile} ||
m{^\Q$loc\E/arch/[^/]+/include\b} ||
m{^\Q$loc\E/include/[^/]+\b} ||
m{^\Q$loc\E/scripts\b};
if (substr($_, 0, 1) ne "/") {
# We cannot use an absolute path during find,
# but rpm wants one later.
$_ = "/$_";
}
$is_devel ? push(@dev, $_) : push(@ndev, $_);
}
push(@dev, &calc_dirs("/$loc", \@dev));
push(@ndev, &calc_dirs("/$loc", \@ndev));
return (\@dev, \@ndev);
}
sub calc_dirs
{
my($base, $files) = @_;
my %dirs;
foreach my $file (@$files) {
my $path = $file;
do {
$path =~ s{/[^/]+$}{};
$dirs{$path} = 1;
} while ($path ne $base);
# This loop also makes sure that $base itself is included.
}
return map { "\%dir $_" } keys %dirs;
}
sub output
{
my($dev, $ndev, $dev_out, $ndev_out) = @_;
local *FH;
open(FH, "> $dev_out") || warn "Error writing to $dev_out: $!";
print FH join("\n", @$dev), "\n";
close FH;
open(FH, "> $ndev_out") || warn "Error writing to $ndev_out: $!";
print FH join("\n", @$ndev), "\n";
close FH;
}

305
guards Normal file
View File

@ -0,0 +1,305 @@
#!/usr/bin/perl -w
#############################################################################
# Copyright (c) 2003-2007,2009 Novell, Inc.
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail,
# you may find current contact information at www.novell.com
#############################################################################
#
# Guards:
#
# +xxx include if xxx is defined
# -xxx exclude if xxx is defined
# +!xxx include if xxx is not defined
# -!xxx exclude if xxx is not defined
#
use FileHandle;
use Getopt::Long;
use strict;
# Prototypes
sub files_in($$);
sub parse($$);
sub help();
#sub strip_ext($) {
# local ($_) = @_;
# s/\.(diff?|patch)$//;
#}
#sub try_ext($) {
# my ($path) = @_;
# for my $p in (($path, "$path.diff", "$path.dif", "$path.patch")) {
# return $p
# if (-f $p);
# }
# return undef;
#}
sub slashme($) {
my ($dir) = @_;
$dir =~ s#([^/])$#$&/#; # append a slash if necessary
if ($dir eq './') {
return '';
} else {
return $dir;
}
}
# Generate a list of files in a directory
#
sub files_in($$) {
my ($dir, $path) = @_;
my $dh = new FileHandle;
my (@files, $file);
opendir $dh, length("$dir$path") ? "$dir$path" : '.'
or die "$dir$path: $!\n";
while ($file = readdir($dh)) {
next if $file =~ /^(\.|\.\.|\.#.*|CVS|.*~)$/;
if (-d "$dir$path$file") {
@files = (@files, files_in($dir, "$path$file/"));
} else {
#print "[$path$file]\n";
push @files, "$path$file";
}
}
closedir $dh;
return @files;
}
# Parse a configuration file
# Callback called with ($patch, @guards) arguments
#
sub parse($$) {
my ($fh, $callback) = @_;
my $line = "";
while (<$fh>) {
chomp;
s/(^|\s+)#.*//;
if (s/\\$/ /) {
$line .= $_;
next;
}
$line .= $_;
my @guards = ();
foreach my $token (split /[\s\t\n]+/, $line) {
next if $token eq "";
if ($token =~ /^[-+]/) {
push @guards, $token;
} else {
#print "[" . join(",", @guards) . "] $token\n";
&$callback($token, @guards);
}
}
$line = "";
}
}
# Command line options
#
my ($dir, $config, $default, $check, $list, $invert_match, $with_guards) =
( '', '-', 1, 0, 0, 0, 0);
my @path;
# Help text
#
sub help() {
print "$0 - select from a list of files guarded by conditions\n";
print "SYNOPSIS: $0 [--prefix=dir] [--path=dir1:dir2:...]\n" .
" [--default=0|1] [--check|--list] [--invert-match]\n" .
" [--with-guards] [--config=file] symbol ...\n\n" .
" (Default values: --path='" . join(':', @path) . "', " .
"--default=$default)\n";
exit 0;
}
# Parse command line options
#
Getopt::Long::Configure ("bundling");
eval {
unless (GetOptions (
'd|prefix=s' => \$dir,
'c|config=s' => \$config,
'C|check' => \$check,
'l|list' => \$list,
'w|with-guards' => \$with_guards,
'p|path=s' => \@path,
'D|default=i' => \$default,
'v|invert-match' => \$invert_match,
'h|help' => sub { help(); exit 0; })) {
help();
exit 1;
}
};
if ($@) {
print "$@";
help();
exit 1;
}
@path = ('.')
unless (@path);
@path = split(/:/, join(':', @path));
my $fh = ($config eq '-') ? \*STDIN : new FileHandle($config)
or die "$config: $!\n";
$dir = slashme($dir);
if ($check) {
# Check for duplicate files, or for files that are not referenced by
# the specification.
my $problems = 0;
my @files;
foreach (@path) {
@files = (@files, files_in($dir, slashme($_)));
}
my %files = map { $_ => 0 } @files;
parse($fh, sub {
my ($patch, @guards) = @_;
if (exists $files{$patch}) {
$files{$patch}++;
} else {
print "Not found: $dir$patch\n";
$problems++;
}});
$fh->close();
my ($file, $ref);
while (($file, $ref) = each %files) {
next if $ref == 1;
if ($ref == 0) {
print "Unused: $file\n" if $ref == 0;
$problems++;
}
if ($ref > 1) {
print "Warning: multiple uses: $file\n" if $ref > 1;
# This is not an error if the entries are mutually exclusive...
}
}
exit $problems ? 1 : 0;
} elsif ($list) {
parse($fh, sub {
my ($patch, @guards) = @_;
print join(' ', @guards), ' '
if (@guards && $with_guards);
print "$dir$patch\n";
});
} else {
# Generate a list of patches to apply.
my %symbols = map { $_ => 1 } @ARGV;
parse($fh, sub {
my ($patch, @guards) = @_;
my $selected;
if (@guards) {
# If the first guard is -xxx, the patch is included by default;
# if it is +xxx, the patch is excluded by default.
$selected = ($guards[0] =~ /^-/);
foreach (@guards) {
/^([-+])(!?)(.*)?/
or die "Bad guard '$_'\n";
# Check if the guard matches
if (($2 eq '!' && !exists $symbols{$3}) ||
($2 eq '' && ( $3 eq '' || exists $symbols{$3}))) {
# Include or exclude
$selected = ($1 eq '+');
}
}
} else {
# If there are no guards, use the specified default result.
$selected = $default;
}
print "$dir$patch\n"
if $selected ^ $invert_match;
});
$fh->close();
exit 0;
}
__END__
=head1 NAME
guards - select from a list of files guarded by conditions
=head1 SYNOPSIS
F<guards> [--prefix=F<dir>] [--path=F<dir1:dir2:...>] [--default=<0|1>]
[--check|--list] [--invert-match] [--with-guards] [--config=<file>]
I<symbol> ...
=head1 DESCRIPTION
The script reads a configuration file that may contain so-called guards, file
names, and comments, and writes those file names that satisfy all guards to
standard output. The script takes a list of symbols as its arguments. Each line
in the configuration file is processed separately. Lines may start with a
number of guards. The following guards are defined:
=over
+I<xxx> Include the file(s) on this line if the symbol I<xxx> is defined.
-I<xxx> Exclude the file(s) on this line if the symbol I<xxx> is defined.
+!I<xxx> Include the file(s) on this line if the symbol I<xxx> is not defined.
-!I<xxx> Exclude the file(s) on this line if the symbol I<xxx> is not defined.
- Exclude this file. Used to avoid spurious I<--check> messages.
=back
The guards are processed left to right. The last guard that matches determines
if the file is included. If no guard is specified, the I<--default>
setting determines if the file is included.
If no configuration file is specified, the script reads from standard input.
The I<--check> option is used to compare the specification file against the
file system. If files are referenced in the specification that do not exist, or
if files are not enlisted in the specification file warnings are printed. The
I<--path> option can be used to specify which directory or directories to scan.
Multiple directories are eparated by a colon (C<:>) character. The
I<--prefix> option specifies the location of the files.
Use I<--list> to list all files independend of any rules. Use I<--invert-match>
to list only the excluded patches. Use I<--with-guards> to also include all
inclusion and exclusion rules.
=head1 AUTHOR
Andreas Gruenbacher <agruen@suse.de>, SUSE Labs

7
host-memcpy-hack.h Normal file
View File

@ -0,0 +1,7 @@
#ifdef __x86_64__
/*
* Force the linker to use the older memcpy variant, so that the user programs
* work on older systems
*/
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
#endif

131
kabi.pl Normal file
View File

@ -0,0 +1,131 @@
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Data::Dumper;
# ( { sym => regexp, mod => regexp, fail => 0/1 }, ... )
my @rules;
my ($opt_verbose, $opt_rules);
sub load_rules {
my $file = shift;
my $errors = 0;
xopen(my $fh, '<', $file);
while (<$fh>) {
chomp;
s/#.*//;
next if /^\s*$/;
my ($pattern, $verdict) = split(/\s+/);
my $new = {};
if (uc($verdict) eq "PASS") {
$new->{fail} = 0;
} elsif (uc($verdict) eq "FAIL") {
$new->{fail} = 1;
} else {
print STDERR "$file:$.: invalid verdict \"$verdict\", must be either PASS or FAIL.\n";
$errors++;
next;
}
# simple glob -> regexp conversion
$pattern =~ s/\*/.*/g;
$pattern =~ s/\?/./g;
$pattern =~ s/.*/^$&\$/;
if ($pattern =~ /\/|^vmlinux$/) {
$new->{mod} = $pattern;
} else {
$new->{sym} = $pattern;
}
push(@rules, $new);
}
if ($errors && !@rules) {
print STDERR "error: only garbage found in $file.\n";
exit 1;
}
close($fh);
}
sub load_symvers {
my $file = shift;
my %res;
my $errors = 0;
xopen(my $fh, '<', $file);
while (<$fh>) {
my @l = split(/\s+/);
if (@l < 3) {
print STDERR "$file:$.: unknown line\n";
$errors++;
next;
}
my $new = { crc => $l[0], mod => $l[2] };
$res{$l[1]} = $new;
}
if (!%res) {
print STDERR "error: no symvers found in $file.\n";
exit 1;
}
close($fh);
return %res;
}
my $kabi_errors = 0;
sub kabi_change {
my ($sym, $mod, $oldcrc, $newcrc) = @_;
my $fail = 1;
for my $rule (@rules) {
if ($rule->{mod} && $mod =~ $rule->{mod} ||
$rule->{sym} && $sym =~ $rule->{sym}) {
$fail = $rule->{fail};
last;
}
}
return unless $fail or $opt_verbose;
print STDERR "KABI: symbol $sym($mod) ";
if ($newcrc) {
print STDERR "changed crc from $oldcrc to $newcrc"
} else {
print STDERR "lost";
}
if ($fail) {
$kabi_errors++;
print STDERR "\n";
} else {
print STDERR " (tolerated)\n";
}
}
sub xopen {
open($_[0], $_[1], @_[2..$#_]) or die "$_[2]: $!\n";
}
my $res = GetOptions(
'verbose|v' => \$opt_verbose,
'rules|r=s' => \$opt_rules,
);
if (!$res || @ARGV != 2) {
print STDERR "Usage: $0 [--rules <rules file>] Module.symvers.old Module.symvers\n";
exit 1;
}
if (defined($opt_rules)) {
load_rules($opt_rules);
}
my %old = load_symvers($ARGV[0]);
my %new = load_symvers($ARGV[1]);
for my $sym (sort keys(%old)) {
if (!$new{$sym}) {
kabi_change($sym, $old{$sym}->{mod}, $old{$sym}->{crc}, 0);
} elsif ($old{$sym}->{crc} ne $new{$sym}->{crc}) {
kabi_change($sym, $new{$sym}->{mod}, $old{$sym}->{crc},
$new{$sym}->{crc});
}
}
if ($kabi_errors) {
print STDERR "KABI: aborting due to kabi changes.\n";
exit 1;
}
exit 0;

3
kabi.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:59d268a3fba95a4822be04a478e75c6875671e730955f3f7da59caccad496e28
size 426

800
kernel-binary.spec.in Normal file
View File

@ -0,0 +1,800 @@
#
# spec file for package kernel-@FLAVOR@ (Version @RPMVERSION@)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
%define srcversion @SRCVERSION@
%define patchversion @PATCHVERSION@
%define variant @VARIANT@%{nil}
%include %_sourcedir/kernel-spec-macros
%define build_flavor @FLAVOR@
%define build_kdump (%build_flavor == "kdump")
%define build_xen (%build_flavor == "xen" || %build_flavor == "ec2")
%define build_vanilla (%build_flavor == "vanilla")
%define build_ps3 (%build_flavor == "ps3")
%define build_src_dir %my_builddir/linux-%srcversion
%define src_install_dir /usr/src/linux-%kernelrelease%variant
%define obj_install_dir %src_install_dir-obj
%define rpm_install_dir %buildroot%obj_install_dir
%define kernel_build_dir %my_builddir/linux-obj
%(chmod +x %_sourcedir/{@SCRIPTS@})
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
%define cpu_arch_flavor %cpu_arch/%build_flavor
# Define some CONFIG variables as rpm macros as well. (rpm cannot handle
# defining them all at once.)
%define config_vars CONFIG_MODULES CONFIG_KMSG_IDS CONFIG_SPLIT_PACKAGE CONFIG_ENTERPRISE_SUPPORT
%{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf %_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in %config_vars; do echo "%%global $config ${!config:-n}"; done)}
%define split_base (%CONFIG_SPLIT_PACKAGE == "y")
%define split_extra (%CONFIG_SPLIT_PACKAGE == "y" && %CONFIG_ENTERPRISE_SUPPORT == "y")
%ifarch %ix86 x86_64
%define install_vdso 1
%else
%define install_vdso 0
%endif
Name: kernel-@FLAVOR@
Summary: @SUMMARY@
Version: @RPMVERSION@
%if %using_buildservice
Release: @RELEASE_PREFIX@<RELEASE>
%else
Release: @RELEASE_PREFIX@0
%endif
License: GPL v2 only
Group: System/Kernel
Url: http://www.kernel.org/
AutoReqProv: on
BuildRequires: coreutils module-init-tools sparse
BuildRequires: fdupes
Provides: multiversion(kernel)
Provides: %{name}_%_target_cpu = %version-%release
Provides: %name = %version-%source_rel
%if %split_base
Provides: kernel-base = %version-%source_rel
# Obsolete the -base subpackage from 11.1 and 11.2 development phase
Obsoletes: %name-base <= 2.6.31
%endif
Requires(pre): coreutils awk
# Need a module-init-tools with /usr/lib/module-init-tools/weak-modules2
Requires(post): module-init-tools >= 3.4
# This Requires is wrong, because the post/postun scripts have a
# test -x update-bootloader, having perl-Bootloader is not a hard requirement.
# But, there is no way to tell rpm or yast to schedule the installation
# of perl-Bootloader before kernel-binary.rpm if both are in the list of
# packages to install/update. Likewise, this is true for mkinitrd.
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Requires(post): perl-Bootloader >= 0.4.15
Requires(post): mkinitrd
# Do not install p-b and mkinitrd for the install check, the %post script is
# able to handle this
#!BuildIgnore: perl-Bootloader mkinitrd
# Remove some packages that are installed automatically by the build system,
# but are not needed to build the kernel
#!BuildIgnore: autoconf automake gettext-runtime libtool cvs gettext-tools m4 udev fillup insserv
%ifarch ia64
# arch/ia64/scripts/unwcheck.py
BuildRequires: python
%endif
%ifarch s390 s390x
%if %build_vanilla && 0%{?suse_version} < 1130
BuildRequires: dwarfextract
%endif
%endif
%if %build_xen
%ifarch %ix86
%if %build_flavor != "ec2"
Provides: kernel-xenpae = %version
Obsoletes: kernel-xenpae <= %version
%endif
%endif
#!BuildIgnore: xen
%endif
Provides: %name-nongpl
Obsoletes: %name-nongpl
%if %build_vanilla
# force bzip2 instead of lzma compression to allow install on older dist versions
%define _binary_payload w9.bzdio
%endif
# dead network if installed on SLES10, otherwise it will work (mostly)
Conflicts: sysfsutils < 2.0
%if ! %build_vanilla
Conflicts: apparmor-profiles <= 2.1
Conflicts: apparmor-parser < 2.3
# root-lvm only works with newer udevs
Conflicts: udev < 118
Conflicts: lvm2 < 2.02.33
%endif
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
@PROVIDES_OBSOLETES@
@SOURCES@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: @ARCHS@
# These files are found in the kernel-source package:
@NOSOURCE@
# The following KMPs have been integrated into the kernel package,
# grouped by the last product that contained them.
# sles10 / 10.3
Obsoletes: iwlwifi-kmp-%build_flavor
Obsoletes: ipw3945-kmp-%build_flavor
# sles10 / 11.0
Obsoletes: uvcvideo-kmp-%build_flavor
# 11.0
Obsoletes: atl2-kmp-%build_flavor
Obsoletes: wlan-ng-kmp-%build_flavor
Obsoletes: et131x-kmp-%build_flavor
Obsoletes: ivtv-kmp-%build_flavor
Obsoletes: at76_usb-kmp-%build_flavor
Obsoletes: pcc-acpi-kmp-%build_flavor
Obsoletes: btusb-kmp-%build_flavor
# sle11-ga
Obsoletes: enic-kmp-%build_flavor
Obsoletes: fnic-kmp-%build_flavor
Obsoletes: brocade-bfa-kmp-%build_flavor
Obsoletes: kvm-kmp-%build_flavor
Obsoletes: perfmon-kmp-%build_flavor
Obsoletes: iwlagn-2-6-27-kmp-%build_flavor
Obsoletes: msi-wmi-kmp-%build_flavor
# sle11
Obsoletes: ocfs2-kmp-%build_flavor
# 11.1
Obsoletes: quickcam-kmp-%build_flavor < 0.6.7
# Provide the exported symbols as "ksym(symbol) = hash"
%define __find_provides %_sourcedir/find-provides %name
# Will modules not listed in supported.conf abort the kernel build (0/1)?
%define supported_modules_check 0
%description
@DESCRIPTION@
%source_timestamp
%prep
if ! [ -e %_sourcedir/linux-%srcversion.tar.bz2 ]; then
echo "The %name-%version.nosrc.rpm package does not contain the" \
"complete sources. Please install kernel-source-%version.src.rpm."
exit 1
fi
SYMBOLS=
if test -e %_sourcedir/extra-symbols; then
SYMBOLS=$(cat %_sourcedir/extra-symbols)
echo "extra symbol(s):" $SYMBOLS
fi
# Unpack all sources and patches
%setup -q -c -T -a 0 @UNPACK_PATCHES@
mkdir -p %kernel_build_dir
supported_conf() {
%_sourcedir/guards $* < %_sourcedir/supported.conf | \
sed 's,.*/,,; s,\.ko$,,' | sort -u
}
# Generate the list of modules to be marked as supported
{ supported_conf base
supported_conf --default=0 external | sed 's/$/ external/'
} > %kernel_build_dir/Module.supported
supported_conf --default=0 base >%kernel_build_dir/Module.base
cd linux-%srcversion
%_sourcedir/apply-patches \
%if %{build_vanilla}
--vanilla \
%endif
%_sourcedir/series.conf .. $SYMBOLS
cd %kernel_build_dir
# Override the timestamp 'uname -v' reports with the source timestamp and
# the commit hash.
date=$(head -n 1 %_sourcedir/source-timestamp)
commit=$(sed -n 's/GIT Revision: //p' %_sourcedir/source-timestamp)
cat > .kernel-binary.spec.buildenv <<EOF
export KBUILD_BUILD_TIMESTAMP="$(LANG=C date -d "$date") (${commit:0:7})"
export KBUILD_VERBOSE=0
export KBUILD_SYMTYPES=1
export KBUILD_OVERRIDE=1
export KBUILD_BUILD_USER=geeko
export KBUILD_BUILD_HOST=buildhost
export HOST_EXTRACFLAGS="-include %_sourcedir/host-memcpy-hack.h"
EOF
source .kernel-binary.spec.buildenv
if [ -f %_sourcedir/localversion ] ; then
cat %_sourcedir/localversion > localversion
fi
if test -e ../config.addon/%cpu_arch_flavor; then
# FIXME: config.addon doesn't affect the %CONFIG_ macros defined at
# the top of the specfile
%_sourcedir/configtool.pl ../config{,.addon}/%cpu_arch_flavor >.config
else
cp ../config/%cpu_arch_flavor .config
fi
%build_src_dir/scripts/config \
--set-str CONFIG_LOCALVERSION %release_num-%build_flavor \
--enable CONFIG_SUSE_KERNEL \
%if 0%{?__debug_package:1}
--enable CONFIG_DEBUG_INFO \
--disable CONFIG_DEBUG_INFO_REDUCED
%else
--disable CONFIG_DEBUG_INFO
%endif
MAKE_ARGS="$MAKE_ARGS -C %build_src_dir O=$PWD"
if test -e %_sourcedir/TOLERATE-UNKNOWN-NEW-CONFIG-OPTIONS; then
yes '' | make oldconfig $MAKE_ARGS
else
cp .config .config.orig
make silentoldconfig $MAKE_ARGS < /dev/null
%_sourcedir/check-for-config-changes .config.orig .config
rm .config.orig
fi
make prepare $MAKE_ARGS
make scripts $MAKE_ARGS
krel=$(make -s kernelrelease $MAKE_ARGS)
if [ "$krel" != "%kernelrelease-%build_flavor" ]; then
echo "Kernel release mismatch: $krel != %kernelrelease-%build_flavor" >&2
exit 1
fi
make clean $MAKE_ARGS
rm -f source
find . ! -type d -printf '%%P\n' > %my_builddir/obj-files
%build
cd %kernel_build_dir
source .kernel-binary.spec.buildenv
# create *.symref files in the tree
if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
%_sourcedir/modversions --unpack . < $_
fi
# The %{_smp_mflags} macro is defined to a number, make will spawn that many jobs.
# There are several ways how to define it:
# If you are using the build script:
# build --jobs=N kernel-$flavor.spec
# With plain rpmbuild:
# rpmbuild -ba --define 'jobs N' kernel-$flavor.spec
# To spawn as many jobs as there are cpu cores:
# rpmbuild -ba --define "%_smp_mflags -j 0$(grep -Ec 'cpu[0-9]' /proc/stat)" \
# kernel-$flavor.spec
# You can also set this permanently in ~/.rpmmacros:
# %_smp_mflags -j 0%(grep -Ec 'cpu[0-9]' /proc/stat)
%if %CONFIG_KMSG_IDS == "y"
chmod +x ../linux-%srcversion/scripts/kmsg-doc
make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
%else
make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
%endif
%install
# get rid of /usr/lib/rpm/brp-strip-debug
# strip removes too much from the vmlinux ELF binary
export NO_BRP_STRIP_DEBUG=true
export STRIP_KEEP_SYMTAB='*/vmlinux-*'
# /lib/modules/%kernelrelease-%build_flavor/build will be a stale symlink until the
# kernel-devel package is installed. Don't check for stale symlinks
# in the brp-symlink check:
export NO_BRP_STALE_LINK_ERROR=yes
cd %kernel_build_dir
mkdir -p %buildroot/boot
# (Could strip out non-public symbols.)
cp -p System.map %buildroot/boot/System.map-%kernelrelease-%build_flavor
add_vmlinux()
{
local vmlinux=boot/vmlinux-%kernelrelease-%build_flavor compressed=false
if test $1 == "--compressed"; then
compressed=true
fi
cp vmlinux %buildroot/$vmlinux
>%my_builddir/vmlinux.debug.files
%if 0%{?__debug_package:1}
if $compressed; then
local vmlinux_debug=usr/lib/debug/$vmlinux.debug
mkdir -p $(dirname %buildroot/$vmlinux_debug)
/usr/lib/rpm/debugedit -b $RPM_BUILD_DIR -d /usr/src/debug \
-l vmlinux.sourcefiles %buildroot/$vmlinux
# FIXME: create and package build-id symlinks
objcopy --only-keep-debug \
%buildroot/$vmlinux \
%buildroot/$vmlinux_debug || :
objcopy --add-gnu-debuglink=%buildroot/$vmlinux_debug \
--strip-debug \
%buildroot/$vmlinux || :
mkdir -p %buildroot/usr/src/debug
LANG=C sort -z -u vmlinux.sourcefiles | grep -Ezv "<(built-in|stdin)>" \
| ( cd %_builddir && cpio -pd0m %buildroot/usr/src/debug )
find %buildroot/usr/src/debug -type d -print0 | xargs -0 -r chmod 0755
find %buildroot/usr/src/debug -type f -print0 | xargs -0 -r chmod 0644
echo -e "%%defattr(-, root, root)\\n/$vmlinux_debug" >%my_builddir/vmlinux.debug.files
else
# make vmlinux executable so that find-debuginfo.sh picks it up
# (TODO: fix find-debuginfo.sh instead)
chmod +x %buildroot/$vmlinux
fi
%endif
if $compressed; then
gzip -n -9 %buildroot/$vmlinux
chmod a-x %buildroot/$vmlinux.gz
fi
}
%if %build_kdump
add_vmlinux
image=vmlinux
%else
# architecture specifics
%ifarch %ix86 x86_64
add_vmlinux --compressed
%if %build_xen
image=vmlinuz
%else
image=bzImage
%endif
cp -p arch/x86/boot/$image %buildroot/boot/vmlinuz-%kernelrelease-%build_flavor
image=vmlinuz
%endif
%ifarch alpha
add_vmlinux --compressed
cp -p arch/alpha/boot/vmlinux.gz %buildroot/boot/vmlinuz-%kernelrelease-%build_flavor
image=vmlinuz
%endif
%ifarch ppc ppc64
add_vmlinux
image=vmlinux
%endif
%ifarch ia64
add_vmlinux --compressed
mv %buildroot/boot/vmlinux-%kernelrelease-%build_flavor.gz \
%buildroot/boot/vmlinuz-%kernelrelease-%build_flavor
image=vmlinuz
%endif
%ifarch s390 s390x
add_vmlinux --compressed
cp -p arch/s390/boot/image %buildroot/boot/image-%kernelrelease-%build_flavor
image=image
if test -e arch/s390/boot/kerntypes.o; then
cp -p arch/s390/boot/kerntypes.o %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor
elif test -x "$(which dwarfextract 2>/dev/null)"; then
dwarfextract vmlinux %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor || echo "dwarfextract failed ($?)"
fi
%if %CONFIG_KMSG_IDS == "y"
mkdir -p %buildroot/usr/share/man/man9
find man -name '*.9' -exec install -m 644 -D '{}' %buildroot/usr/share/man/man9/ ';'
%endif
%endif
%ifarch sparc64
add_vmlinux --compressed
image=zImage
cp -p arch/sparc/boot/$image %buildroot/boot/vmlinuz-%kernelrelease-%build_flavor
image=vmlinux
%endif
# end of build_kdump
%endif
for sub in '-base' '' '-extra'; do
case "$sub" in
'-base' | '') base_package=1 ;;
*) base_package=0 ;;
esac
for script in preun postun pre post devel-pre devel-post; do
sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
-e "s:@IMAGE@:$image:g" \
-e "s:@FLAVOR""@:%build_flavor:g" \
-e "s:@SUBPACKAGE@:%name$sub:g" \
-e "s:@BASE_PACKAGE@:$base_package:g" \
-e "s:@RPM_VERSION_RELEASE@:%version-%release:g" \
-e "s:@RPM_TARGET_CPU@:%_target_cpu:g" \
-e "s:@CPU_ARCH_FLAVOR@:%cpu_arch_flavor:g" \
-e "s:@SRCVARIANT@:%variant:g" \
%_sourcedir/$script.sh > %my_builddir/$script$sub.sh
done
done
%if %build_kdump || %build_xen || %build_vanilla || %build_ps3
# keep this -suffix list in sync with post.sh and postun.sh
suffix=-%build_flavor
%endif
ln -s $image$suffix %buildroot/boot/$image$suffix
ln -s initrd$suffix %buildroot/boot/initrd$suffix
cp -p .config %buildroot/boot/config-%kernelrelease-%build_flavor
sysctl_file=%buildroot/boot/sysctl.conf-%kernelrelease-%build_flavor
for file in %my_builddir/sysctl/{defaults,%cpu_arch/arch-defaults,%cpu_arch_flavor}; do
if [ -f "$file" ]; then
cat "$file"
fi
done | sed '1i # Generated file - do not edit.' >$sysctl_file
if [ ! -s $sysctl_file ]; then
rm $sysctl_file
fi
%if %install_vdso
# Install the unstripped vdso's that are linked in the kernel image
make vdso_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
%endif
# Create a dummy initrd with roughly the size the real one will have.
# That way, YaST will know that this package requires some additional
# space in /boot.
dd if=/dev/zero of=%buildroot/boot/initrd-%kernelrelease-%build_flavor \
bs=1024 seek=2047 count=1
if [ %CONFIG_MODULES = y ]; then
mkdir -p %rpm_install_dir/%cpu_arch_flavor
mkdir -p %buildroot/usr/src/linux-obj/%cpu_arch
ln -s %build_flavor %buildroot/usr/src/linux-obj/%cpu_arch_flavor
gzip -n -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
make modules_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
if ! %_sourcedir/check-supported-list \
%_sourcedir %buildroot/lib/modules/%kernelrelease-%build_flavor; then
%if %supported_modules_check
exit 1
%endif
echo "Consistency check error: please update supported.conf."
fi
%ifarch s390 s390x
if test -e arch/s390/boot/kerntypes.o; then
:
elif test -x "$(which dwarfextract 2>/dev/null)" -a \
-f %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor; then
find %buildroot -name "*.ko" > kofiles.list
dwarfextract %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor -C kofiles.list || echo "dwarfextract failed ($?)"
fi
%endif
# Also put the resulting file in %rpm_install_dir/%cpu_arch/%build_flavor
# so that kernel-devel + kernel-%build_flavor is sufficient for building
# modules that have modversions as well.
mkdir -p %rpm_install_dir/%cpu_arch/%build_flavor
cp Module.symvers %rpm_install_dir/%cpu_arch/%build_flavor
# Table of types used in exported symbols (for modversion debugging).
%_sourcedir/modversions --pack . > %buildroot/boot/symtypes-%kernelrelease-%build_flavor
if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
else
rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
fi
# Some architecture's $(uname -m) output is different from the ARCH
# parameter that needs to be passed to kbuild. Create symlinks from
# $(uname -m) to the ARCH directory.
if [ ! -e %rpm_install_dir/%_target_cpu ]; then
ln -sf %cpu_arch %rpm_install_dir/%_target_cpu
ln -sf %cpu_arch %buildroot/usr/src/linux-obj/%_target_cpu
fi
# We were building in %my_builddir/linux-%srcversion, but the sources will
# later be installed in /usr/src/linux-%srcversion-%source_rel. Fix up the
# build symlink.
rm -f %buildroot/lib/modules/%kernelrelease-%build_flavor/{source,build}
ln -s %src_install_dir \
%buildroot/lib/modules/%kernelrelease-%build_flavor/source
ln -s %obj_install_dir/%cpu_arch/%build_flavor \
%buildroot/lib/modules/%kernelrelease-%build_flavor/build
# Abort if there are any undefined symbols
msg="$(/sbin/depmod -F %buildroot/boot/System.map-%kernelrelease-%build_flavor \
-b %buildroot -ae %kernelrelease-%build_flavor 2>&1)"
if [ $? -ne 0 ] || echo "$msg" | grep 'needs unknown symbol'; then
exit 1
fi
%if %split_base
%_sourcedir/split-modules -d %buildroot \
-o %my_builddir \
-b %kernel_build_dir/Module.base \
%if ! %supported_modules_check
-i \
%endif
-s %kernel_build_dir/Module.supported
%if ! %split_extra
cat %my_builddir/unsupported-modules >>%my_builddir/main-modules
%endif
%else
( cd %buildroot
find lib/modules/%kernelrelease-%build_flavor -type f -name '*.ko' -printf '/%%p\n'
) > %my_builddir/base-modules
%endif
res=0
if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
# check for kabi changes
%_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
%my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
Module.symvers || res=$?
fi
if [ $res -ne 0 ]; then
if [ ! -e %my_builddir/kabi/%cpu_arch/ignore-%build_flavor -a \
! -e %_sourcedir/IGNORE-KABI-BADNESS ]; then
echo "Create a file IGNORE-KABI-BADNESS in the kernel-source" \
"directory to build this kernel even though its badness is" \
"higher than allowed for an official kernel."
exit 1
fi
fi
tar -cf - -T %my_builddir/obj-files | \
tar -xf - -C %rpm_install_dir/%cpu_arch_flavor
# bnc#507084
find %rpm_install_dir/%cpu_arch_flavor/scripts -type f -perm -111 | \
while read f; do
case "$(file -b "$f")" in
ELF\ *\ executable*)
strip "$f"
esac
done
# Replace the absolute with a relative path
sed -i "s,%build_src_dir,../../../linux-%kernelrelease%variant,g" \
%rpm_install_dir/%cpu_arch_flavor/Makefile
fi
add_dirs_to_filelist() {
sed -rn '
# print file name
p
# remove filelist macros
s:%%[a-z]+(\([^)]+\))? ?::g
# add %%dir prefix
s:^:%%dir :
# print all parents
:a
# skip directories owned by other packages
s:^%%dir (/boot|/etc|/lib/(modules|firmware)|/usr/src)/[^/]+$::
s:/[^/]+$::p
ta
' "$@" | sort -u
}
# Collect the file lists.
shopt -s nullglob
> %my_builddir/kernel-devel.files
for file in %buildroot/boot/vmlinux-*.gz %buildroot/boot/symtypes* \
%buildroot/lib/modules/*/{build,source}; do
f=${file##%buildroot}
echo "$f" >> %my_builddir/kernel-devel.files
done
{ cd %buildroot
find boot \
\( -type l -o -name 'initrd-*' \) -printf '%%%%ghost /%%p\n' -o \
-type f -name 'vmlinux-*' -printf '%%%%attr(0644, root, root) /%%p\n' -o \
-type f -printf '/%%p\n'
# Add the auto-generated (by mkdumprd) kdump initrd to %ghost so that
# the file gets removed when uninstalling the kernel.
echo '%%ghost /boot/initrd-%kernelrelease-kdump'
touch $RPM_BUILD_ROOT/boot/initrd-%kernelrelease-kdump
if [ %CONFIG_MODULES = y ]; then
find lib/modules/%kernelrelease-%build_flavor \
-type d -o \
\( -path '*/modules.*' ! -path '*/modules.order' \
! -path '*/modules.builtin' \) -printf '%%%%ghost /%%p\n' \
-o -name '*.ko' -prune -o -printf '/%%p\n'
cat %my_builddir/base-modules
fi
test -d lib/firmware/%kernelrelease-%build_flavor && \
find lib/firmware/%kernelrelease-%build_flavor \
-type d -o \
-printf '/%%p\n'
if [ -e .%_docdir/%name ]; then
echo "%%doc %_docdir/%name"
fi
} | sort -u >%my_builddir/tmp
cat %my_builddir/tmp %my_builddir/kernel-devel.files | sort | uniq -u | \
add_dirs_to_filelist >%my_builddir/kernel-base.files
rm %my_builddir/tmp
%if %split_base
add_dirs_to_filelist %my_builddir/{kernel-base.files,main-modules} \
> %my_builddir/kernel-main.files
%endif
%if %split_extra
add_dirs_to_filelist %my_builddir/unsupported-modules > %my_builddir/kernel-extra.files
%endif
# Hardlink duplicate files automatically (from package fdupes): It doesn't save
# much, but it keeps rpmlint from breaking the package build. Note that we skip
# /usr/src/linux-obj intentionally, to not accidentally break timestamps there
%fdupes $RPM_BUILD_ROOT/lib
%preun -f preun.sh
%postun -f postun.sh
%pre -f pre.sh
%post -f post.sh
%if %split_base
%files -f kernel-main.files
%else
%files -f kernel-base.files
%endif
%defattr(-, root, root)
%package base
Summary: @SUMMARY@ - base modules
License: GPL v2 only
Group: System/Kernel
Url: http://www.kernel.org/
AutoReqProv: on
Provides: multiversion(kernel)
Provides: kernel-base = %version-%source_rel
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): perl-Bootloader
Requires(post): mkinitrd
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
%description base
@DESCRIPTION@
This package contains only the base modules, required in all installs.
%source_timestamp
%preun base -f preun-base.sh
%postun base -f postun-base.sh
%pre base -f pre-base.sh
%post base -f post-base.sh
%if %split_base
%files base -f kernel-base.files
%defattr(-, root, root)
%endif
%package extra
Summary: @SUMMARY@ - Unsupported kernel modules
License: GPL v2 only
Group: System/Kernel
Url: http://www.kernel.org/
AutoReqProv: on
Provides: multiversion(kernel)
Provides: %name-extra_%_target_cpu = %version-%release
Provides: kernel-extra = %version-%source_rel
Requires: %{name}_%_target_cpu = %version-%release
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): perl-Bootloader
Requires(post): mkinitrd
Supplements: packageand(product(SUSE_SLED):%{name}_%_target_cpu)
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
%description extra
@DESCRIPTION@
This package contains additional modules not supported by Novell.
%source_timestamp
%preun extra -f preun-extra.sh
%postun extra -f postun-extra.sh
%pre extra -f pre-extra.sh
%post extra -f post-extra.sh
%if %split_extra
%files extra -f kernel-extra.files
%defattr(-, root, root)
%endif
%if %CONFIG_KMSG_IDS == "y"
%package man
Summary: The collection of man pages generated by the kmsg script.
License: GPL v2 only
Group: System/Kernel
%description man
This package includes the man pages that have been generated from the
kmsg message documentation comments.
%source_timestamp
%files man
%defattr(-,root,root)
/usr/share/man/man9/*
%endif
%package devel
Summary: Development files necessary for building kernel modules
License: GPL v2 only
Group: Development/Sources
Provides: multiversion(kernel)
Provides: %name-devel = %version-%source_rel
Requires: kernel-devel%variant = %version-%source_rel
Supplements: packageand(%name:kernel-devel%variant)
AutoReqProv: on
%description devel
This package contains files necessary for building kernel modules (and
kernel module packages) against the %build_flavor flavor of the kernel.
%source_timestamp
%if %CONFIG_MODULES == "y"
%pre devel -f devel-pre.sh
%post devel -f devel-post.sh
%files devel -f kernel-devel.files
%defattr(-,root,root)
%dir %obj_install_dir
%dir %obj_install_dir/%cpu_arch
%dir /usr/src/linux-obj
%dir /usr/src/linux-obj/%cpu_arch
%ghost /usr/src/linux-obj/%cpu_arch_flavor
%obj_install_dir/%cpu_arch_flavor
%if %_target_cpu != %cpu_arch
%obj_install_dir/%_target_cpu
/usr/src/linux-obj/%_target_cpu
%endif
%endif
%package devel-debuginfo
# rpm doesn't notice that vmlinux.debug belongs to the gzipped vmlinux.gz
Summary: Debug information for package %name-devel
License: GPL v2 only
Group: Development/Debug
%description devel-debuginfo
Debug information for package %name-devel
%source_timestamp
%files devel-debuginfo -f vmlinux.debug.files
%changelog

24269
kernel-debug.changes Normal file

File diff suppressed because it is too large Load Diff

16441
kernel-debug.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-default.changes Normal file

File diff suppressed because it is too large Load Diff

16454
kernel-default.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-desktop.changes Normal file

File diff suppressed because it is too large Load Diff

16474
kernel-desktop.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-docs.changes Normal file

File diff suppressed because it is too large Load Diff

15662
kernel-docs.spec Normal file

File diff suppressed because it is too large Load Diff

101
kernel-docs.spec.in Normal file
View File

@ -0,0 +1,101 @@
#
# spec file for package kernel-docs@VARIANT@ (Version @RPMVERSION@)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
%define patchversion @PATCHVERSION@
%define variant @VARIANT@%{nil}
%include %_sourcedir/kernel-spec-macros
Name: kernel-docs@VARIANT@
Summary: Kernel Documentation
Version: @RPMVERSION@
%if %using_buildservice
Release: @RELEASE_PREFIX@<RELEASE>
%else
Release: @RELEASE_PREFIX@0
%endif
BuildRequires: docbook-toys docbook-utils ghostscript_any libjpeg-devel texlive transfig xmlto xorg-x11-devel
BuildRequires: kernel-source%variant
Url: http://www.kernel.org/
License: GPL v2 or later
Group: Documentation/Man
AutoReqProv: on
Provides: %name = %version-%source_rel
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: kernel-spec-macros
%description
These are the PDF documents and man pages (section 9) built from
thecurrent kernel sources.
%prep
cp -av /etc/texmf/web2c/texmf.cnf .
cat << EOF >> texmf.cnf
main_memory.pdfjadetex = 2500000
hash_extra.pdfjadetex = 70000
max_strings.pdfjadetex = 120000
save_size.pdfjadetex = 10000
EOF
%setup -T -c
%build
# use texmf.cnf from local source
export TEXMFCNF=$RPM_BUILD_DIR
export LANG=en_US
make -C /usr/src/linux%variant O=$PWD -k -i mandocs %{?jobs:-j%jobs}
make -C /usr/src/linux%variant O=$PWD -k -i pdfdocs %{?jobs:-j%jobs}
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/%{_mandir}/man9
# filter out obscure device drivers - they clutter up the rpm and don't add any real value
find Documentation/DocBook/ -name '*.9.gz' |
egrep -v 'man/(sis[69]|rio|fsl|struct_rio|RIO|mpc85|set_rx_mode|mdio_(read|write)|mii_ioctl|mca_|z8530|nand|sppp|piix|(read|write)_zs)' |
while read i ; do
cp $i $RPM_BUILD_ROOT/%{_mandir}/man9
done
install -d $RPM_BUILD_ROOT/usr/share/doc/kernel
cp -a Documentation/DocBook/*.pdf $RPM_BUILD_ROOT/usr/share/doc/kernel || true
if [ -d Documentation/kdb ] ; then
for i in Documentation/kdb/*.m* ; do
k=`basename $i`
k=${k/man/9}
k=${k/mm/9}
cp $i $RPM_BUILD_ROOT/%{_mandir}/man9/$k
done
fi
ln -s /usr/share/man/man9/request_threaded_irq.9.gz $RPM_BUILD_ROOT/usr/share/man/man9/request_irq.9.gz
cp -a /usr/src/linux%variant/{COPYING,CREDITS,MAINTAINERS,README,REPORTING-BUGS} .
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc COPYING CREDITS MAINTAINERS README REPORTING-BUGS
%{_mandir}/man9/*
%docdir /usr/share/doc/kernel
/usr/share/doc/kernel
%changelog

24269
kernel-ec2.changes Normal file

File diff suppressed because it is too large Load Diff

16444
kernel-ec2.spec Normal file

File diff suppressed because it is too large Load Diff

75
kernel-module-subpackage Normal file
View File

@ -0,0 +1,75 @@
%package -n %{-n*}-%1
%define _this_kmp_version %{-v*}_k%(echo %2 | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/; # use 2.6.x.0 for mainline kernels')
Version: %_this_kmp_version
Release: %{-r*}
%(
for spec in {%_sourcedir,%_specdir}/%name.spec /dev/null; do
[ -e $spec ] && break
done
awk '
BEGIN { tags["summary"] = "Summary: %summary"
tags["group"] = "Group: %group" }
/^%%/ { in_pkg_header = \
($0 ~ /^%%package[ \t]+KMP[ \t]*$/ ||
$0 ~ /^%%package[ \t]+-n[ \t]*%name-KMP[ \t]*$/)
next }
in_pkg_header && /^(Summary|Group):[ \t]*/ \
{ tag = tolower($1) ; sub(/:$/, "", tag)
tags[tag] = $0 }
END { print tags["summary"]
print tags["group"] }
' $spec
)
Provides: %{-n*} = %_this_kmp_version
Provides: multiversion(kernel)
Requires: coreutils grep
Enhances: kernel-%1
AutoReqProv: on
%{-p:%{expand:%(cd %_sourcedir; cat %{-p*})}}
%description -n %{-n*}-%1
%(
for spec in {%_sourcedir,%_specdir}/%name.spec /dev/null; do
[ -e $spec ] && break
done
awk '
/^%%/ { in_desc = \
($0 ~ /^%%description[ \t]+KMP[ \t]*$/ ||
$0 ~ /^%%description[ \t]+-n[ \t]*%name-KMP[ \t]*$/)
next }
in_desc { print; good = 1 }
END { exit(! good) }
' $spec || \
awk '
/^%%/ { in_desc = \
($0 ~ /^%%description[ \t]*$/ ||
$0 ~ /^%%description[ \t]+-n[ \t]*%name[ \t]*$/)
next }
in_desc { print; good = 1 }
END { exit(! good) }
' $spec
)
%post -n %{-n*}-%1
nvr=%{-n*}-%1-%_this_kmp_version-%{-r*}
wm2=/usr/lib/module-init-tools/weak-modules2
if [ -x $wm2 ]; then
%{-b:KMP_NEEDS_MKINITRD=1} /bin/bash -${-/e/} $wm2 --add-kmp $nvr
fi
%preun -n %{-n*}-%1
nvr=%{-n*}-%1-%_this_kmp_version-%{-r*}
rpm -ql $nvr | sed -n '/\.ko$/p' > /var/run/rpm-$nvr-modules
%postun -n %{-n*}-%1
nvr=%{-n*}-%1-%_this_kmp_version-%{-r*}
modules=( $(cat /var/run/rpm-$nvr-modules) )
rm -f /var/run/rpm-$nvr-modules
if [ ${#modules[*]} = 0 ]; then
echo "WARNING: $nvr does not contain any kernel modules" >&2
exit 0
fi
wm2=/usr/lib/module-init-tools/weak-modules2
if [ -x $wm2 ]; then
printf '%s\n' "${modules[@]}" | /bin/bash -${-/e/} $wm2 --remove-kmp $nvr
fi
%files -n %{-n*}-%1
%{-f:%{expand:%(cd %_sourcedir; cat %{-f*})}}
%{!-f:%defattr (-,root,root)}
%{!-f:/lib/modules/%2-%1}

24269
kernel-pae.changes Normal file

File diff suppressed because it is too large Load Diff

16459
kernel-pae.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-ppc64.changes Normal file

File diff suppressed because it is too large Load Diff

16463
kernel-ppc64.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-s390.changes Normal file

File diff suppressed because it is too large Load Diff

16438
kernel-s390.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-source.changes Normal file

File diff suppressed because it is too large Load Diff

2
kernel-source.rpmlintrc Normal file
View File

@ -0,0 +1,2 @@
# These zero-length files are correct:
addFilter("zero-length /usr/src/linux-2\.6\..*obj/.*include/config.*h")

15819
kernel-source.spec Normal file

File diff suppressed because it is too large Load Diff

258
kernel-source.spec.in Normal file
View File

@ -0,0 +1,258 @@
#
# spec file for package kernel-source@VARIANT@ (Version @RPMVERSION@)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
# icecream 0
%define srcversion @SRCVERSION@
%define patchversion @PATCHVERSION@
%define variant @VARIANT@%{nil}
%define vanilla_only @VANILLA_ONLY@
%include %_sourcedir/kernel-spec-macros
%define src_install_dir usr/src/linux-%kernelrelease%variant
Name: kernel-source@VARIANT@
Summary: The Linux Kernel Sources
Version: @RPMVERSION@
%if %using_buildservice
Release: @RELEASE_PREFIX@<RELEASE>
%else
Release: @RELEASE_PREFIX@0
%endif
License: GPL v2 only
Group: Development/Sources
Url: http://www.kernel.org/
AutoReqProv: off
BuildRequires: coreutils sed
BuildRequires: fdupes
Requires(post): coreutils sed
Provides: multiversion(kernel)
Provides: linux
Provides: %name = %version-%source_rel
Source0: http://www.kernel.org/pub/linux/kernel/v2.6/linux-%srcversion.tar.bz2
Source2: source-post.sh
Source3: kernel-source.rpmlintrc
Source8: devel-pre.sh
Source9: devel-post.sh
Source10: preun.sh
Source11: postun.sh
Source12: pre.sh
Source13: post.sh
Source14: series.conf
Source16: guards
Source17: apply-patches
Source21: config.conf
Source23: supported.conf
Source33: check-for-config-changes
Source34: check-supported-list
Source35: group-source-files.pl
Source37: README.SUSE
Source38: README.KSYMS
Source39: config-options.changes.txt
Source40: source-timestamp
Source44: find-provides
Source45: split-modules
Source46: modversions
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
Source51: mkspec
Source52: kernel-source%variant.changes
Source53: kernel-source.spec.in
Source54: kernel-binary.spec.in
Source55: kernel-syms.spec.in
Source56: kernel-docs.spec.in
Source60: config.sh
Source61: compute-PATCHVERSION.sh
Source62: old-packages.conf
Source63: arch-symbols
Source64: package-descriptions
Source65: kernel-spec-macros
Source66: configtool.pl
Source67: log.sh
Source68: host-memcpy-hack.h
Source100: config.tar.bz2
Source101: config.addon.tar.bz2
Source102: patches.arch.tar.bz2
Source103: patches.drivers.tar.bz2
Source104: patches.fixes.tar.bz2
Source105: patches.rpmify.tar.bz2
Source106: patches.suse.tar.bz2
Source107: patches.xen.tar.bz2
Source108: patches.addon.tar.bz2
Source109: patches.kernel.org.tar.bz2
Source110: patches.apparmor.tar.bz2
Source111: patches.rt.tar.bz2
Source112: patches.trace.tar.bz2
Source113: patches.kabi.tar.bz2
Source120: kabi.tar.bz2
Source121: sysctl.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
Prefix: /usr/src
# Source is only complete with devel files.
Requires: kernel-devel = %version-%release
%(chmod +x %_sourcedir/{@SCRIPTS@})
%define symbols %(set -- $([ -e %_sourcedir/extra-symbols ] && cat %_sourcedir/extra-symbols) ; echo $*)
%define variant_symbols %(case %name in (*-rt) echo "RT" ;; esac)
%define do_vanilla "%variant" == ""
%description
Linux kernel sources with many fixes and improvements.
%source_timestamp
%package -n kernel-devel%variant
Summary: Development files needed for building kernel modules
License: GPL v2 only
Group: Development/Sources
AutoReqProv: off
Provides: multiversion(kernel)
Provides: kernel-devel%variant = %version-%source_rel
%description -n kernel-devel%variant
Kernel-level headers and Makefiles required for development of
external kernel modules.
%source_timestamp
%package vanilla
Summary: Vanilla Linux kernel sources with minor build fixes.
License: GPL v2 only
Group: Development/Sources
AutoReqProv: off
Provides: multiversion(kernel)
Provides: %name-vanilla = %version-%source_rel
%description vanilla
Vanilla Linux kernel sources with minor build fixes.
%source_timestamp
%prep
if ! [ -e %_sourcedir/linux-%srcversion.tar.bz2 ]; then
echo "Please get a copy of linux-%srcversion.tar.bz2 from" \
"ftp://ftp.kernel.org/pub/linux/kernel/v2.6/."
fi
echo "Symbol(s): %symbols"
# Unpack all sources and patches
%setup -q -c -T @UNPACK_PATCHES@
%build
mkdir -p $RPM_BUILD_ROOT/usr/src
cd $RPM_BUILD_ROOT/usr/src
# Unpack the vanilla kernel sources
tar -xjf %_sourcedir/linux-%srcversion.tar.bz2
if test "%srcversion" != "%kernelrelease%variant"; then
mv linux-%srcversion linux-%kernelrelease%variant
fi
%if %do_vanilla
%if %vanilla_only
mv \
%else
cp -al \
%endif
linux-%kernelrelease%variant linux-%kernelrelease-vanilla
cd linux-%kernelrelease-vanilla
%_sourcedir/apply-patches --vanilla %_sourcedir/series.conf %my_builddir %symbols
rm -f $(find . -name ".gitignore")
cd ..
%endif
%if ! %vanilla_only
ln -sf linux%variant linux%variant # dummy symlink
cd linux-%kernelrelease%variant
%_sourcedir/apply-patches %_sourcedir/series.conf %my_builddir %symbols
rm -f $(find . -name ".gitignore")
if [ -f %_sourcedir/localversion ] ; then
cat %_sourcedir/localversion > localversion
fi
%endif
# Hardlink duplicate files automatically (from package fdupes).
%fdupes $RPM_BUILD_ROOT
%install
%if ! %vanilla_only
# Install the documentation and example Kernel Module Package.
DOC=$RPM_BUILD_ROOT/usr/share/doc/packages/%name
mkdir -p $DOC
cp %_sourcedir/README.SUSE %_sourcedir/config-options.changes.txt $DOC
ln -s /usr/share/doc/packages/%name/README.SUSE %buildroot/%src_install_dir/
install -m 755 -d $RPM_BUILD_ROOT/etc/rpm
install -m 644 %_sourcedir/macros.kernel-source $RPM_BUILD_ROOT/etc/rpm/
install -m 755 -d $RPM_BUILD_ROOT/usr/lib/rpm
install -m 644 %_sourcedir/kernel-module-subpackage \
$RPM_BUILD_ROOT/usr/lib/rpm/
for script in post; do
sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
-e "s:@SRCVARIANT@:%variant:g" \
%_sourcedir/source-$script.sh > %name-$script.sh
done
pushd "%buildroot"
perl "%_sourcedir/group-source-files.pl" \
-D "$OLDPWD/devel.files" -N "$OLDPWD/nondevel.files" \
-L "%src_install_dir"
popd
# kernel-source and kernel-$flavor-devel are built independently, but the
# shipped sources (/usr/src/linux/) need to be older than generated files
# (/usr/src/linux-obj). We rely on the git commit timestamp to not point into
# the future and be thus lower than the timestamps of files built from the
# source (bnc#669669).
ts="$(head -n1 %_sourcedir/source-timestamp)"
find %buildroot/usr/src/linux* ! -type l | xargs touch -d "$ts"
%post -f %name-post.sh
%post -n kernel-devel%variant -f %name-post.sh
%files -f nondevel.files
%defattr(-, root, root)
%ghost /usr/src/linux%variant
/usr/src/linux%variant-%kernelrelease/README.SUSE
%files -n kernel-devel%variant -f devel.files
%defattr(-,root,root)
%ghost /usr/src/linux%variant
/usr/share/doc/packages/%name
/etc/rpm/macros.kernel-source
/usr/lib/rpm/kernel-module-subpackage
%endif
%if %do_vanilla
%files vanilla
%defattr(-, root, root)
/usr/src/linux-%kernelrelease-vanilla
%endif
%changelog

36
kernel-spec-macros Normal file
View File

@ -0,0 +1,36 @@
# This file is included by all the kernel-*.spec files
# Build with bash instead of sh as the shell: this turns on bash
# extensions like <(...).
%define _buildshell /bin/bash
%define using_buildservice 0%{?opensuse_bs}
# source_rel is the package release string, without the rebuild counter
# generated by the build service. In non-official builds, the upstream
# EXTRAVERSION component is also part of the release string,
# e.g. next.20110101.9.6 (hyphens are replaced by periods). Builds in the
# official distribution projects replace the release string though.
%define source_rel %release
%if %using_buildservice
%define source_rel %(release=%release; echo ${release%.*})
%endif
# release_num is the numeric source revision part of the release number,
# i.e. source_rel without the upstream tags like -rcX. A hyphen is added
# automatically for convenient use.
# examples: rc3 -> "", rc3.1 -> -1, next.20110101.9 -> -9
#
# patchversion is inserted into the spec files by the mkspec script, it is the
# upstream release string unchanged, e.g. 2.6.38-rc3
%define release_num %(upstream=%patchversion; upstream=${upstream#%version}; upstream=${upstream#-}; upstream=${upstream//-/.}; rel="%source_rel" ; res="${rel#$upstream}"; res=${res#.}; echo ${res:+-}${res})
# how the kernel release string (uname -r) should look like
%define kernelrelease %patchversion%release_num
%define my_builddir %_builddir/%{name}-%{version}
# macro to add the source timestamp to package descriptions
%define source_timestamp %(sed '1s/^/Source Timestamp: /' %_sourcedir/source-timestamp || :)
# vim: ft=spec

24269
kernel-syms.changes Normal file

File diff suppressed because it is too large Load Diff

15644
kernel-syms.spec Normal file

File diff suppressed because it is too large Load Diff

66
kernel-syms.spec.in Normal file
View File

@ -0,0 +1,66 @@
#
# spec file for package kernel-syms@VARIANT@ (Version @RPMVERSION@)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
%define variant @VARIANT@%{nil}
%include %_sourcedir/kernel-spec-macros
Name: kernel-syms@VARIANT@
Summary: Kernel Symbol Versions (modversions)
Version: @RPMVERSION@
%if %using_buildservice
Release: @RELEASE_PREFIX@<RELEASE>
%else
%define kernel_source_release %(LC_ALL=C rpm -q kernel-devel%variant-%version --qf "%{RELEASE}" | grep -v 'not installed' || echo 0)
Release: %kernel_source_release
%endif
License: GPL v2 only
Group: Development/Sources
Url: http://www.kernel.org/
AutoReqProv: off
BuildRequires: coreutils
@REQUIRES@
Provides: multiversion(kernel)
Provides: %name = %version-%source_rel
Source: README.KSYMS
Requires: kernel-devel%variant = %version-%source_rel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: @ARCHS@
Prefix: /usr/src
%description
Kernel symbols, such as functions and variables, have version
information attached to them. This package contains the symbol versions
for the standard kernels.
This package is needed for compiling kernel module packages with proper
package dependencies.
%source_timestamp
%prep
%install
install -m 644 -D %{SOURCE0} %buildroot/%_docdir/%name/README.SUSE
%files
%defattr(-, root, root)
%dir %_docdir/%name
%_docdir/%name/README.SUSE
%changelog

24269
kernel-trace.changes Normal file

File diff suppressed because it is too large Load Diff

16446
kernel-trace.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-vanilla.changes Normal file

File diff suppressed because it is too large Load Diff

16442
kernel-vanilla.spec Normal file

File diff suppressed because it is too large Load Diff

24269
kernel-xen.changes Normal file

File diff suppressed because it is too large Load Diff

16444
kernel-xen.spec Normal file

File diff suppressed because it is too large Load Diff

3
linux-3.1-rc8.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4a266339035e4e5523a097152c0ceb9a971211558fb472e88a33c151e8139d02
size 77219233

Binary file not shown.

167
log.sh Normal file
View File

@ -0,0 +1,167 @@
#! /bin/sh
# log.sh - Automate insertion of patches into a kernel rpm tree managed
# with series.conf
#
# Usage example:
#
# osc branch openSUSE:11.3/kernel-source
# osc co home:philipsb:branches:openSUSE:11.3:Update:Test/kernel-source
# mv ~/linux-2.6/driver-fix-for-something.patch .
# echo -e "\tpatches.drivers/driver-fix-for-something.patch" >> series.conf
# ./log.sh
# osc commit
#############################################################################
# Copyright (c) 2004-2006,2008-2010 Novell, Inc.
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail,
# you may find current contact information at www.novell.com
#############################################################################
# Construct a changes entry and commit log from a patch.
CHANGES=kernel-source.changes
trap 'rm -rf "$tmpdir"' EXIT
tmpdir=$(mktemp -d /tmp/${0##*/}.XXXXXX)
message=$tmpdir/message
log_entry() {
local entry=$1
echo "$entry" \
| fmt --width 65 \
| sed -e '1s/^/- /' -e '2,$s/^/ /' \
>> $message
}
patch_meta() {
local patch=$1
subject=$(formail -c -x Subject < "$patch" \
| sed -e 's, *\[[#/ A-Za-z0-9-]*\],,')
subject=${subject## }
subject=${subject%.}
set -- $(formail -c -x References -x Reference < "$patch")
references="$*"
}
patch_log_entry() {
local patch=$1 subject references old_subj old_ref old_patch="$tmpdir/old"
git show "HEAD:$patch" >"$old_patch" 2>/dev/null
patch_meta "$old_patch"
old_subj="$subject"
old_ref="$references"
patch_meta "$patch"
local msg
if test -z "$subject" -o "$subject" != "$old_subj"; then
msg="$subject${references:+ ($references)}"
elif test "$references" != "$old_ref"; then
if test -n "$references"; then
msg="Update references ($references)"
fi
else
msg="Refresh"
fi
log_entry "$patch: $msg${msg:+.}"
}
find_patches() {
osc diff series.conf \
| sed -n "s/^+\s*\(patches.*\)/\1/p"
}
for file in "$@" $(find_patches); do
dirname=$(dirname $file)
basename=$(basename $file)
archive=$dirname.tar.bz2
if [ ! -f $basename ]; then
echo "ERROR: $basename added to series.conf but doesn't exist in $PWD"
exit 1
fi
if [ ! -d $dirname ]; then
tar xvf $archive
fi
mv $basename $dirname
rm $archive
tar cfj $archive $dirname
files[${#files[@]}]=$file
done
if [ ${#files[@]} -eq 0 ]; then
echo "No modified files" >&2
exit 1
fi
for file in "${files[@]}"; do
if [ "${file:0:1}" = - ]; then
log_entry "${file:1}: Delete."
else
case "$file" in
config/*)
if [ -z "$configs_updated" ]; then
log_entry "Update config files."
configs_updated=1
fi
;;
patches.*)
patch_log_entry "$file"
;;
kabi/*/symvers-* | kabi/*/symtypes-* | kabi/*/symsets-* )
if [ -z "$symvers_updated" ]; then
log_entry "Update reference module symbol versions."
symvers_updated=1
fi
;;
series.conf)
# don't log changes in there
;;
*)
log_entry "$file: "
;;
esac
fi
done
if [ ! -s $message ]; then
echo "- " >> $message
fi
if osc vc $CHANGES $message; then
entry=$(sed -ne '1,2d' -e '/^--*$/!p' -e '/^--*$/q' $CHANGES)
entry=${entry##$'\n'}
entry=${entry%%$'\n'}
fi
for c in *.changes; do
[ $c = $CHANGES ] && continue
cp $CHANGES $c
done

43
macros.kernel-source Normal file
View File

@ -0,0 +1,43 @@
# A few cross-distro definitions:
%kernel_module_package_release 1
%kernel_module_package_buildreqs module-init-tools kernel-syms
# Defines %flavors_to_build and %kernel_source() as a side effect.
%_kernel_module_package(n:v:r:t:f:Xp:b) \
%{expand:%( \
subpkg=%{-t*}%{!-t:/usr/lib/rpm/kernel-module-subpackage} \
echo "%%define _suse_kernel_module_subpackage(n:v:r:f:p:b) %%{expand:%%(cd %_sourcedir; cat $subpkg; echo %%%%nil)}" \
flavors_to_build= \
flavors="%*" \
for flavor in $(ls /usr/src/linux-obj/%_target_cpu 2>/dev/null); do \
case " $flavors " in \
(*" $flavor "*) \
[ -n "%{-X}" ] && continue ;; \
(*) \
[ -z "%{-X}" -a -n "$flavors" ] && continue ;; \
esac \
krel=$(make -s -C /usr/src/linux-obj/%_target_cpu/$flavor kernelrelease) \
kver=${krel%%-*} \
flavors_to_build="$flavors_to_build $flavor" \
echo "%%_suse_kernel_module_subpackage -n %{-n*}%{!-n:%name}-kmp -v %{-v*}%{!-v:%version} -r %{-r*}%{!-r:%release} %{-p} %{-b} $flavor $kver" \
done \
echo "%%global flavors_to_build${flavors_to_build:-%%nil}" \
echo "%%{expand:%%(test -z '%flavors_to_build' && echo %%%%internal_kmp_error)}" \
echo "%%global kernel_source() /usr/src/linux-obj/%_target_cpu/%%%%{1}" \
echo "%%global kernel_module_package_moddir() updates" \
\
echo "%package -n %{-n*}%{!-n:%name}-kmp-_dummy_" \
echo "Version: %version" \
echo "Summary: %summary" \
echo "Group: %group" \
echo "%description -n %{-n*}%{!-n:%name}-kmp-_dummy_" \
)}
# kernel_module_package: simply pass on all options and arguments.
%kernel_module_package(n:v:r:t:f:xp:b) \
%{expand:%%_kernel_module_package %{-x:-X} %{-n} %{-v} %{-r} %{-t} %{-f} %{-p} %*}
# suse_kernel_module_package: invert the meaning of the -x flag. (You are not
# supposed to understand why a simple %{-x:}%{!-x:-x} won't work.)
%suse_kernel_module_package(n:v:r:s:f:xp:b) \
%{expand:%%_kernel_module_package %{-x: }%{!-x:-X} %{-n} %{-v} %{-r} %{-s:-t %{-s*}} %{-f} %{-p} %*}

1
minmem Normal file
View File

@ -0,0 +1 @@
1048576

329
mkspec Normal file
View File

@ -0,0 +1,329 @@
#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;
use Getopt::Long;
my $dir = ".";
my $rpmrelease;
my $patches="";
GetOptions(
"patches=s" => \$patches,
"release=s" => \$rpmrelease
) or die "Usage: $0 [--release <release>] [--patches <dir>]\n";
# flavor -> [supported archs]
my %flavor_archs = parse_config_conf();
# subset to include in kernel-syms
my %syms_flavor_archs = parse_config_conf("syms");
# template name -> template body
my %templates = read_spec_templates();
# config.sh variables
my %vars = parse_config_sh();
my ($srcversion, $variant, $vanilla_only) =
($vars{'SRCVERSION'}, $vars{'VARIANT'}, $vars{'VANILLA_ONLY'});
$vanilla_only ||= "0";
# rpm changelog
my $changelog = convert_changes();
# package name -> [summary, description]
my %binary_descriptions = parse_descriptions();
$patches="--patches $patches" if $patches;
my $patchversion = `$dir/compute-PATCHVERSION.sh $patches`;
chomp $patchversion;
my $rpmversion = $patchversion;
# stuff the -rcX tag into the rpm version if possible;
$rpmversion =~ s/\.0-rc/.rc/;
$rpmversion =~ s/-rc\d+//;
$rpmversion =~ s/-/./g;
if (defined($rpmrelease)) {
# convince abuild that we really want this release number
xopen(my $fh, '>', "$dir/get_release_number.sh");
print $fh "#!/bin/sh\n";
print $fh "echo \"$rpmrelease.0\"\n";
close($fh);
chmod(0755, "$dir/get_release_number.sh");
} else {
$rpmrelease = "";
}
$rpmrelease =~ s/[^.]$/$&./;
$rpmrelease =~ s/-/./g;
my $sources = join("", $templates{source} =~ /\nSource\d+:[^\n]*/mg);
# Find all SourceN: foo.tar.bz2 lines and generate the NoSource:
# lines and the %setup line
my @tarballs = ($sources =~ /\nSource(\d+):[^\n]*\.tar\.bz2/mg);
my $nosource = join("\n", map { "NoSource: $_" } @tarballs);
# Source0 (the linux tarball) is unpacked manually
@tarballs = grep { $_ > 0 } @tarballs;
my $unpack_patches = join(" ", map { "-a $_" } @tarballs);
# List of scripts to automatically chmod +x before build
my $scripts = join(",", grep { is_script($_) }
($sources =~ /\nSource\d+:\s*([^\s]*)/mg));
my %macros = (
VARIANT => $variant,
VANILLA_ONLY => $vanilla_only,
SRCVERSION => $srcversion,
PATCHVERSION => $patchversion,
RPMVERSION => $rpmversion,
RELEASE_PREFIX => $rpmrelease,
SOURCES => $sources,
NOSOURCE => $nosource,
UNPACK_PATCHES => $unpack_patches,
SCRIPTS => $scripts,
);
# binary spec files
for my $flavor (sort keys(%flavor_archs)) {
my ($summary, $description);
if (!exists($binary_descriptions{"kernel-$flavor"})) {
print STDERR "warning: no description for kernel-$flavor found\n";
$summary = "The Linux Kernel";
$description = "The Linux Kernel.";
} else {
$summary = $binary_descriptions{"kernel-$flavor"}->[0];
$description = $binary_descriptions{"kernel-$flavor"}->[1];
}
do_spec('binary', "kernel-$flavor.spec", %macros,
FLAVOR => $flavor,
SUMMARY => $summary,
DESCRIPTION => $description,
ARCHS => join(" ", arch2rpm(@{$flavor_archs{$flavor}})),
PROVIDES_OBSOLETES => provides_obsoletes($flavor, @{$flavor_archs{$flavor}}),
);
}
# kernel-source.spec
do_spec('source', "kernel-source$variant.spec", %macros);
# kernel-docs.spec
do_spec('docs', "kernel-docs$variant.spec", %macros);
# kernel-syms.spec
{
my $requires = "";
my %all_archs;
for my $flavor (sort keys(%syms_flavor_archs)) {
next if $flavor eq "vanilla";
my @archs = arch2rpm(@{$syms_flavor_archs{$flavor}});
$all_archs{$_} = 1 for @archs;
$requires .= "%ifarch @archs\n";
$requires .= "Requires: kernel-$flavor-devel = \%version-\%source_rel\n";
$requires .= "%endif\n";
}
chomp $requires;
if (keys(%all_archs)) {
do_spec('syms', "kernel-syms$variant.spec", %macros,
REQUIRES => $requires,
ARCHS => join(" ", sort(keys(%all_archs))));
}
}
exit 0;
sub parse_config_conf {
my @symbols = @_;
my $symbols = join(' ', @symbols);
my %res;
for my $arch (split(/\s+/, `$dir/arch-symbols --list`)) {
my @flavors = `$dir/guards $arch $symbols < $dir/config.conf`;
next if @flavors == 0;
chomp @flavors;
@flavors = map { s/.*\///; $_ } @flavors;
for my $flavor (@flavors) {
$res{$flavor} ||= [];
push(@{$res{$flavor}}, $arch);
}
}
for my $flavor (keys(%res)) {
$res{$flavor} = [sort @{$res{$flavor}}];
}
return %res;
}
sub read_spec_templates {
my %res;
for my $template (qw(binary source syms docs)) {
xopen(my $fh, '<', "$dir/kernel-$template.spec.in");
local $/ = undef;
$res{$template} = <$fh>;
close($fh);
}
return %res;
}
# return a hash of config.sh variables
sub parse_config_sh {
my %res;
xopen(my $fh, '<', "$dir/config.sh");
while (<$fh>) {
chomp;
if (/^\s*([A-Z_]+)=(.*)/) {
$res{$1} = $2;
}
}
close($fh);
return %res;
}
# convert kernel-source.changes to rpm changelog
sub convert_changes {
my $res = "\%changelog\n";
my @progs = qw(/usr/lib/build/changelog2spec
/work/src/bin/tools/convert_changes_to_rpm_changelog);
my $changesfile = "$dir/kernel-source$variant.changes";
if (-e $changesfile) {
for my $prog (@progs) {
if (-x $prog) {
$res .= `$prog $changesfile`;
last;
}
}
}
chomp $res;
return $res;
}
sub parse_descriptions {
my %res;
my $current;
my $blank = "";
# 0 - expect summary, 1 - eating blank lines, 2 - reading description
my $state = 0;
xopen(my $fh, '<', "$dir/package-descriptions");
while (<$fh>) {
next if /^\s*#/;
if (/^==+\s+([^\s]+)\s+==+\s*$/) {
my $package = $1;
if ($current) {
chomp $current->[1];
}
$current = ["", ""];
$res{$package} = $current;
$state = 0;
next;
}
if (/^$/) {
if ($state == 2) {
$blank .= $_;
}
next;
}
# non-blank line and not === package ===
if ($state == 0) {
chomp;
$current->[0] = $_;
$state = 1;
} elsif ($state == 1) {
$current->[1] = $_;
$blank = "";
$state = 2;
} else {
$current->[1] .= $blank;
$blank = "";
$current->[1] .= $_;
}
}
if ($current) {
chomp $current->[1];
}
close($fh);
return %res;
}
sub is_script {
my $script = shift;
return undef if $script =~ /\.(tar\.(gz|bz2)|in|conf)$/;
return undef if $script =~ /^README/;
return 1 if $script =~ /\.pl$/;
open(my $fh, '<', $script) or return undef;
sysread($fh, my $shebang, 2);
close($fh);
return 1 if $shebang eq "#!";
return undef;
}
sub arch2rpm {
if (wantarray) {
return map { _arch2rpm($_) } @_;
}
return _arch2rpm($_[0]);
}
sub _arch2rpm {
my $arch = shift;
return "\%ix86" if $arch eq "i386";
return $arch;
}
sub append_changelog {
my $changelog = $_[1];
if ($_[0] =~ s/\%changelog$/$changelog/) {
return;
}
$_[0] .= $changelog;
}
sub provides_obsoletes {
my $flavor = shift;
my @archs = @_;
my $res = "";
for my $arch (@archs) {
my @packs = `$dir/guards $arch $flavor <$dir/old-packages.conf`;
chomp @packs;
next if (!@packs);
my $rpmarch = arch2rpm($arch);
chomp $rpmarch;
$res .= "\%ifarch $rpmarch\n";
$res .= "Provides: @packs\n";
$res .= "Obsoletes: @packs\n";
$res .= "\%endif\n";
}
chomp $res;
return $res;
}
sub do_spec {
my $template = shift;
my $specfile = shift;
my %macros = @_;
my $text = $templates{$template};
for my $m (keys %macros) {
$text =~ s/\@$m\@/$macros{$m}/g;
}
append_changelog($text, $changelog);
print "$specfile\n";
xopen(my $fh, '>', "$dir/$specfile");
print $fh $text;
close($fh);
return if $specfile eq "kernel-source$variant.spec";
my $changesfile = $specfile;
$changesfile =~ s/\.spec$//;
$changesfile .= ".changes";
copy("$dir/kernel-source$variant.changes", $changesfile);
}
sub xopen {
open($_[0], $_[1], $_[2]) or die "$_[2]: $!\n";
}

158
modversions Normal file
View File

@ -0,0 +1,158 @@
#! /usr/bin/perl -w
use File::Basename;
use File::Path;
use File::Find;
use Getopt::Long;
use strict;
my %symbol_type_name = (
n => 'normal', t => 'typedef', e => 'enum', s => 'struct', u => 'union',
E => 'enum constant'
);
my %definitions;
my %override;
my %override_locally;
my %locally_unknown;
my %locally_defined;
sub expand_types($);
sub expand_types($) {
my ($definition) = @_;
local ($_, $1, $2);
my @defn = split ' ', $definition;
for (@defn[1..$#defn]) {
if (/^(.)#(.*)/) {
#print "<<$defn[0] : $_>>\n";
next if exists $locally_defined{$_};
$locally_defined{$_} = 1;
if ($locally_unknown{$_}) {
print "override " if $override_locally{$_};
print "$_ $symbol_type_name{$1} $2 { UNKNOWN } \n";
} else {
if (!exists $definitions{$_}) {
die "Missing definition of $symbol_type_name{$1} $2\n";
}
expand_types("$_ $definitions{$_}");
}
}
}
print "override " if $override_locally{$defn[0]};
print "$definition\n";
}
sub pack_dump($$) {
my ($dir, $ext) = @_;
my @files;
$ext = ".symtypes" unless defined $ext;
$dir =~ s/\/+$//;
find(sub ($) { /\Q$ext\E$/ && push @files, $File::Find::name}, $dir);
map { s/^\Q$dir\E\/(.*)\Q$ext\E$/$1/ } @files;
foreach my $file (sort @files) {
print "/* $file.o */\n";
local *FD;
open FD, "< $dir/$file$ext"
or die "$dir/$file$ext: $!\n";
while (<FD>) {
chomp;
my $override = "";
if (s/^override //) {
$override = $&;
}
if (/^(\S)#(\S+)\s*(.*)/) {
my $sym = "$1#$2";
my $definition = $3;
if (/^$sym\s+$symbol_type_name{$1}\s+$2\s+{\s+UNKNOWN\s+}\s*$/) {
$_ = $override . substr($sym, 0, 1) . "##" . substr($sym, 2);
} else {
if (exists $definitions{$sym} && $definitions{$sym} eq $definition) {
if (($override ne "") == (exists $override{$sym})) {
next;
}
$_ = "$override$sym";
} else {
$definitions{$sym} = $definition;
if ($override eq "") {
delete $override{$sym};
} else {
$override{$sym} = 1;
$_ = "$override$_";
}
}
}
} elsif ($override) {
$_ = "$override$_";
}
print "$_\n";
}
close FD;
print "\n";
}
}
sub unpack_dump($$) {
my ($dir, $ext) = @_;
$ext = ".symref" unless defined $ext;
while (<STDIN>) {
next if /^$/;
chomp;
if (/^\/\* (.*)\.o \*\//) {
close STDOUT;
mkpath(dirname("$dir/$1$ext"));
open STDOUT, "> $dir/$1$ext"
or die "$dir/$1$ext: $!\n";
%locally_defined = ();
%locally_unknown = ();
%override_locally = %override;
next;
}
my $override = /^override\s/;
s/^override\s//;
if (/^([^ ])#(#?)([^ ]+) *(.*)$/) {
my $sym = "$1#$3";
if ($4 ne "") {
if (/\s+{\s+UNKNOWN\s+}\s*$/) {
$locally_unknown{$sym} = 1;
$override_locally{$sym} = $override;
} else {
$definitions{$sym} = $4;
$locally_unknown{$sym} = 0;
$override{$sym} = $override;
$override_locally{$sym} = $override;
}
} else {
$locally_unknown{$sym} = ($2 ne "");
$override_locally{$sym} = $override;
}
next;
} elsif (/^([^# ]*)/) {
$override_locally{$1} = $override;
}
expand_types($_);
}
}
my ($pack, $unpack, $ext);
GetOptions("pack" => \$pack, "unpack" => \$unpack, "ext:s" => \$ext)
&& ($pack || $unpack) && @ARGV == 1
or die "USAGE:\t$0 [--ext extension] --pack {dir} > file\n" .
"\t$0 [--ext extension] --unpack {dir} < file\n";
pack_dump($ARGV[0], $ext) if $pack;
unpack_dump($ARGV[0], $ext) if $unpack;

1
needed_space_in_mb Normal file
View File

@ -0,0 +1 @@
6144

36
old-packages.conf Normal file
View File

@ -0,0 +1,36 @@
# Defines which package names to include in the Provides and
# Obsoletes tags of spec files.
#
# When generating Provides, `p' is defined. When generating
# Obsoletes, `o' is defined.
#
# +ARCH: include only for this architecture.
# -!symbol: exclude unless symbol is also defined.
#
# Guards are always evaluated from left to right; the last
# guard that matches determines whether a line is included
# or not.
#
# For testing this file, run scripts/old-config.sh.
#
# i386 =================================================================
+i386 -!default smp kernel-smp
+i386 -!pae kernel-bigsmp
# x86_64 ===============================================================
+x86_64 -!default smp kernel-smp
# ia64 =================================================================
+ia64 -!default kernel-sn2
# ppc/ppc64 ============================================================
+ppc -!ppc64 kernel-pmac64 kernel-pseries64 kernel-iseries64
+ppc64 -vanilla kernel-kdump
# s390/s390x ===========================================================
+s390 -!s390 kernel-32bit
+s390x -!s390x kernel-64bit

123
package-descriptions Normal file
View File

@ -0,0 +1,123 @@
# Descriptions of the binary kernel packages. The format is
#
# === <package name> ===
# Summary (single line)
#
# Long description (multiple
# lines)
#
# Descriptions of the -base and -extra subpackages are derived from the
# main descriptions.
=== kernel-debug ===
A Debug Version of the Kernel
This kernel has several debug facilities enabled that hurt performance.
Only use this kernel when investigating problems.
=== kernel-default ===
The Standard Kernel
The standard kernel for both uniprocessor and multiprocessor systems.
=== kernel-desktop ===
Kernel optimized for the desktop
This kernel is optimized for the desktop. It is configured for lower latency
and has many of the features that aren't usually used on desktop machines
disabled.
%ifarch %ix86
This kernel supports up to 64GB of main memory. It requires Physical
Addressing Extensions (PAE), which were introduced with the Pentium Pro
processor.
PAE is not only more physical address space but also important for the
"no execute" feature which disables execution of code that is marked as
non-executable. Therefore, the PAE kernel should be used on any systems
that support it, regardless of the amount of main memory.
%endif
=== kernel-kdump ===
kernel for kdump
This kernel is intended for kdump. It can not be booted with a normal
bootloader, the kexec tool has to be used to load it. Once the system
crashes, the loaded kernel will be started to grab debug info from the
crashed kernel.
=== kernel-net ===
Minimal kernel with disk and net support
This kernel carries only networking and disk drivers to fit into the
standard Sun OpenBoot download buffer, and is intended for the
initial install and rescue mode only.
=== kernel-pae ===
Kernel with PAE Support
This kernel supports up to 64GB of main memory. It requires Physical
Addressing Extensions (PAE), which were introduced with the Pentium Pro
processor.
PAE is not only more physical address space but also important for the
"no execute" feature which disables execution of code that is marked as
non-executable. Therefore, the PAE kernel should be used on any systems
that support it, regardless of the amount of main memory.
=== kernel-ppc64 ===
Kernel for ppc64 Systems
This package contains the kernel for:
IBM pSeries 64bit machines IBM iSeries 64bit machines Apple G5 machines
Sony Playstation 3
The boot file is /boot/vmlinux.
The home page of the ppc64 project is http://www.penguinppc.org/
=== kernel-ps3 ===
kernel for ps3 bootloader
This package contains the kernel for the PS3 bootloader. PS3 systems
only have 4MB of flash memory for the bootloader, so this kernel needs
to be as small as possible and is _not_ meant to be installed in the
final system.
=== kernel-s390 ===
The Standard Kernel
The standard kernel.
=== kernel-trace ===
The Standard Kernel with Tracing Features
This kernel has different tracing features enabled (e.g. utrace, ftrace).
=== kernel-vanilla ===
The Standard Kernel - without any SUSE patches
The standard kernel - without any SUSE patches
=== kernel-xen ===
The Xen Kernel
The Linux kernel for Xen paravirtualization.
This kernel can be used both as the domain0 ("xen0") and as an
unprivileged ("xenU") kernel.
=== kernel-ec2 ===
The Amazon EC2 Xen Kernel
The Linux kernel for Xen paravirtualization.
This kernel can only be used both as an unprivileged ("xenU")
kernel (for Amazon EC2).
=== kernel-vmi ===
VMI-enabled kernel
The Linux Kernel designed to run on top of a virtual machine
interface layer (VMI).

3
patches.addon.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f40cf2e5bb426f03e8b22d891ab32ee3ed9a52de14a38ea09b826cf15ad00fb5
size 129

3
patches.apparmor.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e983af76e408802b165419548b17ed95e8d7b5765022505f9e8665ee3bfbbae2
size 8006

3
patches.arch.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ebdb967856ac0c240facb7e8c715ce48dd7d11768d7074e0ba66413317f0e02
size 73885

3
patches.drivers.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4f6e0520039a0a8c9132e519f5c4870dfdfb76b7b101f1b4645fccdca4f0041f
size 8125

3
patches.fixes.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0e39c181a85b824637f0a98221735145247405f7823c3982ec8de6210e67e10a
size 22095

3
patches.kabi.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8f17122f387e72f1e0cb4acb99148e8363b2e0d5aeeef4543b5750be0e0f290e
size 129

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9dde5510f9ad1aef9c1f1d3b2a8099a006fe55fdab5ebcf2c141624b999d057e
size 136

3
patches.rpmify.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2e86f169745ea6c3ff4443990499f338833d5c32346e99a3ad0fec9f735a0dfa
size 4336

3
patches.rt.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6a5f1b075a51886cf01e54334bddd9c8a8aa9494e87dcdf6f9a19a618e3594f4
size 127

3
patches.suse.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:320895a49a085e5abd93be597461e1977f5fd0bda3ce43bd1ccb2c39d042ebbc
size 182402

3
patches.trace.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bd54649991cae30e0821c52287c3b16425206921d2cb1835feb6918e73855563
size 131

3
patches.xen.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f95b0875e23b1efc4e33deb9f13a31f615cdd4aab12e6599fecad7ddd6ea63d
size 2039442

100
post.sh Normal file
View File

@ -0,0 +1,100 @@
# Flag to trigger /etc/init.d/purge-kernels on next reboot (fate#312018)
touch /boot/do_purge_kernels
# It must be possible to install different kernel.rpm packages in parallel.
# But in this post install script, the /boot/vmlinux symlink is replaced.
# On powerpc, the different kernels are for different board/firmware types
# They are not compatible.
wrong_boardtype() {
echo "This kernel-@FLAVOR@.@RPM_TARGET_CPU@.rpm is for $1, it will not boot on this system."
echo "The /boot/vmlinux symlink will not be created or updated."
exit 0
}
if [ -f /proc/cpuinfo ]; then
case "@FLAVOR@-@RPM_TARGET_CPU@" in
vanilla-ppc64|default-ppc64|ps3-ppc64|ppc64-ppc64|kdump-ppc64|ps3-ppc|ppc64-ppc|kdump-ppc)
if [ -d /proc/iSeries -o ! -d /proc/ppc64 ]; then
wrong_boardtype "OpenFirmware based 64bit machines"
fi
;;
vanilla-ppc|default-ppc)
if [ -d /proc/ppc64 -o -d /proc/iSeries ]; then
wrong_boardtype "32bit systems"
fi
;;
*)
;;
esac
fi
suffix=
case @FLAVOR@ in
kdump|ps3|xen*|ec2|vanilla)
suffix=-@FLAVOR@
;;
esac
for x in /boot/@IMAGE@ /boot/initrd; do
rm -f $x$suffix
ln -s ${x##*/}-@KERNELRELEASE@-@FLAVOR@ $x$suffix
done
# Add symlinks of compatible modules to /lib/modules/$krel/weak-updates/,
# run depmod and mkinitrd
wm2=/usr/lib/module-init-tools/weak-modules2
if [ -x $wm2 ]; then
if [ @BASE_PACKAGE@ = 1 ]; then
/bin/bash -${-/e/} $wm2 --add-kernel @KERNELRELEASE@-@FLAVOR@
else
nvr=@SUBPACKAGE@-@RPM_VERSION_RELEASE@
rpm -ql $nvr | /bin/bash -${-/e/} $wm2 --add-kernel-modules @KERNELRELEASE@-@FLAVOR@
fi
else
echo "$wm does not exist, please run depmod and mkinitrd manually" >&2
fi
message_install_bl () {
echo "You may need to setup and install the boot loader using the"
echo "available bootloader for your platform (e.g. grub, lilo, zipl, ...)."
}
run_bootloader () {
if [ -f /etc/sysconfig/bootloader ] &&
[ -f /boot/grub/menu.lst -o \
-f /etc/lilo.conf -o \
-f /etc/elilo.conf -o \
-f /etc/zipl.conf ]
then
return 0
else
return 1
fi
}
# exit out early for Moblin as we don't want to touch the bootloader menu
if [ -f /etc/SuSE-moblin-release ] ; then
exit 0
fi
if [ -f /etc/fstab -a ! -e /.buildenv ] ; then
# only run the bootloader if the usual bootloader configuration
# files are there -- this is different on every architecture
initrd=initrd-@KERNELRELEASE@-@FLAVOR@
if [ -e /boot/$initrd -o ! -e /lib/modules/@KERNELRELEASE@-@FLAVOR@ ] && \
run_bootloader ; then
[ -e /boot/$initrd ] || initrd=
if [ -x /usr/lib/bootloader/bootloader_entry ]; then
/usr/lib/bootloader/bootloader_entry \
add \
@FLAVOR@ \
@KERNELRELEASE@-@FLAVOR@ \
@IMAGE@-@KERNELRELEASE@-@FLAVOR@ \
$initrd
else
message_install_bl
fi
fi
else
message_install_bl
fi
# vim: set sts=4 sw=4 ts=8 noet:

44
postun.sh Normal file
View File

@ -0,0 +1,44 @@
# If a kernel package is removed before the next reboot, we assume that the
# multiversion variable in /etc/zypp/zypp.conf is not configured and we delete
# the flag again (fate#312018)
rm -f /boot/do_purge_kernels
wm2=/usr/lib/module-init-tools/weak-modules2
nvr=@SUBPACKAGE@-@RPM_VERSION_RELEASE@
if [ -e /boot/System.map-@KERNELRELEASE@-@FLAVOR@ ]; then
# the same package was reinstalled or just rebuilt, otherwise the files
# would have been deleted by now
# do not remove anything in this case (bnc#533766)
rm -f /var/run/rpm-$nvr-modules
exit 0
fi
if [ @BASE_PACKAGE@ = 0 ]; then
if [ -x $wm2 ]; then
/bin/bash -${-/e/} $wm2 --remove-kernel-modules @KERNELRELEASE@-@FLAVOR@ < /var/run/rpm-$nvr-modules
fi
rm -f /var/run/rpm-$nvr-modules
exit 0
fi
# Remove symlinks from /lib/modules/$krel/weak-updates/.
if [ -x $wm2 ]; then
/bin/bash -${-/e/} $wm2 --remove-kernel @KERNELRELEASE@-@FLAVOR@
fi
# exit out early for Moblin as we don't want to touch the bootloader menu
if [ -f /etc/SuSE-moblin-release ] ; then
exit 0
fi
# remove fstab check once perl-Bootloader can cope with it
if [ -f /etc/fstab ]; then
if [ -x /usr/lib/bootloader/bootloader_entry ]; then
/usr/lib/bootloader/bootloader_entry \
remove \
@FLAVOR@ \
@KERNELRELEASE@-@FLAVOR@ \
@IMAGE@-@KERNELRELEASE@-@FLAVOR@ \
initrd-@KERNELRELEASE@-@FLAVOR@
fi
fi

21
pre.sh Normal file
View File

@ -0,0 +1,21 @@
# see bug #259303
# this script runs when the kernel gets updated with YaST
# YaST calls rpm always with -U
# -U replaces all packages with the new one
# rpm removes the files from the old packages after the postinstall script ran
# this will double the required space below /boot
# remove the files from the old packages to make room for the new initrd
# rpm may complain about low disk space if /boot/vmlinux does not fit
if [ @BASE_PACKAGE@ = 1 -a "$YAST_IS_RUNNING" != "" ]; then
mydf="$( POSIXLY_CORRECT=1 df -P /boot/ | awk '/^(\/|-[[:blank:]])/{ print $4}' )"
if test "$mydf" != "" ; then
echo "Free diskspace below /boot: $mydf blocks"
# echo "512 byte blocks: $(( 2 * 1024 * 20 ))"
if test "$mydf" -lt "40960" ; then
echo "make room for new kernel '@FLAVOR@' because there are less than 20MB available."
# disabled because it breaks patch rpms
#rm -fv /boot/@IMAGE@-*-@FLAVOR@
rm -fv /boot/initrd-*-@FLAVOR@
fi
fi
fi

4
preun.sh Normal file
View File

@ -0,0 +1,4 @@
if [ @BASE_PACKAGE@ = 0 ]; then
nvr=@SUBPACKAGE@-@RPM_VERSION_RELEASE@
rpm -ql $nvr | grep '\.ko$' > /var/run/rpm-$nvr-modules
fi

789
series.conf Normal file
View File

@ -0,0 +1,789 @@
# Kernel patches configuration file
# vim: set ts=8 sw=8 noet:
#
# There are three kinds of rules (see guards.1 for details):
# +symbol include this patch if symbol is defined; otherwise exclude.
# -symbol exclude this patch if symbol is defined; otherwise include.
# - exclude this patch.
#
# Using symbols means that an entirely different source tree will be
# generated depending on which symbols are defined. This used to be
# a good thing when arch-specific patches contained conflicts with other
# patches, but we now have a policy that patches must build everywhere.
# The result is a unified source tree that allows us to do neat things
# like ship kernel module packages. Creating a divergent tree breaks
# these # so you'd better have an extraordinary reason for using them.
# For example, the openSUSE 10.3 kernel uses them for segregating the
# -rt patches until they can be integrated completely, and these are
# only applied at the very end of the series.
#
# The most common use in recent kernels is to disable a patch with a
# username as the symbol to indicate responsbility. Another use is
# to check in a patch for testing, but have it disabled in all but your
# own build environment.
########################################################
# latest standard kernel patches
# DO NOT MODIFY THEM!
# Send separate patches upstream if you find a problem...
########################################################
########################################################
# Build fixes that apply to the vanilla kernel too.
# Patches in patches.rpmify are applied to both -vanilla
# and patched flavors.
########################################################
patches.rpmify/apm-honor-config_apm_cpu_idle-n
patches.rpmify/nouveau-make-vga_switcheroo-code-depend-on-vga_switcheroo
patches.rpmify/pti-depends-on-x86-pci
########################################################
# kABI consistency patches
########################################################
########################################################
#
# packaging-specific patches (tweaks for autobuild,
# CONFIG_SUSE_KERNEL, config/version tracking and other
# build stuff like that ...).
#
# Note that every patch in the patches.rpmify directory
# will be included in the vanilla package.
########################################################
patches.rpmify/firmware-path
patches.rpmify/rpm-kernel-config
patches.rpmify/split-package
patches.rpmify/cloneconfig.diff
########################################################
# kbuild/module infrastructure fixes
########################################################
patches.suse/supported-flag
patches.suse/supported-flag-enterprise
patches.suse/genksyms-add-override-flag.diff
patches.suse/kconfig-automate-kernel-desktop
########################################################
# Simple export additions/removals
########################################################
########################################################
# Bug workarounds for binutils
########################################################
########################################################
# Scheduler / Core
########################################################
patches.suse/setuid-dumpable-wrongdir
########################################################
# Architecture-specific patches. These used to be all
# at the end of series.conf, but since we don't do
# conditional builds anymore, there's no point.
########################################################
########################################################
# ia64
########################################################
########################################################
# i386
########################################################
# amd64 | x86-64 | x86_64
# 'Intel(r) Extended Memory 64 Technology' | 'Intel(r) EM64T'
# x64
# Intel 64
# "the architecture with too many names"
# TAWTMN
########################################################
# x86_64/i386 biarch
########################################################
patches.arch/x86_64-hpet-64bit-timer.patch
+needs_update patches.arch/kvm-split-paravirt-ops-by-functionality
+needs_update patches.arch/kvm-only-export-selected-pv-ops-feature-structs
+needs_update patches.arch/kvm-split-the-KVM-pv-ops-support-by-feature
+needs_update patches.arch/kvm-replace-kvm-io-delay-pv-ops-with-linux-magic
+trenn patches.arch/kill-__stop_machine.patch
+trenn patches.arch/reorganize_stop_cpus.patch
+trenn patches.arch/implement_stop_machine_from_offline_cpu.patch
+trenn patches.arch/use_stop_machine_for_mtrr_rendezvous.patch
########################################################
# x86 MCE/MCA (Machine Check Error/Architecture) extensions
########################################################
########################################################
# x86_64/4096CPUS - from SGI
########################################################
patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch
########################################################
# x86 UV patches from SGI
########################################################
########################################################
# x86_64/i386 depending on the UV patchset
########################################################
########################################################
# powerpc/generic
########################################################
patches.suse/led_classdev.sysfs-name.patch
patches.suse/radeon-monitor-jsxx-quirk.patch
patches.suse/8250-sysrq-ctrl_o.patch
+needs_update? patches.suse/ppc-no-LDFLAGS_MODULE.patch
patches.arch/ppc-pegasos-console-autodetection.patch
patches.suse/ppc-powerbook-usb-fn-key-default.patch
patches.drivers/ppc64-adb
patches.suse/suse-ppc64-branding
patches.arch/ppc64-xmon-dmesg-printing.patch
patches.arch/ppc-prom-nodisplay.patch
patches.fixes/ptrace-getsiginfo
patches.arch/ppc-kvm-fix-big-section.patch
patches.arch/ppc-kvm-fix-cbe.patch
########################################################
# PS3
########################################################
########################################################
# S/390
########################################################
patches.arch/s390-message-catalog.diff
patches.arch/s390-message-catalog-fix.diff
patches.arch/s390-message-catalog-perl-fix.diff
patches.arch/kmsg-fix-parameter-limitations
patches.suse/s390-Kerntypes.diff
########################################################
# VM/FS patches
########################################################
patches.fixes/oom-warning
patches.fixes/grab-swap-token-oops
patches.fixes/remount-no-shrink-dcache
patches.suse/readahead-request-tunables.patch
patches.fixes/fs-partitions-efi-c-corrupted-guid-partition-tables-can-cause-kernel-oops
patches.fixes/mm-Fix-assertion-mapping-nrpages-0-in-end_writeback.patch
########################################################
# IPC patches
########################################################
########################################################
# nfsacl protocol (agruen)
########################################################
########################################################
# misc small fixes
########################################################
patches.suse/connector-read-mostly
patches.suse/kbd-ignore-gfx.patch
########################################################
#
# ACPI patches
#
########################################################
# Check resource conflicts between hwmon and ACPI OpRegs
patches.arch/acpi_thinkpad_introduce_acpi_root_table_boot_param.patch
patches.arch/acpi_thermal_passive_blacklist.patch
patches.arch/acpi_fix_fadt_32_bit_zero_length.patch
# Adjust this patch for every new product (at least Enterprise
# level) to provide OEMs a safety break so that they can add
# for example SLE11 specific BIOS updates (if there is no other
# way to safely solve an ACPI issue).
+trenn patches.suse/acpi_osi_sle11_ident.patch
patches.arch/acpi_srat-pxm-rev-store.patch
patches.arch/acpi_srat-pxm-rev-ia64.patch
patches.arch/acpi_srat-pxm-rev-x86-64.patch
# Queued for 2.6.36 -> just revert after some time
patches.fixes/acpi_ec_sys_access_user_space_with_get_user.patch
patches.drivers/apei_allow_drivers_access_nvs_ram.patch
patches.arch/acpica_introduce_acpi_os_phys_table_override_function.patch
patches.arch/acpica_fix_wrongly_mapped_acpi_table_header_when_overriding_via_initrd.patch
patches.arch/acpi_implement_overriding_of_arbitrary_acpi_tables_via_initrd.patch
########################################################
# CPUFREQ
########################################################
patches.fixes/cpufreq_ondemand_performance_optimise_default_settings.patch
## cpuidle perf events cleanups and related
patches.arch/perf_timechart_fix_zero_timestamps.patch
patches.fixes/intel_idle_lapic_param.patch
patches.fixes/intel_idle_add_flush_tlb_param.patch
########################################################
# AGP, graphics related stuff
########################################################
########################################################
# Suse specific stuff
########################################################
########################################################
# Networking, IPv6
########################################################
patches.fixes/bridge-module-get-put.patch
########################################################
# NFS
########################################################
+needs_update37 patches.fixes/nfsd-06-sunrpc-cache-retry-cache-lookups-that-return-ETIMEDO.patch
patches.fixes/nfs-adaptive-readdir-plus
########################################################
# lockd + statd
########################################################
########################################################
# cifs patches
########################################################
########################################################
# ext2/ext3
########################################################
# patches.suse/ext2-fsync-err
########################################################
# ext4
########################################################
########################################################
# btrfs
########################################################
########################################################
# Reiserfs Patches
########################################################
patches.fixes/reiserfs-force-inode-evictions-before-umount-to-avoid-crash
+needs_updating-39 patches.suse/reiser4-dependencies
########################################################
# dlm
########################################################
########################################################
# ocfs2
########################################################
########################################################
# gfs2
########################################################
########################################################
# xfs
########################################################
########################################################
# other filesystem stuff: richacls
########################################################
patches.suse/0001-vfs-Hooks-for-more-fine-grained-directory-permission.patch
patches.suse/0002-vfs-Add-generic-IS_ACL-test-for-acl-support.patch
patches.suse/0003-vfs-Add-IS_RICHACL-test-for-richacl-support.patch
patches.suse/0004-richacl-In-memory-representation-and-helper-function.patch
patches.suse/0005-richacl-Permission-mapping-functions.patch
patches.suse/0006-richacl-Compute-maximum-file-masks-from-an-acl.patch
patches.suse/0007-richacl-Update-the-file-masks-in-chmod.patch
patches.suse/0008-richacl-Permission-check-algorithm.patch
patches.suse/0009-richacl-Helper-functions-for-implementing-richacl-in.patch
patches.suse/0010-richacl-Create-time-inheritance.patch
patches.suse/0011-richacl-Check-if-an-acl-is-equivalent-to-a-file-mode.patch
patches.suse/0012-richacl-Automatic-Inheritance.patch
patches.suse/0013-richacl-Restrict-access-check-algorithm.patch
patches.suse/0014-richacl-xattr-mapping-functions.patch
patches.suse/0015-ext4-Use-IS_POSIXACL-to-check-for-POSIX-ACL-support.patch
patches.suse/0016-ext4-Implement-richacl-support-in-ext4.patch
########################################################
# other filesystem stuff
########################################################
patches.fixes/hfs-avoid-crash-in-hfs_bnode_create
########################################################
# Swap-over-NFS
########################################################
########################################################
# Netfilter
########################################################
patches.suse/netfilter-ip_conntrack_slp.patch
patches.fixes/netfilter-implement-rfc-1123-for-ftp-conntrack
########################################################
#
# Device drivers
#
########################################################
########################################################
# Storage
########################################################
# Block layer fixes
patches.fixes/scsi-inquiry-too-short-ratelimit
patches.suse/scsi-netlink-ml
patches.fixes/scsi-retry-alua-transition-in-progress
patches.fixes/scsi-dh-queuedata-accessors
patches.fixes/scsi-evaluate-tpgs-setting
patches.suse/scsi-dh-implement-match-callback
patches.fixes/scsi-dh-alua-always-update-tpgs-status
patches.fixes/scsi-dh-check-for-sdev-state-in-store_dh_state
patches.fixes/scsi-check-host-lookup-failure
patches.drivers/megaraid-mbox-fix-SG_IO
# Remaining SCSI patches (garloff)
patches.suse/scsi-error-test-unit-ready-timeout
patches.fixes/scsi-scan-blist-update
patches.fixes/scsi-ibmvscsi-show-config.patch
# bnc#362850
patches.fixes/sd_liberal_28_sense_invalid.diff
patches.fixes/scsi-ibmvscsi-module_alias.patch
########################################################
# DRM/Video
########################################################
########################################################
# video4linux
########################################################
########################################################
# Network
########################################################
patches.fixes/tulip-quad-NIC-ifdown
patches.drivers/ehea-modinfo.patch
########################################################
# Wireless Networking
########################################################
patches.suse/b43-missing-firmware-info.patch
########################################################
# ISDN
########################################################
patches.fixes/misdn-add-support-for-group-membership-check
########################################################
# iSCSI
########################################################
########################################################
# PCI and PCI hotplug
########################################################
########################################################
# sysfs / driver core
########################################################
########################################################
# USB
########################################################
########################################################
# I2C
########################################################
########################################################
# Input & Console
########################################################
patches.suse/SUSE-bootsplash
patches.drivers/elousb.patch
patches.suse/elousb-2.6.35-api-changes
patches.fixes/input-add-acer-aspire-5710-to-nomux.patch
patches.drivers/input-Add-LED-support-to-Synaptics-device
##########################################################
# Sound
##########################################################
########################################################
# Char / serial
########################################################
########################################################
# Other driver fixes
########################################################
# http://git.kernel.org/?p=linux/kernel/git/gregkh/staging-2.6.git;a=history;f=drivers/staging/hv;hb=refs/heads/staging-next
patches.suse/staging-hv-staging-next-20110825-0001-Staging-hv-vmbus-Don-t-wait-indefinitely-for-IRQ.patch
patches.suse/staging-hv-staging-next-20110825-0002-Staging-hv-tools-Fix-a-checkpatch-warning-in-hv_k.patch
patches.suse/staging-hv-staging-next-20110825-0003-Staging-hv-vmbus-Fix-checkpatch-warnings.patch
patches.suse/staging-hv-staging-next-20110825-0004-Staging-hv-util-kvp-Fix-the-reported-OSVersion-s.patch
patches.suse/staging-hv-staging-next-20110825-0005-Staging-hv-util-kvp-Cleanup-kvp_get_domain_name.patch
patches.suse/staging-hv-staging-next-20110825-0006-Staging-hv-Fix-macros-tab-errors-and-warning-in-d.patch
patches.suse/staging-hv-staging-next-20110825-0007-Staging-hv-vmbus-VMBUS-is-an-ACPI-enumerated-devi.patch
patches.suse/staging-hv-staging-next-20110825-0008-Staging-hv-Replace-struct-hv_guid-with-the-uuid-ty.patch
patches.suse/staging-hv-staging-next-20110825-0009-Staging-hv-vmbus-Introduce-vmbus-ID-space-in-stru.patch
patches.suse/staging-hv-staging-next-20110825-0010-Staging-hv-blkvsc-Use-the-newly-introduced-vmbus.patch
patches.suse/staging-hv-staging-next-20110825-0011-Staging-hv-storvsc-Use-the-newly-introduced-vmbus.patch
patches.suse/staging-hv-staging-next-20110825-0012-Staging-hv-netvsc-Use-the-newly-introduced-vmbus.patch
patches.suse/staging-hv-staging-next-20110825-0013-Staging-hv-mousevsc-Use-the-newly-introduced-vmbu.patch
patches.suse/staging-hv-staging-next-20110825-0014-Staging-hv-util-Make-hv_utils-a-vmbus-device-driv.patch
patches.suse/staging-hv-staging-next-20110825-0015-Staging-hv-create-VMBUS_DEVICE-macro-and-use-it.patch
patches.suse/staging-hv-staging-next-20110825-0016-Staging-hv-vmbus-Cleanup-vmbus_match.patch
patches.suse/staging-hv-staging-next-20110825-0017-Staging-hv-vmbus-Cleanup-vmbus_uevent-code.patch
patches.suse/staging-hv-staging-next-20110825-0018-Staging-hv-vmbus-Support-the-notion-of-id-tables.patch
patches.suse/staging-hv-staging-next-20110825-0019-Staging-hv-vmbus-Get-rid-of-an-unnecessary-includ.patch
patches.suse/staging-hv-staging-next-20110825-0020-Staging-hv-storvsc-Get-rid-of-the-DMI-signature.patch
patches.suse/staging-hv-staging-next-20110825-0021-Staging-hv-netvsc-Get-rid-of-the-PCI-signature.patch
patches.suse/staging-hv-staging-next-20110825-0022-Staging-hv-netvsc-Get-rid-of-the-DMI-signature-in.patch
patches.suse/staging-hv-staging-next-20110825-0023-Staging-hv-util-Get-rid-of-the-DMI-signature-in-h.patch
patches.suse/staging-hv-staging-next-20110825-0024-Staging-hv-util-Get-rid-of-the-PCI-signature-in-h.patch
patches.suse/staging-hv-staging-next-20110825-0025-Staging-hv-fix-up-driver-registering-mess.patch
patches.suse/staging-hv-staging-next-20110825-0026-Staging-hv-vmbus-Get-rid-of-some-unnecessary-comm.patch
patches.suse/staging-hv-staging-next-20110825-0027-Staging-hv-vmbus-Cleanup-unnecessary-comments-in.patch
patches.suse/staging-hv-staging-next-20110825-0028-Staging-hv-vmbus-Cleanup-error-handling-in-hv_ini.patch
patches.suse/staging-hv-staging-next-20110825-0029-Staging-hv-vmbus-Get-rid-of-unnecessay-comments-i.patch
patches.suse/staging-hv-staging-next-20110825-0030-Staging-hv-vmbus-Get-rid-of-the-function-dump_gpa.patch
patches.suse/staging-hv-staging-next-20110825-0031-Staging-hv-vmbus-Get-rid-of-the-function-dump_gpa.patch
patches.suse/staging-hv-staging-next-20110825-0032-Staging-hv-vmbus-Rename-openMsg-to-open_msg-in-ch.patch
patches.suse/staging-hv-staging-next-20110825-0033-Staging-hv-vmbus-Get-rid-of-unnecessary-comments.patch
patches.suse/staging-hv-staging-next-20110825-0034-Staging-hv-vmbus-Change-the-variable-name-openInf.patch
patches.suse/staging-hv-staging-next-20110825-0035-Staging-hv-vmbus-Cleanup-error-values-in-ringbuff.patch
patches.suse/staging-hv-staging-next-20110825-0036-Staging-hv-vmbus-Cleanup-the-error-return-value-i.patch
patches.suse/staging-hv-staging-next-20110825-0037-Staging-hv-netvsc-Get-rid-of-an-unnecessary-print.patch
patches.suse/staging-hv-staging-next-20110825-0038-Staging-hv-vmbus-Retry-vmbus_post_msg-before-gi.patch
patches.suse/staging-hv-staging-next-20110825-0039-Staging-hv-storvsc-Cleanup-error-handling-in-stor.patch
patches.suse/staging-hv-staging-next-20110825-0040-Staging-hv-storvsc-Cleanup-error-handling-in-stor.patch
patches.suse/staging-hv-staging-next-20110825-0041-Staging-hv-storvsc-Cleanup-error-handling-in-stor.patch
patches.suse/staging-hv-staging-next-20110825-0042-Staging-hv-storvsc-Cleanup-error-handling-in-stor.patch
patches.suse/staging-hv-staging-next-20110825-0043-Storage-hv-storvsc-Get-rid-of-some-unnecessary-DP.patch
patches.suse/staging-hv-staging-next-20110825-0044-Staging-hv-storvsc-Fix-cleanup-some-dated-comment.patch
patches.suse/staging-hv-staging-next-20110825-0045-Staging-hv-storvsc-Cleanup-returned-error-code-in.patch
patches.suse/staging-hv-staging-next-20110825-0046-Staging-hv-storvsc-Cleanup-error-code-returned-in.patch
patches.suse/staging-hv-staging-next-20110825-0047-Staging-hv-storvsc-Cleanup-returned-error-code-in.patch
patches.suse/staging-hv-staging-next-20110825-0048-Staging-hv-netvsc-Cleanup-the-returned-error-code.patch
patches.suse/staging-hv-staging-next-20110825-0049-Staging-hv-netvsc-Cleanup-error-return-codes-in-n.patch
patches.suse/staging-hv-staging-next-20110825-0050-Staging-hv-netvsc-Cleanup-error-return-values-in.patch
patches.suse/staging-hv-staging-next-20110825-0051-Staging-hv-netvsc-Cleanup-error-returns-in-netvsc.patch
patches.suse/staging-hv-staging-next-20110825-0052-Staging-hv-netvsc-Cleanup-error-return-values-in.patch
patches.suse/staging-hv-staging-next-20110825-0053-Staging-hv-netvsc-Cleanup-error-return-codes-in-n.patch
patches.suse/staging-hv-staging-next-20110825-0054-Staging-hv-netvsc-Cleanup-error-codes-in-rndis_fi.patch
patches.suse/staging-hv-staging-next-20110825-0055-Staging-hv-netvsc-Cleanup-error-code-in-rndis_fil.patch
patches.suse/staging-hv-staging-next-20110825-0056-Staging-hv-netvsc-Cleanup-error-return-values-in.patch
patches.suse/staging-hv-staging-next-20110825-0057-Staging-hv-netvsc-Cleanup-error-returns-in-rndis_.patch
patches.suse/staging-hv-staging-next-20110825-0058-Staging-hv-netvsc-Cleanup-error-code-in-rndis_fil.patch
patches.suse/staging-hv-staging-next-20110825-0059-Staging-hv-mouse-Change-the-jump-label-Cleanup-to.patch
patches.suse/staging-hv-staging-next-20110825-0060-Staging-hv-netvsc-Change-the-jump-label-Cleanup-t.patch
patches.suse/staging-hv-staging-next-20110825-0061-Staging-hv-netvsc-Change-the-jump-label-Exit-to-e.patch
patches.suse/staging-hv-staging-next-20110825-0062-Staging-hv-mouse-Get-rid-of-the-unused-PCI-signat.patch
patches.suse/staging-hv-staging-next-20110825-0063-Staging-hv-hv_mouse-remove-deviceinfo_callback-fu.patch
patches.suse/staging-hv-staging-next-20110825-0064-Staging-hv-hv_mouse-remove-inputreport_callback-f.patch
patches.suse/staging-hv-staging-next-20110825-0065-Staging-hv-hv_mouse-remove-a-forward-declaration.patch
patches.suse/staging-hv-staging-next-20110825-0066-Staging-hv-hv_mouse-fix-up-remove-function.patch
# module support patches outside of drivers/staging/hv
patches.suse/staging-hv-staging-next-20110825-0562-Staging-hv-Add-struct-hv_vmbus_device_id-to-mod_de.patch
patches.suse/staging-hv-staging-next-20110825-0563-Staging-hv-add-driver_data-to-hv_vmbus_device_id.patch
patches.suse/staging-hv-staging-next-20110825-0568-Staging-hv-Add-code-to-parse-struct-hv_vmbus_devic.patch
patches.suse/staging-hv-staging-next-20110825-0570-Staging-hv-file2alias-fix-up-alias-creation-logic.patch
patches.suse/staging-hv-staging-next-20110829-0303-Staging-hv-storvsc-Inline-free_stor_device.patch
patches.suse/staging-hv-staging-next-20110829-0304-Staging-hv-storvsc-Do-not-aquire-an-unnecessary-r.patch
patches.suse/staging-hv-staging-next-20110829-0305-Staging-hv-storvsc-Rename-must_get_stor_device.patch
patches.suse/staging-hv-staging-next-20110829-0306-Staging-hv-storvsc-Rename-get_stor_device.patch
patches.suse/staging-hv-staging-next-20110829-0307-Staging-hv-storvsc-Cleanup-alloc_stor_device.patch
patches.suse/staging-hv-staging-next-20110829-0308-Staging-hv-storvsc-Introduce-state-to-manage-the.patch
patches.suse/staging-hv-staging-next-20110829-0309-Staging-hv-storvsc-Prevent-outgoing-traffic-when.patch
patches.suse/staging-hv-staging-next-20110829-0310-Staging-hv-storvsc-Get-rid-of-release_stor_device.patch
patches.suse/staging-hv-staging-next-20110829-0311-Staging-hv-storvsc-Get-rid-of-final_release_stor_.patch
patches.suse/staging-hv-staging-next-20110829-0312-Staging-hv-storvsc-Get-rid-of-the-reference-count.patch
patches.suse/staging-hv-staging-next-20110829-0313-Staging-hv-netvsc-Inline-the-code-for-free_net_de.patch
patches.suse/staging-hv-staging-next-20110829-0314-Staging-hv-netvsc-Cleanup-alloc_net_device.patch
patches.suse/staging-hv-staging-next-20110829-0315-Staging-hv-netvsc-Introduce-state-to-manage-the-l.patch
patches.suse/staging-hv-staging-next-20110829-0316-Staging-hv-netvsc-Prevent-outgoing-traffic-when-n.patch
patches.suse/staging-hv-staging-next-20110829-0317-Staging-hv-netvsc-Get-rid-of-release_outbound_net.patch
patches.suse/staging-hv-staging-next-20110829-0318-Staging-hv-netvsc-Get-rid-of-release_inbound_net_.patch
patches.suse/staging-hv-staging-next-20110829-0319-Staging-hv-netvsc-Get-rid-of-the-refcnt-field-in.patch
patches.suse/staging-hv-staging-next-20110829-0320-Staging-hv-storvsc-Add-code-to-handle-IDE-devices.patch
patches.suse/staging-hv-staging-next-20110829-0321-Staging-hv-storvsc-Handle-IDE-devices-using-the-s.patch
patches.suse/staging-hv-staging-next-20110829-0322-Staging-hv-blkvsc-Get-rid-of-blkvsc_drv.c-as-this.patch
patches.suse/staging-hv-staging-next-20110829-0323-Staging-hv-storvsc-Optimize-bounce-buffer-handlin.patch
patches.suse/staging-hv-staging-next-20110829-0324-Staging-hv-storvsc-Optimize-the-bounce-buffer-han.patch
patches.suse/staging-hv-staging-next-20110829-0325-Staging-hv-storvsc-Include-storvsc.c-in-storvsc_d.patch
patches.suse/staging-hv-staging-next-20110829-0326-Staging-hv-storvsc-Cleanup-storvsc_drv.c-after-ad.patch
patches.suse/staging-hv-staging-next-20110829-0327-Staging-hv-storvsc-Add-the-contents-of-hyperv_sto.patch
patches.suse/staging-hv-staging-next-20110829-0328-Staging-hv-storvsc-Cleanup-storvsc_drv.c-after-ad.patch
patches.suse/staging-hv-staging-next-20110829-0329-Staging-hv-storvsc-Fixup-srb-and-scsi-status-for.patch
patches.suse/staging-hv-staging-next-20110829-0330-Staging-hv-storvsc-Fix-a-typo.patch
patches.suse/staging-hv-staging-next-20110829-0331-Staging-hv-storvsc-In-case-of-scsi-errors-offline.patch
patches.suse/staging-hv-staging-next-20110829-0332-Staging-hv-storvsc-No-need-to-copy-from-bounce-bu.patch
patches.suse/staging-hv-staging-next-20110829-0333-Staging-hv-util-Forcefully-shutdown-when-shutdown.patch
patches.suse/staging-hv-staging-next-20110829-0334-Staging-hv-util-Adjust-guest-time-in-a-process-co.patch
patches.suse/staging-hv-staging-next-20110829-0335-Staging-hv-vmbus-Check-before-invoking-the-channe.patch
patches.suse/staging-hv-staging-next-20110829-0336-Staging-hv-vmbus-Properly-deal-with-de-registerin.patch
patches.suse/staging-hv-staging-next-20110829-0337-Staging-hv-Fix-a-bug-in-vmbus_match.patch
patches.suse/staging-hv-staging-next-20110829-0338-Staging-hv-vmbus-Get-rid-of-vmbus_on_isr-by-inl.patch
patches.suse/staging-hv-staging-next-20110829-0339-Staging-hv-vmbus-Do-not-enable-auto-eoi.patch
patches.suse/staging-hv-staging-next-20110829-0340-Staging-hv-vmbus-Fixup-indentation-in-vmbus_acpi_.patch
patches.suse/staging-hv-staging-next-20110829-0341-Staging-hv-vmbus-Get-rid-of-some-dated-redundant.patch
patches.suse/staging-hv-staging-next-20110829-0342-Staging-hv-vmbus-Get-rid-of-an-unnecessary-check.patch
patches.suse/staging-hv-staging-next-20110829-0343-Staging-hv-vmbus-Fix-a-checkpatch-warning-in-ring.patch
patches.suse/staging-hv-staging-next-20110829-0344-Staging-hv-vmbus-Fix-checkpatch-warnings-in-conne.patch
patches.suse/staging-hv-staging-next-20110829-0345-Staging-hv-mousevsc-Fix-checkpatch-errors-and-war.patch
patches.suse/staging-hv-staging-next-20110829-0346-Staging-hv-netvsc-return-negative-error-codes.patch
patches.suse/staging-hv-vmbus-modalias-show.patch
patches.suse/staging-hv-pata_piix-ignore-disks.patch
patches.fixes/parport-mutex
patches.suse/no-partition-scan
########################################################
# Other drivers we have added to the tree
########################################################
########################################################
# Suspend/Resume stuff
########################################################
########################################################
# device-mapper
########################################################
patches.suse/dm-emulate-blkrrpart-ioctl
patches.suse/dm-raid45-26-Nov-2009.patch
patches.suse/dmraid45-dm_dirty_log_create-api-fix
patches.suse/dmraid45-dm_get_device-takes-fewer-arguments
patches.suse/dm-raid45-api-update-remove-dm_put-after-dm_table_get_md
patches.suse/dm-raid45-api-update-no-barriers
patches.suse/dm-raid45-api-2.6.39
patches.suse/dm-raid45-api-3.0
patches.fixes/dm-mpath-reattach-dh
patches.suse/dm-mpath-leastpending-path-update
patches.suse/dm-mpath-accept-failed-paths
patches.suse/dm-mpath-detach-existing-hardware-handler
patches.fixes/dm-table-switch-to-readonly
patches.fixes/dm-release-map_lock-before-set_disk_ro
patches.suse/dm-mpath-no-activate-for-offlined-paths
patches.suse/dm-mpath-no-partitions-feature
patches.suse/mpath-fix
########################################################
# md
########################################################
##########################################################
#
# Security stuff
#
##########################################################
##########################################################
# Audit
##########################################################
##########################################################
# AppArmor
##########################################################
patches.apparmor/apparmor-compatibility-patch-for-v5-network-control
patches.apparmor/apparmor-compatibility-patch-for-v5-interface
patches.apparmor/apparmor-allow-dfa-backward-compatibility-with-broken-userspace
########################################################
# Address space layout randomization
########################################################
########################################################
# KDB v4.4
########################################################
########################################################
# Other patches for debugging
########################################################
patches.suse/crasher-26.diff
patches.suse/stack-unwind
patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops
patches.suse/no-frame-pointer-select
patches.arch/x86_64-unwind-annotations
########################################################
# Kdump
########################################################
########################################################
# cgroups
########################################################
########################################################
# audit subsystem
########################################################
########################################################
# Performance Monitoring, Tracing etc
########################################################
patches.fixes/ia64-configure-HAVE_UNSTABLE_SCHED_CLOCK-for-SGI_SN.patch
########################################################
# KVM patches
########################################################
patches.fixes/kvm-ioapic.patch
patches.fixes/kvm-macos.patch
########################################################
# Staging tree patches
# new drivers that are going upstream
########################################################
########################################################
# You'd better have a good reason for adding a patch
# below here.
########################################################
########################################################
# XEN architecture, version 3
########################################################
# xen patches, from xenbits mercurial repository.
# http://xenbits.xensource.com/ext/linux-2.6-merge.hg
#
# everything named "xen3-auto-*" is auto-generated.
# PLEASE DON'T EDIT THESE PATCHES. Create fixup patches
# on top of them instead. This reduces workload when
# re-basing to a newer xen tree.
#
### both uml framebuffer and xen need this one.
patches.xen/add-console-use-vt
# split out patches
patches.xen/kexec-move-segment-code-i386.patch
patches.xen/kexec-move-segment-code-x86_64.patch
patches.xen/frontswap-structure-changes
patches.xen/frontswap-core
patches.xen/frontswap-hooks
patches.xen/frontswap-config
patches.xen/ipv6-no-autoconf
patches.xen/pci-guestdev
patches.xen/pci-reserve
# bulk stuff, new files for xen
patches.xen/xen3-auto-xen-arch.diff
patches.xen/xen3-auto-xen-drivers.diff
patches.xen/xen3-auto-include-xen-interface.diff
patches.xen/xen3-auto-blktap2-pvops.diff
# kconfig bits for xen
patches.xen/xen3-auto-xen-kconfig.diff
# common code changes
patches.xen/xen3-auto-common.diff
patches.xen/xen3-auto-arch-x86.diff
patches.xen/xen3-auto-arch-i386.diff
patches.xen/xen3-auto-arch-x86_64.diff
# fixups due to upstream Xen parts
patches.xen/xen3-fixup-xen
# newer changeset backports
# changes outside arch/{i386,x86_64}/xen
patches.xen/xen3-fixup-kconfig
patches.xen/xen3-fixup-common
patches.xen/xen3-fixup-arch-x86
patches.xen/xen3-fixup-blktap2-pvops
# ports of other patches
patches.xen/xen3-patch-2.6.18
patches.xen/xen3-patch-2.6.19
patches.xen/xen3-patch-2.6.20
patches.xen/xen3-patch-2.6.21
patches.xen/xen3-patch-2.6.22
patches.xen/xen3-patch-2.6.23
patches.xen/xen3-patch-2.6.24
patches.xen/xen3-patch-2.6.25
patches.xen/xen3-patch-2.6.26
patches.xen/xen3-patch-2.6.27
patches.xen/xen3-patch-2.6.28
patches.xen/xen3-patch-2.6.29
patches.xen/xen3-patch-2.6.30
patches.xen/xen3-patch-2.6.31
patches.xen/xen3-patch-2.6.32
patches.xen/xen3-patch-2.6.33
patches.xen/xen3-patch-2.6.34
patches.xen/xen3-patch-2.6.35
patches.xen/xen3-patch-2.6.36
patches.xen/xen3-patch-2.6.37
patches.xen/xen3-patch-2.6.38
patches.xen/xen3-patch-2.6.39
patches.xen/xen3-patch-3.0
patches.xen/xen3-patch-3.1-rc5
patches.xen/xen3-patch-3.1-rc6-rc7
patches.xen/xen3-apei_allow_drivers_access_nvs_ram.patch
patches.xen/xen3-acpi_implement_overriding_of_arbitrary_acpi_tables_via_initrd.patch
patches.xen/xen3-stack-unwind
patches.xen/xen3-x86_64-unwind-annotations
# bugfixes and enhancements
patches.xen/xen-kconfig-compat
patches.xen/xen-sys-suspend
patches.xen/xen-ipi-per-cpu-irq
patches.xen/xen-virq-per-cpu-irq
patches.xen/xen-clockevents
patches.xen/xen-spinlock-poll-early
patches.xen/xen-pcpu-hotplug
patches.xen/xen-mem-hotplug
patches.xen/xen-swiotlb-heuristics
patches.xen/xen-pci-multi-segment
patches.xen/xen-configurable-guest-devices
patches.xen/xen-setup-gsi
patches.xen/xen-kzalloc
patches.xen/xen-sections
patches.xen/xen-unpriv-build
patches.xen/xen-cpufreq-report
patches.xen/xen-balloon-max-target
patches.xen/xen-blkif-protocol-fallback-hack
patches.xen/xen-blkback-cdrom
patches.xen/xen-blktap-modular
patches.xen/xen-blktap-write-barriers
patches.xen/xen-blktap2-configurable-nr-devs
patches.xen/xen-op-packet
patches.xen/xen-blkfront-cdrom
patches.xen/xen-blkfront-hvm-no-cdrom
patches.xen/xen-netback-nr-irqs
patches.xen/xen-netback-notify-multi
patches.xen/xen-netback-generalize
patches.xen/xen-netback-multiple-tasklets
patches.xen/xen-netback-kernel-threads
patches.xen/xen-cxgb3
patches.xen/xen-dcdbas
patches.xen/xen-floppy
patches.xen/xen-x86-panic-no-reboot
patches.xen/xen-x86-dcr-fallback
patches.xen/xen-x86-no-lapic
patches.xen/xen-x86-pmd-handling
patches.xen/xen-x86-bigmem
patches.xen/xen-x86-exit-mmap
patches.xen/xen-x86-per-cpu-vcpu-info
patches.xen/xen-x86-msr-on-pcpu
patches.xen/xen-x86-EFI
patches.xen/xen-x86_64-pgd-pin
patches.xen/xen-x86_64-pgd-alloc-order
patches.xen/xen-x86_64-dump-user-pgt
patches.xen/xen-x86_64-note-init-p2m
patches.xen/xen-x86_64-unmapped-initrd

13
source-post.sh Normal file
View File

@ -0,0 +1,13 @@
relink() {
if [ -h "$2" ]; then
local old=$(readlink "$2")
[ "$old" = "$1" ] && return 0
echo "Changing symlink $2 from $old to $1"
elif [ -e "$2" ]; then
echo "Replacing file $2 with symlink to $1"
fi
rm -f "$2" \
&& ln -s "$1" "$2"
}
relink linux-@KERNELRELEASE@@SRCVARIANT@ /usr/src/linux@SRCVARIANT@

3
source-timestamp Normal file
View File

@ -0,0 +1,3 @@
2011-10-03 18:22:13 +0200
GIT Revision: 6c33ac4c17512344a51413a39060e307da80c2a8
GIT Branch: master

107
split-modules Normal file
View File

@ -0,0 +1,107 @@
#!/bin/bash
#
# given a Module.supported, Module.base and modules.dep, generate list
# of base / supported / unsupported modules
set -e
export LC_COLLATE=C
usage()
{
echo "Usage: ${0##*/} -b Module.base -s Module.supported [-d dir] [-i] [-o outdir]"
}
options=$(getopt -o b:s:d:o:i -- "$@")
if test $? -ne 0; then
usage >&2
exit 1
fi
eval set -- "$options"
opt_base=
opt_supp=
opt_out=.
opt_dir=.
opt_ignore_errors=false
while test $# -gt 0; do
opt=$1
shift
case "$opt" in
-b | -s | -d | -o | -D)
arg=$1
shift
esac
case "$opt" in
-b)
opt_base=$arg ;;
-s)
opt_supp=$arg ;;
-d)
opt_dir=$arg ;;
-o)
opt_out=$arg ;;
-i)
opt_ignore_errors=true ;;
--)
break ;;
*)
echo "Unknown option $opt" >&2
exit 1
esac
done
if test -z "$opt_base" -o -z "$opt_supp"; then
usage >&2
exit 1
fi
trap 'rm -rf "$tmp"' EXIT
tmp=$(mktemp -d)
mkdir "$tmp/empty"
find "$opt_dir" -type f -name '*.ko' -printf '/%P\n' | \
awk -F/ '{ n=$NF; gsub(/-/, "_", n); sub(/\.ko$/, "", n); print n " " $0; }' | \
sort >"$tmp/all"
modules_dep=$(find "$opt_dir" -type f -name modules.dep)
if test -z "$modules_dep"; then
echo "Cannot find modules.dep in $opt_dir" >&2
exit 1
fi
(
echo '%:
@echo $@
ifdef EXPLAIN
@for dep in $^; do echo "$$dep needed by $@"; done >> $(EXPLAIN)
endif
'
sed -r 's:[^ ]*/([^/]*)\.ko\>:\1:g; y/-/_/' "$modules_dep"
) >"$tmp/dep"
add_dependent_modules()
{
xargs -r make EXPLAIN=$1 -rRs -C "$tmp/empty" -f "$tmp/dep" | sort -u
}
# base
sed 'y/-/_/' <"$opt_base" | add_dependent_modules >"$tmp/base"
join -j 1 -o 2.2 "$tmp/base" "$tmp/all" >"$opt_out/base-modules"
# main
sed 's/ .*//; y/-/_/' "$opt_supp" | sort -u >"$tmp/supp"
add_dependent_modules "$tmp/supp-explain" <"$tmp/supp" >"$tmp/supp-all"
if ! cmp -s "$tmp/supp" "$tmp/supp-all"; then
echo "The following unsupported modules are used by supported modules:" >&2
join -j1 -a2 <(sort "$tmp/supp-explain") \
<(join -v2 "$tmp/supp" "$tmp/supp-all") >&2
echo "Please fix supported.conf." >&2
if ! $opt_ignore_errors; then
exit 1
fi
fi
join -j 1 -o 2.2 "$tmp/supp-all" "$tmp/all" >"$opt_out/main-modules"
# unsupported
join -j 1 -v 2 -o 2.2 "$tmp/supp-all" "$tmp/all" >"$opt_out/unsupported-modules"
exit 0

2724
supported.conf Normal file

File diff suppressed because it is too large Load Diff

3
sysctl.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c486da73fb5a20a18ab975da3ff78a6c6c06165e0e16634606807364b170993b
size 775