TARGET_CONFIG=
JOBS=1
CONFIGURE_FLAGS=
+TMPDIR=${TMPDIR:-"/var/tmp"}
# commands to run
BUILD_LUSTRE=0
fi
}
+# do these after load_target(), which maybe export CC
+setup_ccache_distcc()
+{
+ # distcc can't handle ".incbin"
+ if [ "$TARGET" == "2.6-suse" -o "$TARGET" == "2.6-rhel4" ]; then
+ if [ "$TARGET_ARCH" == "x86_64" ]; then
+ unset DISTCC
+ fi
+ fi
+
+ CC=${CC:-gcc}
+ if [ "$CCACHE" ]; then
+ CC="$CCACHE $CC"
+ [ "$DISTCC" ] && export CCACHE_PREFIX="$DISTCC"
+ else
+ [ "$DISTCC" ] && CC="$DISTCC $CC"
+ fi
+}
+
tarflags()
{
case "$1" in
set_make
pushd "$TOPDIR/linux" >/dev/null
echo "Overriding EXTRAVERSION in kernel..."
- perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${EXTRA_VERSION}${TARGET_CONFIG}/" Makefile
+ perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = ${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}/" Makefile
echo "Making depend in $PWD..."
$MAKE "$MAKE_CC" mrproper || fatal 1 "Error running make mrproper"
rm -f rpm-release
+ # remove localversion-* files to avoid kernel release string
+ # srewing up by the top-level Makefile
+ rm -f localversion-*
cp "$CONFIG_FILE" .config
- # use the expect script to "make oldconfig" and answer the questions for
- # new items conservatively. QA will get notified on anything newly added
- # for them to review and adjust accordingly.
- local logfile=$(mktemp /tmp/XXXXXX)
- #timed_run 300 $TOPDIR/build/update_oldconfig $logfile
- #local RC=${PIPESTATUS[0]}
- local RC=$(strace -f -o update_oldconfig.strace bash -c "$TOPDIR/build/update_oldconfig $logfile; echo \$?")
- if [ $RC -eq 143 ]; then
- fatal 1 "update_oldconfig timed out"
- elif [ $RC -ne 0 ]; then
- # dump the log
- cat $logfile
+ local UPDATE_OLDCONFIG=
+ for oc in oldconfig_nonint silentoldconfig oldconfig ; do
+ if grep -q "$oc" Makefile ; then
+ timed_run 300 $MAKE "$MAKE_CC" $oc || UPDATE_OLDCONFIG=1
+ break
+ fi
+ done
+
+ if [ "$UPDATE_OLDCONFIG" ] ; then
+ # use the expect script to "make oldconfig" and answer the questions for
+ # new items conservatively. QA will get notified on anything newly added
+ # for them to review and adjust accordingly.
+ local logfile=$(mktemp /tmp/XXXXXX)
+ #timed_run 300 $TOPDIR/build/update_oldconfig $logfile
+ #local RC=${PIPESTATUS[0]}
+ #local RC=$(strace -f -o update_oldconfig.strace bash -c "$TOPDIR/build/update_oldconfig $logfile; echo \$?")
+ $TOPDIR/build/update_oldconfig $logfile
+ local RC=${PIPESTATUS[0]}
+ #$TOPDIR/build/update_oldconfig $logfile
+ #local RC=${PIPESTATUS[0]}
+ if [ $RC -eq 143 ]; then
+ fatal 1 "update_oldconfig timed out"
+ elif [ $RC -ne 0 ]; then
+ # dump the log
+ cat $logfile
+ rm -f $logfile
+ if [ -f update_oldconfig.strace ]; then
+ cat update_oldconfig.strace
+ rm -f update_oldconfig.strace
+ fi
+ fatal 1 "update_oldconfig failed: $RC. See log above."
+ fi
rm -f $logfile
- cat update_oldconfig.strace
- rm -f update_oldconfig.strace
- fatal 1 "update_oldconfig failed: $RC. See log above."
- fi
- rm -f $logfile
- # now notify if resulting .config is different than $CONFIG_FILE
- local tmpfile=$(mktemp /tmp/XXXXXX)
- diff -I '^#.*' -u "$CONFIG_FILE" .config >$tmpfile
- if [ -s $tmpfile ]; then
- { cat <<EOF
+ # now notify if resulting .config is different than $CONFIG_FILE
+ local tmpfile=$(mktemp /tmp/XXXXXX)
+ diff -I '^#.*' -u "$CONFIG_FILE" .config >$tmpfile
+ if [ -s $tmpfile ]; then
+ { cat <<EOF
To: qa@lists.clusterfs.com
Subject: kernel_config change
difference when compared to .config in the following way:
EOF
- cat $tmpfile
- echo -e "\n\nPlease consider updating $CONFIG_FILE."
- # not sure these are entirely useful. the above and "patch" are good
- #echo -e "\nThe entire new .config file:\n"
- #cat .config
- } | sendmail -fqa@clusterfs.com -t
+ cat $tmpfile
+ echo -e "\n\nPlease consider updating $CONFIG_FILE."
+ # not sure these are entirely useful. the above and "patch" are good
+ #echo -e "\nThe entire new .config file:\n"
+ #cat .config
+ } | sendmail -fqa@clusterfs.com -t
+ fi
+ rm -f $tmpfile
fi
- rm -f $tmpfile
+
case "$VERSION" in
2.6*)
$MAKE "$MAKE_CC" include/asm
{
(( $BUILD_LUSTRE )) || return 0
set_make
- FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
+ FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
pushd "$TOPDIR" >/dev/null
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 \
+ < lustre.spec.in \
+ > lustre.spec
+ $RPMBUILD --target ${TARGET_ARCH} -bb lustre.spec \
+ --define "_tmppath $TMPDIR" \
--define "_topdir $(lbuild_topdir)" || \
fatal 1 "Error building Lustre rpms."
# $MAKE_J "$MAKE_CC" || fatal 1 "Error building Lustre."
{
(( $INSTALL_KERNEL )) || return 0
set_make
- FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
+ FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
pushd "$TOPDIR/linux" >/dev/null
mkdir -p "$DESTDIR/boot"
{
(( $INSTALL_LUSTRE )) || return 0
- FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
- KVERREL="${VERSION}-${EXTRA_VERSION}"
+ FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
+ KVERREL="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}"
i="$DESTDIR/lib/modules/${FULL_VERSION}"
rm -f $i/build
(( $INSTALL_LUSTRE )) || return 0
return 0
set_make
- FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
+ FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
pushd "$TOPDIR" >/dev/null
$MAKE "$MAKE_CC" -s install "DESTDIR=$DESTDIR" KERNELRELEASE="$FULL_VERSION" || fatal 1 "Error installing Lustre."
popd >/dev/null
(( $BUILD_KERNEL )) || return 0
(( $SUSEBUILD )) || return 0
set_make
- FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
+ FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
mkdir -p "${TOPDIR}/modules-${FULL_VERSION}"
for dir in /usr/src/kernel-modules/* ; do
# we are replacing lustre-lite, so don't include it
(( $INSTALL_KERNEL )) || return 0
(( $LINUX26 )) || return 0
set_make
- FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
+ FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${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
symver $module
done
) | sort -u -k2 \
- | gzip -c9 > "${DESTDIR}/boot/symvers-${VERSION}-${EXTRA_VERSION}-${TARGET_ARCH}${TARGET_CONFIG}.gz"
+ | gzip -c9 > "${DESTDIR}/boot/symvers-${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}-${TARGET_ARCH}${TARGET_CONFIG}.gz"
}
save_headers()
echo "Saving headers for ${TARGET_CONFIG:-up} ${TARGET_ARCH}..."
pushd linux >/dev/null
- KVERREL="${VERSION}-${EXTRA_VERSION}"
+ KVERREL="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}"
# deal with the kernel headers that are version specific
saveddir="$RPM_BUILD_ROOT/usr/src/linux-${KVERREL}/savedheaders/${TARGET_ARCH}/${TARGET_CONFIG:-up}"
check_options
load_target
+EXTRA_VERSION_DELIMITER=${EXTRA_VERSION_DELIMITER:-"-"}
+setup_ccache_distcc
extract_kernel
patch_kernel