File kernel-source.spec of Package kernel-source-ck

#
# spec file for package kernel-source (Version v2.6.22_rc3)
#
# Copyright (c) 2003, 2006 SUSE Linux Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://www.suse.de/feedback/
#

# norootforbuild
# icecream 0

%if 0%{?opensuse_bs}
# Strip off the build number ("y") from the "x.y" release number
%define source_rel %(release=%release; echo ${release%.*})
%else
# We don't have build numbers internally
%define source_rel %release
%endif

Name:         kernel-source
Summary:      Dummy summary
Version:      v2.6.22_rc3
Release:      0
License:      GPL
Group:        Development/Sources
Autoreqprov:  off
BuildRequires:  coreutils
Requires(post): insserv
Requires(post): /etc/rc.status
%if ! 0%{?opensuse_bs}
BuildRequires:  kernel-dummy
%endif
Provides:       linux
%if "kernel-source" == "kernel-source"
Provides:     linux lx_suse lx_sus22 lx_sus24
Obsoletes:    linux lx-gdt lx-hack lx-suse lx1162_1 lx1162_2 lx1212_1 lx1212_2 lx1213_1 lx1213_2 lx121_1 lx121_2 lx126_1 lx126_2 lx129_1 lx129_2 lx_large kernel_headers lx_suse lx_sus22 lx_sus24
%endif
Source0:      http://www.kernel.org/pub/linux/kernel/v2.6/linux-v2.6.22-rc3.tar.bz2
Source1:      functions.sh
Source2:      source-post.sh
Source11:     post.sh
Source12:     postun.sh
Source13:     series.conf
Source14:     arch-symbols
Source15:     guards
Source21:     config.conf
Source23:     supported.conf
Source30:     config-subst
Source33:     check-for-config-changes
Source34:     check-supported-list
Source35:     install-configs
Source37:     README.SUSE
Source38:     kabi-checks
Source40:     build-source-timestamp
Source41:     built-in-where
Source42:     make-symsets
Source43:     find-provides
Source45:     module-renames
Source46:     find-types
Source47:     extract-modaliases
Source48:     macros.kernel-source
Source49:     kernel-module-subpackage
Source50:     kernel-syms.spec
Source51:     kernel-bigsmp.spec
Source52:     kernel-debug.spec
Source53:     kernel-default.spec
Source54:     kernel-kdump.spec
Source55:     kernel-ppc64.spec
Source56:     kernel-s390.spec
Source57:     kernel-um.spec
Source58:     kernel-vanilla.spec
Source59:     kernel-xen.spec
Source60:     kernel-xenpae.spec
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
Source106:    patches.uml.tar.bz2
Source107:    patches.xen.tar.bz2
Source108:    patches.addon.tar.bz2
Source109:    patches.kernel.org.tar.bz2
Source110:    patches.apparmor.tar.bz2
Source120:    kabi.tar.bz2
Source121:    novell-kmp.tar.bz2
BuildRoot:    %_tmppath/%name-%version-build
Prefix:       /usr/src

%(chmod +x %_sourcedir/{arch-symbols,guards,config-subst,check-for-config-changes,kabi-checks,install-configs})

%define symbols %(set -- $(%_sourcedir/arch-symbols %_target_cpu) $([ -e extra-symbols ] && cat extra-symbols) ; echo $*)

%define preconf 1
%define tolerate_unknown_new_config_options 1

%description
Dummy description.

%prep
if ! [ -e %_sourcedir/linux-v2.6.22-rc3.tar.bz2 ]; then
    echo "Please get a copy of linux-v2.6.22-rc3.tar.bz2 from" \
	 "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/."
fi

echo "Architecture 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 106 -a 107 -a 108 -a 109 -a 110

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

# Unpack the vanilla kernel sources
bzip2 -cd %_sourcedir/linux-v2.6.22-rc3.tar.bz2 \
| tar xf -
cd linux-v2.6.22-rc3
# Hello Linus: hint, hint ...
chmod -Rf a+rX,g-w,o-w .

# Apply the patches needed for this architecture.
%_sourcedir/guards %symbols < %_sourcedir/series.conf \
    > %_builddir/kernel-source-v2.6.22_rc3/kernel-source.patches
for patch in $(< %_builddir/kernel-source-v2.6.22_rc3/kernel-source.patches); do
    if ! patch -s -E -p1 --no-backup-if-mismatch -i %_builddir/kernel-source-v2.6.22_rc3/$patch; then
	echo "*** Patch $patch failed ***"
	exit 1
    fi
done

%_sourcedir/install-configs %_sourcedir %_builddir/kernel-source-v2.6.22_rc3 %source_rel

KERNELRELEASE=v2.6.22-rc3-%source_rel
cat > %_builddir/%{name}-%{version}/.rpm-defs <<EOF
KERNELRELEASE=$KERNELRELEASE
SYMBOLS="%symbols"
EOF

cd ..
mv linux-v2.6.22-rc3 linux-$KERNELRELEASE
cd linux-$KERNELRELEASE

chmod +x arch/ia64/scripts/toolchain-flags  # agruen: necessary?

cd $RPM_BUILD_ROOT/usr/src/linux-$KERNELRELEASE
for config in $(%_sourcedir/guards %symbols < %_sourcedir/config.conf | grep -v vanilla); do
    arch=${config%/*}
    flavor=${config#*/}
    config=arch/$arch/defconfig.$flavor

    case "$flavor" in
    *-*)
	echo "Flavor '$flavor' must not contain dashes." >&2
	exit 1
	;;
    esac

    %_sourcedir/guards %symbols kernel-$flavor < %_sourcedir/series.conf \
	> %_builddir/kernel-source-v2.6.22_rc3/kernel-$flavor.patches
    diff -q %_builddir/kernel-source-v2.6.22_rc3/kernel-{source,$flavor}.patches \
	|| continue

    o=$RPM_BUILD_ROOT/usr/src/linux-$KERNELRELEASE-obj/$arch/$flavor
    mkdir -p $o
    cp $config $o/.config
%ifarch mips
    echo "CONFIG_CROSSCOMPILE=y" >> $o/.config
%endif

    case $flavor in
    um)
	MAKE_ARGS="ARCH=$flavor SUBARCH=$arch O=$o" ;;
    *)
	MAKE_ARGS="ARCH=$arch O=$o" ;;
    esac

%if %{tolerate_unknown_new_config_options}
    yes '' | make oldconfig $MAKE_ARGS
%else
    make silentoldconfig $MAKE_ARGS < /dev/null
    %_sourcedir/check-for-config-changes $config $o/.config
%endif

    make prepare $MAKE_ARGS
    make scripts $MAKE_ARGS

    krel=$(make kernelrelease $MAKE_ARGS)
    mkdir -p ../../../lib/modules/$krel/
    ln -s ../../../usr/src/linux-$KERNELRELEASE \
    	../../../lib/modules/$krel/source

    make clean $MAKE_ARGS
    rm -f $o/.config.old

    # Replace absolute with relative paths.
    src="../../../linux-$KERNELRELEASE"
    out="../linux-$KERNELRELEASE-obj/$arch/$flavor"
    sed -e "s,$RPM_BUILD_ROOT,," \
	-e "s,\(^KERNELSRC[ \t]*:=[ \t]*\).*,\1$src," \
	-e "s,\(^KERNELOUTPUT[ \t]*:=[ \t]*\).*,\1$out," \
	-i $o/Makefile
done

cd $RPM_BUILD_ROOT/usr/src/linux-$KERNELRELEASE-obj
set -- */*
for arch_flavor in $* ; do
    if ! [ -e obj.files ]; then
	(cd $arch_flavor ; find -type f) > obj.files
    fi

    # Strip ELF files
    while read file ; do
	strip $file
    done <<-EOF
	$(xargs -i% file $arch_flavor/% < obj.files \
	    | grep ELF \
	    | sed -e 's/: .*//')
	EOF

    if [ $arch_flavor != $1 ]; then
	while read file ; do
	    if [ -s $arch_flavor/$file ] \
	       && cmp -s $1/$file $arch_flavor/$file ; then
		ln -f $1/$file $arch_flavor/$file
	    fi
	done < obj.files
    fi
done
rm -f obj.files

set -- *
[ -e %_target_cpu ] || ln -s $1 %_target_cpu
%ifarch ppc ppc64
[ -e ppc ] || ln -s $1 ppc
[ -e ppc64 ] || ln -s $1 ppc64
%endif

cd $RPM_BUILD_ROOT/usr/src

for name in nftlcore.c nftlmount.c inftlcore.c inftlmount.c ftl.c; do
  rm linux-$KERNELRELEASE/drivers/mtd/$name
done

# Remove $RPM_BUILD_ROOT prefix from symlinks.
for link in $(find $RPM_BUILD_ROOT/usr/src/linux-$KERNELRELEASE-obj -type l); do
    target=$(readlink $link)
    rm -f $link
    ln -s ${target/$RPM_BUILD_ROOT/} $link
done

ln -sf linux linux  # dummy symlink
ln -sf linux-obj linux-obj  # dummy symlink

%install
# skip long-running sanity checks
export NO_BRP_NOEXECSTACK=yes

source .rpm-defs

# 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
bzip2 -cd  %_sourcedir/novell-kmp.tar.bz2 \
| tar -xf - -C $DOC
ln -s /usr/share/doc/packages/%name/README.SUSE \
    $RPM_BUILD_ROOT/usr/src/linux-$KERNELRELEASE/

%if %preconf
# Generate a list of known flavors.
shopt -s nullglob
flavors=
for config in $(%_sourcedir/guards %symbols < %_sourcedir/config.conf | grep -v vanilla); do
    arch=${config%/*}
    flavor=${config#*/}

    flavors="$flavors $arch/$flavor"
done
flavors="${flavors:1}"
shopt -u nullglob
%endif

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/

cat > kernel-source.files <<EOF
%%defattr(-, root, root)
%%ghost /usr/src/linux
%%ghost /usr/src/linux-obj
/usr/src/linux-$KERNELRELEASE
/usr/src/linux-$KERNELRELEASE-obj
/usr/share/doc/packages/%name
/etc/rpm/macros.kernel-source
/usr/lib/rpm/kernel-module-subpackage
/lib/modules/*
EOF

(   cat %_sourcedir/functions.sh
    sed -e "s:@KERNELRELEASE@:$KERNELRELEASE:g" %_sourcedir/source-post.sh
) > source-post.sh

%post -f source-post.sh

%postun
%if %preconf
%{insserv_cleanup}
%endif

%files -f kernel-source.files
openSUSE Build Service is sponsored by