I'm not sure this is the best way to implement this .... Adding the vendor_pre_ function as the first line of install()/uninstall()
and the vendor_post function as the last line of install()/uninstall() Will ensure that it will be performed o.k. (not forgotten) on all the locations were the install / uninstall functions are called. Moshe ____________________________________________________________ Moshe Katzir | +972-9971-8639 (o) | +972-52-860-6042 (m) Voltaire - The Grid Backbone www.voltaire.com -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Moni Shoua Sent: Tuesday, January 01, 2008 12:18 PM To: Vladimir Sokolovsky Cc: Moni Levy; ewg Subject: [ewg] [PATCH] ofed_1_3/ofed_scripts: Add vendor script pre/post hooks for OFED install/uninstall Vendors that distribute OFED sometimes need to add vendor specific actions to the install and/or the uninstall process. This patch adds this capability of adding scripts that would be executed before and after OFED install and uninstall. Names of the scripts are given in the configuration file for the install.pl script. Examlpe (lines in ofed.conf) vendor_pre_install=vendor_pre_install.sh vendor_post_install=vendor_post_install.sh vendor_pre_uninstall=vendor_pre_uninstall.sh vendor_post_uninstall=vendor_post_uninstall.sh Signed-off-by: Moni Shoua <[EMAIL PROTECTED]> --- install.pl | 75 +++++++++++++++++++++++++++++++++++++++++++++++ ofed-scripts.spec | 4 ++ uninstall.sh | 4 ++ vendor_post_uninstall.sh | 3 + vendor_pre_uninstall.sh | 3 + 5 files changed, 89 insertions(+) diff --git a/install.pl b/install.pl index dbf57ce..915530e 100755 --- a/install.pl +++ b/install.pl @@ -59,6 +59,11 @@ my $print_available = 0; my $clear_string = `clear`; my $upgrade_open_iscsi = 0; +my $vendor_pre_install = ""; +my $vendor_post_install = ""; +my $vendor_pre_uninstall = ""; +my $vendor_post_uninstall = ""; + my $distro; my $build32 = 0; @@ -2044,6 +2049,50 @@ sub select_packages next; } + if ($package eq "vendor_pre_install") { + if ( -f $selected ) { + $vendor_pre_install = dirname($selected) . '/' . basename($selected); + } + else { + print RED "\nVendor script $selected is not found", RESET "\n" if (not $quiet); + exit 1 + } + next; + } + + if ($package eq "vendor_post_install") { + if ( -f $selected ) { + $vendor_post_install = dirname($selected) . '/' . basename($selected); + } + else { + print RED "\nVendor script $selected is not found", RESET "\n" if (not $quiet); + exit 1 + } + next; + } + + if ($package eq "vendor_pre_uninstall") { + if ( -f $selected ) { + $vendor_pre_uninstall = dirname($selected) . '/' . basename($selected); + } + else { + print RED "\nVendor script $selected is not found", RESET "\n" if (not $quiet); + exit 1 + } + next; + } + + if ($package eq "vendor_post_uninstall") { + if ( -f $selected ) { + $vendor_post_uninstall = dirname($selected) . '/' . basename($selected); + } + else { + print RED "\nVendor script $selected is not found", RESET "\n" if (not $quiet); + exit 1 + } + next; + } + if ($package eq "kernel_configure_options" or $package eq "OFA_KERNEL_PARAMS") { $kernel_configure_options = $selected; next; @@ -3696,7 +3745,33 @@ sub main # Uninstall the previous installations uninstall(); + my $vendor_ret; + if (length($vendor_pre_install) > 0) { + print BLUE "\nRunning vendor pre install script: $vendor_pre_install", RESET "\n" if (not $quiet); + $vendor_ret = system ( "$vendor_pre_install", "CONFIG=$config", + "RPMS=$RPMS", "SRPMS=$SRPMS", "PREFIX=$prefix", "TOPDIR=$TOPDIR", "QUIET=$quiet" ); + if ($vendor_ret != 0) { + print RED "\nExecution of vendor pre install script failed.", RESET "\n" if (not $quiet); + exit 1; + } + } install(); + if (length($vendor_pre_uninstall) > 0) { + system "cp $vendor_pre_uninstall $prefix/sbin/vendor_pre_uninstall.sh"; + } + if (length($vendor_post_uninstall) > 0) { + system "cp $vendor_post_uninstall $prefix/sbin/vendor_post_uninstall.sh"; + } + if (length($vendor_post_install) > 0) { + print BLUE "\nRunning vendor post install script: $vendor_post_install", RESET "\n" if (not $quiet); + $vendor_ret = system ( "$vendor_post_install", "CONFIG=$config", + "RPMS=$RPMS", "SRPMS=$SRPMS", "PREFIX=$prefix", "TOPDIR=$TOPDIR", "QUIET=$quiet"); + if ($vendor_ret != 0) { + print RED "\nExecution of vendor post install script failed.", RESET "\n" if (not $quiet); + exit 1; + } + } + if ($kernel_modules_info{'ipoib'}{'selected'}) { ipoib_config(); } diff --git a/ofed-scripts.spec b/ofed-scripts.spec index 6c952aa..e58bf08 100644 --- a/ofed-scripts.spec +++ b/ofed-scripts.spec @@ -49,6 +49,8 @@ OpenFabrics scripts install -d $RPM_BUILD_ROOT%{_prefix}/bin install -d $RPM_BUILD_ROOT%{_prefix}/sbin install -m 0755 uninstall.sh $RPM_BUILD_ROOT%{_prefix}/sbin/ofed_uninstall.sh +install -m 0755 vendor_pre_uninstall.sh $RPM_BUILD_ROOT%{_prefix}/sbin +install -m 0755 vendor_post_uninstall.sh $RPM_BUILD_ROOT%{_prefix}/sbin install -m 0755 ofed_info $RPM_BUILD_ROOT%{_prefix}/bin perl -ni -e "s@(STACK_PREFIX=)[EMAIL PROTECTED]@; print" $RPM_BUILD_ROOT%{_prefix}/sbin/ofed_uninstall.sh @@ -115,6 +117,8 @@ esac %defattr(-,root,root) %{_prefix}/bin/ofed_info %{_prefix}/sbin/ofed_uninstall.sh +%{_prefix}/sbin/vendor_pre_uninstall.sh +%{_prefix}/sbin/vendor_post_uninstall.sh %changelog * Tue Oct 9 2007 Vladimir Sokolovsky <[EMAIL PROTECTED]> diff --git a/uninstall.sh b/uninstall.sh index a65f0e5..eb25e16 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -266,7 +266,11 @@ echo read -p "Do you want to continue?[y/N]:" ans_r if [[ "$ans_r" == "y" || "$ans_r" == "Y" || "$ans_r" == "yes" ]]; then + [ -x $STACK_PREFIX/sbin/vendor_pre_uninstall.sh ] && ex $STACK_PREFIX/sbin/vendor_pre_uninstall.sh + [ -x $STACK_PREFIX/sbin/vendor_post_uninstall.sh ] && \ + cp $STACK_PREFIX/sbin/vendor_post_uninstall.sh +/tmp/$$-ofed_vendor_post_uninstall.sh uninstall + [ -x /tmp/$$-ofed_vendor_post_uninstall.sh ] && ex + /tmp/$$-ofed_vendor_post_uninstall.sh else exit 1 fi diff --git a/vendor_post_uninstall.sh b/vendor_post_uninstall.sh new file mode 100755 index 0000000..8c3cbfc --- /dev/null +++ b/vendor_post_uninstall.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exit 0 diff --git a/vendor_pre_uninstall.sh b/vendor_pre_uninstall.sh new file mode 100644 index 0000000..8c3cbfc --- /dev/null +++ b/vendor_pre_uninstall.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exit 0 _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
