diff --git a/build/lbuild b/build/lbuild
index 6450ed6f26f1dfb945b427cbcfaab23e6a8aa564..20d5439c2e05c94e35a72917de07b96268328538 100755
--- a/build/lbuild
+++ b/build/lbuild
@@ -629,6 +629,7 @@ prep_kernel_build()
         -e "s^@JENSEN_ARCHS@^$BOOT_ARCHS^g" \
         -e "s^@KERNEL_EXTRA_VERSION@^$EXTRA_VERSION^g" \
         -e "s^@KERNEL_EXTRA_VERSION_DELIMITER@^$EXTRA_VERSION_DELIMITER^g" \
+        -e "s^@KERNEL_TARGET_DELIMITER@^$TARGET_DELIMITER^g" \
         -e "s^@KERNEL_RELEASE@^${EXTRA_VERSION//-/_}^g" \
         -e "s^@KERNEL_SOURCE@^$KERNEL^g" \
         -e "s^@KERNEL_VERSION@^$VERSION^g" \
@@ -1204,24 +1205,12 @@ patchless_build_sequence()
     fi
     [ -d $TOPDIR/reused ] && rm -rf $TOPDIR/reused
 
-    local type=
-    local delimiter=
+    local delimiter=${EXTRA_VERSION_DELIMITER:-"-"}
+    # default to source type -source and special case below
+    local type=-source
     case "$DISTRO" in
         rhel*)
             type=-devel
-            delimiter=-
-            ;;
-        sles10)
-            type=-source
-            delimiter=.
-            ;;
-        sles9)
-            type=-source
-            delimiter=-
-            ;;
-        *)
-            echo "Don't know what to do with $DISTRO"
-            return 255
             ;;
     esac
 
diff --git a/build/lmake b/build/lmake
index 8a0b47ba4bb7244524b1d6d4380611324909bf56..c74297224d06e9f75d5ec35bd0e6c85d45cc0432 100755
--- a/build/lmake
+++ b/build/lmake
@@ -393,7 +393,11 @@ depend_kernel()
     set_make
     pushd "$TOPDIR/linux" >/dev/null
     echo "Overriding EXTRAVERSION in kernel..."
-    perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = ${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}/" Makefile
+    local extra_version="${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}"
+    if [ -n "${TARGET_CONFIG}" ]; then
+	extra_version="${extra_version}${TARGET_DELIMITER}${TARGET_CONFIG}"
+    fi
+    perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = ${extra_version}/" Makefile
     echo "Making depend in $PWD..."
     $MAKE "$MAKE_CC" mrproper || fatal 1 "Error running make mrproper"
     rm -f rpm-release
@@ -505,7 +509,6 @@ build_lustre()
 {
     (( $BUILD_LUSTRE )) || return 0
     set_make
-    FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
     pushd "$TOPDIR" >/dev/null
     sed \
 	-e s^@VERSION@^${LUSTRE_VERSION}^g \
@@ -526,7 +529,6 @@ install_kernel()
 {
     (( $INSTALL_KERNEL )) || return 0
     set_make
-    FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
     pushd "$TOPDIR/linux" >/dev/null
     mkdir -p "$DESTDIR/boot"
 
@@ -583,7 +585,6 @@ cleanup_libmodules()
 {
     (( $INSTALL_LUSTRE )) || return 0
 
-    FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}${TARGET_CONFIG}"
     KVERREL="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}"
     i="$DESTDIR/lib/modules/${FULL_VERSION}"
 
@@ -603,7 +604,6 @@ install_lustre()
     (( $INSTALL_LUSTRE )) || return 0
     return 0
     set_make
-    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
@@ -614,7 +614,6 @@ build_kms()
     (( $BUILD_KERNEL )) || return 0
     (( $SUSEBUILD )) || return 0
     set_make
-    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
@@ -639,12 +638,16 @@ install_kms()
     (( $INSTALL_KERNEL )) || return 0
     (( $LINUX26 )) || return 0
     set_make
-    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
 	$MAKE "$MAKE_CC" -C $build_dir KERNEL_SOURCE="${TOPDIR}/linux" INSTALL_MOD_PATH="$DESTDIR" 
     done
+    local symvers_file="${DESTDIR}/boot/symvers-${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}-${TARGET_ARCH}"
+    if [ -n "$TARGET_CONFIG" ]; then
+	symvers_file="${symvers_file}${TARGET_DELIMITER}${TARGET_CONFIG}"
+    fi
+    symvers_file="$symvers_file.gz"
     (   symver vmlinux
 	moddir="${DESTDIR}/lib/modules/${FULL_VERSION}"
 	cd $moddir/kernel
@@ -656,8 +659,7 @@ install_kms()
 			   -name '*.ko' -print); do
 	    symver $module
 	done
-    ) | sort -u -k2 \
-	| gzip -c9 > "${DESTDIR}/boot/symvers-${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}-${TARGET_ARCH}${TARGET_CONFIG}.gz"
+    ) | sort -u -k2 | gzip -c9 > $symvers_file
 }
 
 save_headers()
@@ -810,6 +812,10 @@ done
 check_options
 load_target
 EXTRA_VERSION_DELIMITER=${EXTRA_VERSION_DELIMITER:-"-"}
+FULL_VERSION="${VERSION}${EXTRA_VERSION_DELIMITER}${EXTRA_VERSION}"
+if [ -n "$TARGET_CONFIG" ]; then
+    FULL_VERSION="${FULL_VERSION}${TARGET_DELIMITER}${TARGET_CONFIG}"
+fi
 setup_ccache_distcc
 
 extract_kernel
diff --git a/build/lustre-kernel-2.4.spec.in b/build/lustre-kernel-2.4.spec.in
index 54e83407f9709fd928526bd419fe980fb8669314..772e13b9e2c0a15f35c765197b0d703e35ebe09f 100644
--- a/build/lustre-kernel-2.4.spec.in
+++ b/build/lustre-kernel-2.4.spec.in
@@ -11,6 +11,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define kversion @KERNEL_VERSION@
 %define kextraver @KERNEL_EXTRA_VERSION@
 %define kextraverdelim @KERNEL_EXTRA_VERSION_DELIMITER@
+%define flavordelim "@KERNEL_TARGET_DELIMITER@"
 %define release @KERNEL_RELEASE@
 # /usr/src/%{kslnk} -> /usr/src/linux-%{KVERREL}
 %define kslnk linux-2.4
@@ -388,11 +389,12 @@ popd >/dev/null
 
 # handle both SuSE and Red Hat's new-kernel-pkg bits
 for flavor in "" smp bigmem bigsmp pseries64 BOOT jensen ; do
+	[ -n "$flavor" ] && delim_flavor="%{flavordelim}$flavor"
 	for when in pre preun post postun ; do
 		script="${when}${flavor}.sh"
 		cat %{SOURCE25} %{SOURCE32} %{SOURCE33} > ${script}
 		echo "if [ -d /etc/susehelp.d ] ; then" >> ${script}
-		sed -e "s/@when@/$when/g" -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE28} >> ${script}
+		sed -e "s/@when@/$when/g" -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE28} >> ${script}
 		case $when in
 			pre)
 				echo "if [ ! -f /etc/modprobe.conf ] ; then" >> ${script}
@@ -402,20 +404,20 @@ for flavor in "" smp bigmem bigsmp pseries64 BOOT jensen ; do
 			post)
 				# /sbin/update-modules.dep compares when the modules were built, rather
 				# than installed, so force modules.dep to be recreated
-				echo "rm -f /lib/modules/%{KVERREL}${flavor}/modules.dep" >> ${script}
+				echo "rm -f /lib/modules/%{KVERREL}${delim_flavor}/modules.dep" >> ${script}
 				echo "if [ -f /etc/modprobe.conf ] ; then" >> ${script}			
-				sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE26} >> ${script}
+				sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE26} >> ${script}
 
 				echo "else" >> ${script}
-				sed -e "s^%ver_str^%{KVERREL}${flavor}^g" -e "s^%%{cfg_name}^${flavor}^g" %{SOURCE29} >> ${script}
+				sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" -e "s^%%{cfg_name}^${delim_flavor}^g" %{SOURCE29} >> ${script}
 				echo "fi" >> ${script}
 				;;
 			postun)
 				echo "if [ -f /etc/modprobe.conf ] ; then" >> ${script}			
-				sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE27} >> ${script}
+				sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE27} >> ${script}
 
 				echo "else" >> ${script}			
-				sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE30} >> ${script}
+				sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE30} >> ${script}
 				echo "fi" >> ${script}
 				;;
 		esac
@@ -440,7 +442,7 @@ if [ -x /sbin/new-kernel-pkg ] ; then
 		PACKAGE_ARG="--package kernel-${flavor}"
 	fi
         /sbin/new-kernel-pkg $PACKAGE_ARG --mkinitrd --depmod \
-		--install %{KVERREL}${flavor}
+		--install %{KVERREL}${delim_flavor}
 fi
 EOF
 				;;
@@ -455,9 +457,9 @@ EOF
 			preun)
 				cat >> ${script} <<EOF
 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
-rm -f /lib/modules/%{KVERREL}${flavor}/modules.*
+rm -f /lib/modules/%{KVERREL}${delim_flavor}/modules.*
 if [ -x /sbin/new-kernel-pkg ] ; then
- /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}${flavor}
+ /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}${delim_flavor}
 fi
 EOF
 				;;
@@ -466,20 +468,20 @@ EOF
 
 	cat > "kernel$flavor.files" <<EOF
 %%defattr(-, root, root)
-/boot/%{kernel_glob}${flavor}
-/boot/System.map-%{KVERREL}${flavor}
-/boot/config-%{KVERREL}${flavor}
+/boot/%{kernel_glob}${delim_flavor}
+/boot/System.map-%{KVERREL}${delim_flavor}
+/boot/config-%{KVERREL}${delim_flavor}
 %%dir /lib/modules
 %%dir /dev/shm
-/lib/modules/%{KVERREL}${flavor}
+/lib/modules/%{KVERREL}${delim_flavor}
 %ifarch ia64
-/boot/efi/redhat/%{kernel_glob}${flavor}
+/boot/efi/redhat/%{kernel_glob}${delim_flavor}
 %endif
 %if %{linux26}
 %if %{susebuild}
-/boot/Kerntypes-%{KVERREL}${flavor}
+/boot/Kerntypes-%{KVERREL}${delim_flavor}
 %endif
-/boot/symvers-%{KVERREL}-%{_target_cpu}${flavor}.gz
+/boot/symvers-%{KVERREL}-%{_target_cpu}${delim_flavor}.gz
 %endif
 EOF
 
@@ -629,10 +631,10 @@ BuildObj ()
 		flavext=""
 		flavtgt=""
 	else
-		flavext="-$flavor"
+		flavext="%{flavordelim}$flavor"
 		flavtgt="$flavor"
 	fi
-        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{kextraverdelim}%{kextraver}${flavtgt}/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
+        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{kextraverdelim}%{kextraver}${flavext}/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
 	c="$RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}"
 	o="${c}-obj/%{_target_cpu}/$flavor"
 	mkdir -p $o
@@ -659,12 +661,8 @@ BuildObj ()
 $(set -- 2.6.5 ; echo ${*//./ })
 EOF
 	rm -f $o/Makefile
-        source scripts/mkmakefile \
-	    ../../../linux-%{KVERREL} \
-            $o \
-	    $VERSION \
-	    $PATCHLEVEL \
-	    > $o/Makefile.in
+	ARCH=%{_target_cpu} /bin/sh scripts/mkmakefile ../../../linux-%{KVERREL} $o \
+		$VERSION $PATCHLEVEL > $o/Makefile.in
 	if [ -f $o/Makefile ] ; then
 		# will exist only for 2.6.17 and newer because mkmakefile
 		# now writes the makefile to $o instead of stdout
@@ -672,7 +670,7 @@ EOF
 	fi
 	sed -e "s^$o^../linux-%{KVERREL}-obj/%{_target_cpu}/$flavor^" \
 		$o/Makefile.in > $o/Makefile
-	zcat "$RPM_BUILD_ROOT/boot/symvers-%{KVERREL}-%{_target_cpu}${flavtgt}.gz" \
+	zcat "$RPM_BUILD_ROOT/boot/symvers-%{KVERREL}-%{_target_cpu}${flavext}.gz" \
 	    > $o/Module.symvers
 }