Whamcloud - gitweb
LU-8519 build: make SLES use lbuild kernel-devel
[fs/lustre-release.git] / contrib / lbuild / lbuild-sles
index eba78f5..8ceccd0 100644 (file)
@@ -6,6 +6,8 @@ BUILD_GEN+=".1" #LU-3337 add missing build files for sles11sp2 server
 
 DEVEL_KERNEL_TYPE="default-devel"
 RPM_HELPERS_DIR="/usr/lib/rpm"
+RMAC=$HOME/.rpmmacros
+SUSE_MACROS=/etc/rpm/macros.kernel-source
 
 prepare_and_build_srpm() {
 
@@ -44,7 +46,7 @@ prepare_and_build_srpm() {
 #     landing.
 #if false; then
     # now build it
-    if ! $RPMBUILD $rpmbuildopt $targets \
+    if ! rpmbuild $rpmbuildopt $targets \
                    --define "_topdir $TOPDIR" \
                    $TOPDIR/SOURCES/kernel-$RPMSMPTYPE.spec 2>&1; then
         fatal 1 "Failed to build kernel RPM"
@@ -52,12 +54,19 @@ prepare_and_build_srpm() {
 #fi
 
     # for SLES, we also need to build the kernel-source rpm
-    if ! $RPMBUILD $rpmbuildopt $targets \
+    if ! rpmbuild $rpmbuildopt $targets \
                    --define "_topdir $TOPDIR" \
                    $TOPDIR/SOURCES/kernel-source.spec 2>&1; then
         fatal 1 "Failed to build kernel source RPM"
     fi
 
+    # for SLES, we also need to build the kernel-syms rpm
+    if ! rpmbuild $rpmbuildopt $targets \
+                   --define "_topdir $TOPDIR" \
+                   $TOPDIR/SOURCES/kernel-syms.spec 2>&1; then
+        fatal 1 "Failed to build kernel syms RPM"
+    fi
+
 }
 
 devel_kernel_name() {
@@ -108,12 +117,21 @@ resolve_arch() {
 }
 
 find_linux_devel_paths() {
-    local path="$1"
+       local path="$1"
+       local linuxobjpath=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}-obj/$(resolve_arch $TARGET_ARCH $PATCHLESS)/$RPMSMPTYPE
 
-    LINUX=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}
-    LINUXOBJ=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}-obj/$(resolve_arch $TARGET_ARCH $PATCHLESS)/$RPMSMPTYPE
+       LINUX=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}
+       LINUXOBJ=$path/usr/src/linux-obj/$(resolve_arch $TARGET_ARCH $PATCHLESS)/$RPMSMPTYPE
 
-    return 0
+       # symlink the linux-obj to linux-version-obj
+       ln -s $linuxobjpath $LINUXOBJ
+
+       # We modify %kernel_module_package macro to use the linux obj
+       # that lbuild install, not the OS installed /usr/src
+       sed -i "/^%kernel_module_package/,/^)}$/d" $RMAC
+       sed -e "s/\/usr\/src/${path//\//\\/}\/usr\/src/" ${SUSE_MACROS} >> $RMAC
+
+       return 0
 }
 
 mcpu_rpmbuild_opt() {
@@ -126,3 +144,8 @@ mcpu_rpmbuild_opt() {
 find_linux_release() {
     _find_linux_release $LINUXOBJ
 }
+
+# cleanup the modified/added rpmmacros
+cleanup_rpmmacros() {
+       sed -i "/^%kernel_module_package/,/^)}$/d" $RMAC
+}