On Sat, Jan 13, 2018 at 02:36:40PM -0800, Greg Rose wrote:
> Add post install and post un-install scripts to make sure that the
> openvswitch kernel modules are correctly written with the weak-modules
> utility. This ensures that after an upgrade to a newer kernel the
> correct openvswitch kernel modules from a previous installation will
> be found by the depmod search path.

Hi Greg,

I think you're patching the wrong spec.  The RPM %post and %postun sections
are needed only when installing the kmod package and they have a separate
specs (which are rhel/*-kmod-*.spec.in.) since they generate a separate
packages.

Since you will be patching the spec generating the package and not a
sub-package, you don't need to add its name after %post or %postun.

Example:
diff --git a/rhel/openvswitch-kmod-fedora.spec.in 
b/rhel/openvswitch-kmod-fedora.spec.in
index 93adb0330..8ab82348e 100644
--- a/rhel/openvswitch-kmod-fedora.spec.in
+++ b/rhel/openvswitch-kmod-fedora.spec.in
@@ -56,8 +56,29 @@ done
 rm -rf $RPM_BUILD_ROOT
 
 %post
-# Ensure that modprobe will find our modules.
-depmod %{kernel}
+for k in $(cd /lib/modules && /bin/ls); do
+    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
+done
+if [ -x "/sbin/weak-modules" ]; then
+   for m in openvswitch vport-gre vport-stt vport-geneve \
+           vport-lisp vport-vxlan; do
+       echo "/lib/modules/%{kernel}/extra/$m.ko"
+   done | /sbin/weak-modules --add-modules
+fi
+
+
+%postun
+for k in $(cd /lib/modules && /bin/ls); do
+    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
+done
+if [ "$1" = 0 ]; then  # Erase, not upgrade
+   if [ -x "/sbin/weak-modules" ]; then
+       for m in openvswitch vport-gre vport-stt vport-geneve \
+                vport-lisp vport-vxlan; do
+       echo "/lib/modules/%{kernel}/extra/$m.ko"
+   done | /sbin/weak-modules --remove-modules
+   fi
+fi
 
 %files
 %defattr(0644,root,root)

fbl

> 
> Suggested-by: Flavio Leitner <[email protected]>
> Signed-off-by: Greg Rose <[email protected]>
> ---
>  rhel/openvswitch.spec.in | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/rhel/openvswitch.spec.in b/rhel/openvswitch.spec.in
> index e510d35..44cd611 100644
> --- a/rhel/openvswitch.spec.in
> +++ b/rhel/openvswitch.spec.in
> @@ -165,6 +165,17 @@ else
>      done
>  fi
>  
> +%post kmod-%{kverrel}
> +for k in $(cd /lib/modules && /bin/ls); do
> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
> +done
> +if [ -x "/sbin/weak-modules" ]; then
> +    for m in openvswitch vport-gre vport-stt vport-geneve \
> +             vport-lisp vport-vxlan; do
> +        echo "/lib/modules/%{kernel}/extra/$m.ko"
> +    done | /sbin/weak-modules --add-modules
> +fi
> +
>  # Ensure all required services are set to run
>  /sbin/chkconfig --add openvswitch
>  /sbin/chkconfig openvswitch on
> @@ -185,6 +196,19 @@ if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
>      rm -f /etc/openvswitch/vswitchd.cacert
>  fi
>  
> +%postun kmod-%{kverrel}
> +for k in $(cd /lib/modules && /bin/ls); do
> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
> +done
> +if [ "$1" = 0 ]; then  # Erase, not upgrade
> +    if [ -x "/sbin/weak-modules" ]; then
> +        for m in openvswitch vport-gre vport-stt vport-geneve \
> +                 vport-lisp vport-vxlan; do
> +        echo "/lib/modules/%{kernel}/extra/$m.ko"
> +    done | /sbin/weak-modules --remove-modules
> +    fi
> +fi
> +
>  %postun selinux-policy
>  if [ $1 -eq 0 ] ; then
>    /usr/sbin/semodule -r openvswitch-custom &> /dev/null || :
> -- 
> 1.8.3.1
> 
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev

-- 
Flavio

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to