--- /dev/null
+# vim:expandtab:shiftwidth=4:softtabstop=4:tabstop=4:
+
+# increment this if you have made a change that should force a new kernel
+# to build built
+BUILD_GEN=1
+
+DEVEL_KERNEL_TYPE="source"
+
+prepare_and_build_srpm() {
+
+ pushd $TOPDIR >/dev/null
+ # seems there is a bug (on Ubuntu at least) where all of the .specs
+ # are not put into SPECS
+ mv SOURCES/*.spec SPECS/
+
+ # generate our buildid
+ local buildid="lustre${EXTRA_VERSION##*_lustre}"
+
+ # edit the SPECs with our changes
+ local spec
+ for spec in $RPMSMPTYPE source; do
+ #cp $TOPDIR/SPECS/kernel-$spec.spec{,.orig}
+ sed -i -e 's/^\(Name:.*kernel-\)\(.*\)/\1lustre-\2/' \
+ -e "s/^Release:.*/&_${buildid}/" \
+ -e "/^Provides: *kernel = /a\
+Provides: kernel-$spec = %{version}-%{release}
+" \
+ -e "s/^ExclusiveArch:.*/& ppc ppc64/" \
+ -e '/^# Apply the patches needed for this architecture\./a\
+cp %_sourcedir/linux-2.6.16-lustre.patch %_builddir/%{name}-%{version}/lustre.patch\
+! grep -q lustre.patch %_sourcedir/series.conf && echo -e "\\n\\tlustre.patch" >> %_sourcedir/series.conf' \
+ -e "/flavor=\${config/a\
+ [ \"\$flavor\" == \"$RPMSMPTYPE\" ] || continue" \
+ -e 's/\(.*\)\([^#].*\)fookernel-source/\1\2kernel-lustre-source/g' \
+ -e '/^%build/,/^%changelog/s/kernel-\({*\)source/kernel-\1lustre-source/g' \
+ SPECS/kernel-${spec}.spec
+
+ # XXX - a building-on-Ubuntu hack
+ if grep -q "Ubuntu" /etc/issue; then
+ sed -i -e '/^%_sourcedir\/install-configs %_sourcedir .*/i\
+curl ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.17/2.6.17-mm1/broken-out/i386-use-c-code-for-current_thread_info.patch | patch -p1' \
+ -e 's/^\(BuildRequires: .*\)$/#NOU \1/g' \
+ -e 's/%(\(chmod .*\))$/%(bash -c "\1")/' \
+ -e 's/ -a 109//' \
+ SPECS/kernel-${spec}.spec
+ fi
+done
+
+ # XXX - need to flesh this out per the rhel5 method
+ local targets
+ for arch in $BUILD_ARCHS; do
+ targets="--target $arch $targets"
+ mkdir -p config/$(basearch $arch)
+ cp $CONFIG_FILE config/$(basearch $arch)/$RPMSMPTYPE
+ done
+
+ tar cjf SOURCES/config.tar.bz2 config
+ rm -rf config
+
+ # do we need any special rpm build options
+ local rpmbuildopt="-bb"
+ if $DO_SRC; then
+ rpmbuildopt="-ba"
+ fi
+
+ # XXX - ignore the kabi changes. need to figure out what this is really
+ # all about.
+ touch SOURCES/IGNORE-KABI-BADNESS
+
+
+# XXX temp speedup hack
+#if false; then
+ # now build it
+ if ! $RPMBUILD $rpmbuildopt $targets \
+ --define "_topdir $TOPDIR" \
+ $TOPDIR/SPECS/kernel-$RPMSMPTYPE.spec >&2; then
+ fatal 1 "Failed to build kernel RPM"
+ fi
+#fi
+
+ # for SLES10, we also need to build the kernel-source rpm
+ if ! $RPMBUILD $rpmbuildopt $targets \
+ --define "_topdir $TOPDIR" \
+ $TOPDIR/SPECS/kernel-source.spec >&2; then
+ fatal 1 "Failed to build kernel source RPM"
+ fi
+
+}
+
+devel_kernel_name() {
+ local lustre=${1:-false}
+
+ if $lustre; then
+ echo "kernel-lustre-$DEVEL_KERNEL_TYPE"
+ else
+ echo "kernel-$DEVEL_KERNEL_TYPE"
+ fi
+
+}
+
+rpm_BUILD_kernel_dirname() {
+ local rpmsmptype="$1"
+ local lnxmaj="$2"
+ local lnxmin="$3"
+ local arch="$4"
+
+ echo kernel-lustre-${rpmsmptype}-${lnxmaj}${lnxmin}/linux-${lnxmaj}
+}