Blob Blame History Raw
#
# 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

# There are a few packages that do BuildRequire the fullsrc: perf, kernel-doc
%define build_fullsrc 1

%define srcversion @SRCVERSION@
%define patchversion @PATCHVERSION@
%define variant @VARIANT@%{nil}

%include %_sourcedir/kernel-spec-macros

%define src_install_dir usr/src/linux-%kernelrelease%variant
%define obj_install_dir /%src_install_dir-obj
%define rpm_install_dir %buildroot%real_install_dir
%define fullsrc_install_dir usr/src/linux-src-%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 pcre-tools
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
Source7:	source-postdevel.sh
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
Source40:       source-timestamp
Source44:       find-provides
Source45:       split-modules
Source46:       modversions
Source47:       extract-modaliases
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
Source100:      config.tar.bz2
Source101:      patches.arch.tar.bz2
Source102:      patches.drivers.tar.bz2
Source103:      patches.fixes.tar.bz2
Source104:      patches.rpmify.tar.bz2
Source105:      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
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildArch:      noarch
Prefix:         /usr/src

%(chmod +x %_sourcedir/{apply-patches,guards,check-for-config-changes,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols})

%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)

%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)

%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 -a 100 -a 101 -a 102 -a 103 -a 104 -a 105 -a 107 -a 108 -a 109 -a 110 -a 111 -a 112 -a 113

%build
# Release number without the EXTRAVERSION
RELEASE=%source_rel
while [ "$RELEASE" != "${RELEASE#[^0-9]*.}" ]; do
    RELEASE=${RELEASE#[^0-9]*.}
done

mkdir -p $RPM_BUILD_ROOT/usr/src
cd $RPM_BUILD_ROOT/usr/src

ln -sf linux%variant linux%variant  # dummy symlink
%if %build_fullsrc
ln -sf linux-src%variant linux-src%variant  # dummy symlink
%endif

# Unpack the vanilla kernel sources
tar -xjf %_sourcedir/linux-%srcversion.tar.bz2
mv linux-%srcversion "%buildroot/%src_install_dir"


%if %do_vanilla
cp -al "%buildroot/%src_install_dir" linux-%kernelrelease-vanilla
cd linux-%kernelrelease-vanilla
%_sourcedir/apply-patches --vanilla %_sourcedir/series.conf %my_builddir %symbols
rm -f $(find . -name ".gitignore")
cd ..
%endif

cd "%buildroot/%src_install_dir"
%_sourcedir/apply-patches %_sourcedir/series.conf %my_builddir %symbols
rm -f $(find . -name ".gitignore")

if [ -f %_sourcedir/localversion ] ; then
    cat %_sourcedir/localversion > localversion
fi

# Hardlink duplicate files automatically (from package fdupes).
%fdupes $RPM_BUILD_ROOT

%install
# Install the documentation and example Kernel Module Package.
DOC=$RPM_BUILD_ROOT/usr/share/doc/packages/%name
mkdir -p $DOC
cp %_sourcedir/README.SUSE $DOC

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 postdevel; do
    sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
        -e "s:@SRCVARIANT@:%variant:g" \
        %_sourcedir/source-$script.sh > %name-$script.sh
done

pushd "%buildroot"
%if %build_fullsrc
# Explicitly tag source so that user-recompiled kernels
# are visible in bugreports
cp -a "%src_install_dir" "%fullsrc_install_dir"
echo "-%release-LOCAL" >"%fullsrc_install_dir/localversion"
ln -s "/usr/share/doc/packages/%name/README.SUSE" "%buildroot/%fullsrc_install_dir/"
%endif

perl "%_sourcedir/group-source-files.pl" \
	-D "$OLDPWD/devel.files" -N "$OLDPWD/nondevel.files" \
	-L "%src_install_dir"

# Remove files that are not needed for KMP building
xargs -ra "$OLDPWD/nondevel.files" rm -f
find "%src_install_dir" -type d -print0 | sort -rz | \
	xargs -0 rmdir 2>/dev/null || :
popd

%post -f %name-post.sh

%post -n kernel-devel%variant -f %name-postdevel.sh

%files
%defattr(-, root, root)
%if %build_fullsrc
/%fullsrc_install_dir
%endif
%ghost /usr/src/linux-src%variant
# The ghost link is always packaged. We need something, or rpmlint will delete
# the package - which leads to build choosing a previous, mismatching
# kernel-source when requested as BuildRequires.

%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

%if %do_vanilla
%files vanilla
%defattr(-, root, root)
/usr/src/linux-%kernelrelease-vanilla
%endif

%changelog