Print this page
Kayak uses sudo with variable set (and sudoers set)
        
@@ -26,10 +26,20 @@
 #
 
 # We have to build as root to manipulate ZFS datasets
 export ROOT_OK=yes
 
+if [[ "$UID" != 0 && ! -z $KAYAK_SUDO_BUILD ]]; then
+       # Run sudo BEFORE functions.sh eats the parameters.
+       # Installing OmniOS-on-demand should create an entry in /etc/sudoers.d/
+       # to cover running this script under sudo.
+       echo "Running again under sudo, currently UID = $UID, EUID = $EUID."
+       export OLDUSER=`whoami`
+       export KAYAK_SUDO_BUILD
+       exec sudo -n ./build.sh $@
+fi
+
 # Load support functions
 . ../../lib/functions.sh
 
 if [[ "$UID" != "0" ]]; then
     logerr "--- This script needs to be run as root."
@@ -101,10 +111,16 @@
 prep_build
 logmsg "Now building $PKG"
 build_server
 make_package kayak.mog
 clean_up
+# Do extra cleaning up if we got run under sudo from ourselves.
+if [[ -z `echo $RPATH | grep http://` ]]; then
+       OLDUSER=`ls -ltd $RPATH | awk '{print $3}'`
+       logmsg "--- Re-chowning $RPATH to user $OLDUSER"
+       chown -R $OLDUSER $RPATH
+fi
 
 PKG=system/install/kayak-kernel
 SUMMARY="Kayak - network installer (kernel, miniroot and pxegrub)"
 PKGE=$(url_encode $PKG)
 PKGD=${PKGE//%/_}
@@ -113,8 +129,14 @@
 
 logmsg "Now building $PKG"
 build_miniroot
 make_package
 clean_up
+# Do extra cleaning up if we got run under sudo from ourselves.
+if [[ -z `echo $RPATH | grep http://` ]]; then
+       OLDUSER=`ls -ltd $RPATH | awk '{print $3}'`
+       logmsg "--- Re-chowning $RPATH to user $OLDUSER"
+       chown -R $OLDUSER $RPATH
+fi
 
 # Vim hints
 # vim:ts=4:sw=4:et: