JENSEN_ARCHS=
SMP_ARCHS=
BIGSMP_ARCHS=
+PSERIES64_ARCHS=
UP_ARCHS=
RHBUILD=0
KERNEL_FILE=
SERIES_FILE=
CONFIG_FILE=
+RPMBUILD=
canon()
{
echo $PWD
popd >/dev/null
}
-TOPDIR=$(canon "${0%%${0##*/}}/..")
+TOPDIR="${0%%${0##*/}}"
+if [ "${TOPDIR}" ] ; then
+ TOPDIR=$(canon "${TOPDIR}/..")
+else
+ TOPDIR=$(canon "..")
+fi
+
+lbuild_topdir()
+{
+ retdir=$TOPDIR
+ while [ ! -d $retdir/BUILD ] ; do
+ retdir=$(canon "$retdir/..")
+ if [ "$retdir" = "/" ] ; then
+ break;
+ fi
+ done
+ echo "$retdir"
+}
cleanup()
{
if [ -z "$JOBS" -o "$JOBS" -lt "1" ] ; then
JOBS=1
fi
+
+ RPMBUILD=$(which rpmbuild 2>/dev/null | head -1)
+ if [ ! "$RPMBUILD" -o "$RPMBUILD" == "" ]; then
+ RPMBUILD=$(which rpm 2>/dev/null | head -1)
+ if [ ! "$RPMBUILD" -o "$RPMBUILD" == "" ]; then
+ usage 1 "Could not find binary for making rpms (tried rpmbuild and rpm)."
+ fi
+ fi
}
get_lustre_version()
*.tar.bz2)
echo 'jxf'
;;
+ *.tar)
+ echo 'xf'
+ ;;
*)
fatal 1 "tarflags(): Unrecognized tar extension in file: $1"
;;
{
MAKE="make -s"
if [ "$CC" ] ; then
- MAKE="$MAKE CC=$CC"
+ MAKE_CC="CC=$CC"
fi
if [ "$ARCH" ] ; then
MAKE_ARCH="$MAKE ARCH=$ARCH"
echo "Overriding EXTRAVERSION in kernel..."
perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${EXTRA_VERSION}${TARGET_CONFIG}/" Makefile
echo "Making depend in $PWD..."
- $MAKE mrproper || fatal 1 "Error running make mrproper"
+ $MAKE "$MAKE_CC" mrproper || fatal 1 "Error running make mrproper"
cp "$CONFIG_FILE" .config
for oc in oldconfig_nonint silentoldconfig oldconfig ; do
if grep -q "$oc" Makefile ; then
- $MAKE $oc || fatal 1 "Error running make oldconfig"
+ $MAKE "$MAKE_CC" $oc || fatal 1 "Error running make oldconfig"
break
fi
done
case "$VERSION" in
2.6*)
- $MAKE include/asm
+ $MAKE "$MAKE_CC" include/asm
;;
2.4*)
- $MAKE symlinks
- $MAKE dep || fatal 1 "Error running make dep"
+ $MAKE "$MAKE_CC" symlinks
+ $MAKE "$MAKE_CC" dep || fatal 1 "Error running make dep"
;;
esac
- $MAKE include/linux/version.h || fatal 1 "Error making include/linux/version.h"
+ $MAKE "$MAKE_CC" include/linux/version.h || fatal 1 "Error making include/linux/version.h"
}
build_kernel()
echo "Building kernel in $PWD..."
case "$TARGET_ARCH" in
i386 | i586 | i686 | athlon | x86_64)
- $MAKE_J bzImage || fatal 1 "Error making bzImage."
+ $MAKE_J "$MAKE_CC" bzImage || fatal 1 "Error making bzImage."
;;
- ppc | ppc64)
- $MAKE_J vmlinux || fatal 1 "Error making vmlinux."
+ ia64 | ppc | ppc64)
+ $MAKE_J "$MAKE_CC" vmlinux || fatal 1 "Error making vmlinux."
;;
*)
- $MAKE_J boot || fatal 1 "Error making boot."
+ $MAKE_J "$MAKE_CC" boot || fatal 1 "Error making boot."
;;
esac
- $MAKE_J modules || fatal 1 "Error building modules."
+ $MAKE_J "$MAKE_CC" modules || fatal 1 "Error building modules."
popd >/dev/null
}
configure_lustre()
{
+ return 0
(( $BUILD_LUSTRE )) || return 0
pushd "$TOPDIR" >/dev/null
[ -f Makefile ] && make -s clean
{
(( $BUILD_LUSTRE )) || return 0
set_make
+ FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
pushd "$TOPDIR" >/dev/null
- $MAKE_J || fatal 1 "Error building Lustre."
+ sed \
+ -e s^@VERSION@^${LUSTRE_VERSION}^g \
+ -e s^@LINUXRELEASE@^${FULL_VERSION}^g \
+ -e s^@RELEASE@^${FULL_VERSION//-/_}^g \
+ -e s^@ac_configure_args@^"--with-linux=${PWD}/linux ${CONFIGURE_FLAGS}"^g \
+ < build/lustre.spec.in \
+ > build/lustre.spec
+ $RPMBUILD --target ${TARGET_ARCH} -bb build/lustre.spec \
+ --define "_topdir $(lbuild_topdir)" || \
+ fatal 1 "Error building Lustre rpms."
+ # $MAKE_J "$MAKE_CC" || fatal 1 "Error building Lustre."
popd >/dev/null
}
mkdir -p "$DESTDIR/dev/shm"
mkdir -p "$DESTDIR/lib/modules/${FULL_VERSION}"
- $MAKE INSTALL_MOD_PATH="$DESTDIR" KERNELRELEASE="$FULL_VERSION" \
+ $MAKE "$MAKE_CC" INSTALL_MOD_PATH="$DESTDIR" KERNELRELEASE="$FULL_VERSION" \
-s modules_install || \
fatal 1 "Error installing modules."
install_lustre()
{
(( $INSTALL_LUSTRE )) || return 0
+ return 0
set_make
FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
pushd "$TOPDIR" >/dev/null
- $MAKE -s install "DESTDIR=$DESTDIR" KERNELRELEASE="$FULL_VERSION" || fatal 1 "Error installing Lustre."
+ $MAKE "$MAKE_CC" -s install "DESTDIR=$DESTDIR" KERNELRELEASE="$FULL_VERSION" || fatal 1 "Error installing Lustre."
popd >/dev/null
}
build_dir="${TOPDIR}/modules-${FULL_VERSION}/${dir##*/}"
cp -a $dir $build_dir
# these modules are terrible, and don't all build
- $MAKE_J -C $build_dir modules KERNEL_SOURCE="${TOPDIR}/linux"
+ $MAKE_J "$MAKE_CC" -C $build_dir modules KERNEL_SOURCE="${TOPDIR}/linux"
fi
done
}
install_kms()
{
(( $INSTALL_KERNEL )) || return 0
- (( $SUSEBUILD )) || return 0
+ (( $LINUX26 )) || return 0
set_make
FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
for build_dir in "${TOPDIR}/modules-${FULL_VERSION}/*" ; do
[ -d $build_dir ] || continue
# these modules are terrible, and don't all build
- $MAKE -C $build_dir KERNEL_SOURCE="${TOPDIR}/linux" INSTALL_MOD_PATH="$DESTDIR"
+ $MAKE "$MAKE_CC" -C $build_dir KERNEL_SOURCE="${TOPDIR}/linux" INSTALL_MOD_PATH="$DESTDIR"
done
( symver vmlinux
moddir="${DESTDIR}/lib/modules/${FULL_VERSION}"
save_headers()
{
- echo "Saving headers for $1 $2..."
+ (( $SAVE_HEADERS )) || return 0
+
+ echo "Saving headers for ${TARGET_CONFIG:-up} ${TARGET_ARCH}..."
pushd linux >/dev/null
KVERREL="${VERSION}-${EXTRA_VERSION}"
# deal with the kernel headers that are version specific
- saveddir="$RPM_BUILD_ROOT/usr/src/linux-${KVERREL}/savedheaders/$2/$1"
+ saveddir="$RPM_BUILD_ROOT/usr/src/linux-${KVERREL}/savedheaders/${TARGET_ARCH}/${TARGET_CONFIG:-up}"
mkdir -p "$saveddir"
install -m 644 include/linux/autoconf.h "$saveddir/autoconf.h"
install -m 644 include/linux/version.h "$saveddir/version.h"
mv include/linux/modules "$saveddir/"
- echo $2 $1 ../../savedheaders/$2/$1/ >> $RPM_BUILD_ROOT/usr/src/linux-${KVERREL}/savedheaders/list
+ echo ${TARGET_ARCH} ${TARGET_CONFIG} ../../savedheaders/${TARGET_ARCH}/${TARGET_CONFIG:-up}/ \
+ >> "$RPM_BUILD_ROOT/usr/src/linux-${KVERREL}/savedheaders/list"
popd >/dev/null
}
for arch in $BIGSMP_ARCHS ; do
save_headers bigsmp $arch
done
+ for arch in $PSERIES64_ARCHS ; do
+ save_headers pseries64 $arch
+ done
for arch in $UP_ARCHS ; do
save_headers up $arch
done
install_kms
-save_all_headers
+save_headers
exit 0