Whamcloud - gitweb
LU-8519 build: make SLES use lbuild kernel-devel 84/22484/6
authorMinh Diep <minh.diep@intel.com>
Tue, 13 Sep 2016 22:42:59 +0000 (15:42 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Sat, 8 Oct 2016 16:38:15 +0000 (16:38 +0000)
SLES %kernel_module_package assume kernel-devel installed
in standard location /usr/src/. However, lbuild extracts
kernel-devel into its location; so we need to change
%kernel_module_package macros to use lbuild's kernel obj

Create a cleanup_rpmmacros to remove the change afterward

Test-parameters: trivial

Change-Id: I8f1d8ac50436455be23e15b0a277afb6c7def7c3
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: http://review.whamcloud.com/22484
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
contrib/lbuild/lbuild
contrib/lbuild/lbuild-rhel7
contrib/lbuild/lbuild-sles

index 83a40e5..cac706e 100755 (executable)
@@ -843,6 +843,9 @@ build_lustre() {
     mv -f lustre-*.src.rpm $TOPDIR/SRPMS/
 
     popd >/dev/null
+       if type -p cleanup_rpmmacros; then
+               cleanup_rpmmacros
+       fi
 
     return 0
 }
index e7c1766..d831430 100644 (file)
@@ -104,3 +104,7 @@ kernel_srpm_location() {
     echo "http://vault.centos.org/centos/7/updates/Source/SPackages/"
 
 }
+
+cleanup_rpmmacros() {
+       sed -i "/^%kernel_module_package/,/^)}$/d" $RMAC
+}
index 6a9bebd..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() {
 
@@ -115,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() {
@@ -133,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
+}