All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurentiu Palcu <laurentiu.palcu@intel.com>
To: Hongxu Jia <hongxu.jia@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/1] Toolchain installation:adds sudo prompt and optins
Date: Wed, 28 Nov 2012 15:08:54 +0200	[thread overview]
Message-ID: <50B60CE6.2090208@intel.com> (raw)
In-Reply-To: <09c8bb8e48152f7887694be2aa7f69d5b135986e.1353662831.git.hongxu.jia@windriver.com>

Hi,

This patch is on a collision course with this one:

http://git.yoctoproject.org/cgit.cgi/poky/commit/?h=master-next&id=86d4b94bf29d68307cc02b235ab737136de70619

Would you please rebase on master-next and then resubmit?

Also, see my comments below.

Thanks,
Laurentiu

On 11/28/2012 02:14 PM, Hongxu Jia wrote:
> 1.Adds a sudo passwd prompt during installation if the
>   user couldn't install on the dir.
> 2.Adds option -d <dir>  to let user input dir without prompts.
> 3.Adds option -y for automatic yes to all prompts, a non-
>   interactive method.
> 
> [YOCTO# 3153]
> [YOCTO# 3309]
> 
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---
>  meta/classes/populate_sdk_base.bbclass |   70 +++++++++++++++++++++++---------
>  1 file changed, 51 insertions(+), 19 deletions(-)
> 
> diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
> index ac34c32..c817b83 100644
> --- a/meta/classes/populate_sdk_base.bbclass
> +++ b/meta/classes/populate_sdk_base.bbclass
> @@ -128,12 +128,33 @@ fi
>  
>  DEFAULT_INSTALL_DIR="${SDKPATH}"
>  COMPONENTS_LEN=$(echo ".${SDKPATH}" | sed "s/\// /g" | wc -w)
> +SUDO_EXEC=""
> +target_sdk_dir=""
> +answer=""
> +while getopts ":yd:" OPT; do
> +    case $OPT in
> +    y)  
> +        answer="Y"
> +        [ "$target_sdk_dir" = "" ] && target_sdk_dir=$DEFAULT_INSTALL_DIR
> +        ;;  
> +    d)    
> +        target_sdk_dir=$OPTARG
> +        ;;  
> +    *)  
> +        echo "Usage: $(basename $0) [-y] [-d <dir>]"
> +        echo "  -y         Automatic yes to all prompts"
> +        echo "  -d <dir>   Install the SDK to <dir>"
> +        exit 1 
> +        ;;    
> +    esac   
> +done
Please, don't use spaces for indentation. The rest of the script uses tabs.
>  
>  printf "Enter target directory for SDK (default: $DEFAULT_INSTALL_DIR): "
> -read target_sdk_dir
> -
>  if [ "$target_sdk_dir" = "" ]; then
> -	target_sdk_dir=$DEFAULT_INSTALL_DIR
> +	read target_sdk_dir
> +	[ "$target_sdk_dir" = "" ] && target_sdk_dir=$DEFAULT_INSTALL_DIR
> +else
> +	echo "$target_sdk_dir"
>  fi
>  
>  eval target_sdk_dir=$target_sdk_dir
> @@ -144,10 +165,11 @@ else
>  fi
>  
>  printf "You are about to install the SDK to \"$target_sdk_dir\". Proceed[Y/n]?"
> -read answer
> -
>  if [ "$answer" = "" ]; then
> -	answer="y"
> +	read answer
> +	[ "$answer" = "" ] && answer="y"
> +else
> +	echo $answer
>  fi
>  
>  if [ "$answer" != "Y" -a "$answer" != "y" ]; then
> @@ -155,47 +177,57 @@ if [ "$answer" != "Y" -a "$answer" != "y" ]; then
>  	exit 1
>  fi
>  
> +# create dir and don't care about the result. 
>  mkdir -p $target_sdk_dir >/dev/null 2>&1
> -if [ $? -ne 0 ]; then
> -	echo "Error: Unable to create target directory. Do you have permissions?"
> -	exit 1
> +
> +# if don't have the right to access dir, gain by sudo 
> +if [ ! -x $target_sdk_dir -o ! -w $target_sdk_dir -o ! -r $target_sdk_dir ]; then 
> +	SUDO_EXEC=$(which "sudo")
> +	if [ -z $SUDO_EXEC ]; then
> +		echo "No command 'sudo' found, please install sduo first. Abort!"
s/sduo/sudo/
> +		exit 1
> +	fi
> +
> +	# test sudo could gain root right
> +	$SUDO_EXEC pwd >/dev/null 2>&1
> +	[ $? -ne 0 ] && echo "Sorry, you are not allowed to execute as root." && exit 1
>  fi
>  
>  payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1))
>  
>  printf "Extracting SDK..."
> -tail -n +$payload_offset $0| tar xj --strip-components=$COMPONENTS_LEN -C $target_sdk_dir
> +tail -n +$payload_offset $0| $SUDO_EXEC tar xj --strip-components=$COMPONENTS_LEN -C $target_sdk_dir
>  echo "done"
>  
>  printf "Setting it up..."
>  # fix environment paths
>  for env_setup_script in `ls $target_sdk_dir/environment-setup-*`; do
> -  sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script
> +  $SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script
>  done
>  
>  # fix dynamic loader paths in all ELF SDK binaries
> -native_sysroot=$(cat $env_setup_script |grep OECORE_NATIVE_SYSROOT|cut -d'=' -f2|tr -d '"')
> -dl_path=$(find $native_sysroot/lib -name "ld-linux*")
> -executable_files=$(find $native_sysroot -type f -perm +111)
> -${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
> +native_sysroot=$($SUDO_EXEC cat $env_setup_script |grep OECORE_NATIVE_SYSROOT|cut -d'=' -f2|tr -d '"')
> +dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
> +executable_files=$($SUDO_EXEC find $native_sysroot -type f -perm +111)
> +$SUDO_EXEC ${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
>  if [ $? -ne 0 ]; then
>  	echo "SDK could not be set up. Relocate script failed. Abort!"
>  	exit 1
>  fi
>  
>  # replace ${SDKPATH} with the new prefix in all text files: configs/scripts/etc
> -find $native_sysroot -type f -exec file '{}' \;|grep ":.*ASCII.*text"|cut -d':' -f1|xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g"
> +$SUDO_EXEC find $native_sysroot -type f -exec file '{}' \;|$SUDO_EXEC grep ":.*ASCII.*text"|cut -d':' -f1|$SUDO_EXEC xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g"
>  
>  # change all symlinks pointing to ${SDKPATH}
> -for l in $(find $native_sysroot -type l); do
> -	ln -sf $(readlink $l|sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
> +for l in $($SUDO_EXEC find $native_sysroot -type l); do
> +	$SUDO_EXEC ln -sf $(readlink $l| $SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
>  done
>  
>  echo done
>  
>  # delete the relocating script, so that user is forced to re-run the installer
>  # if he/she wants another location for the sdk
> -rm ${env_setup_script%/*}/relocate_sdk.py
> +$SUDO_EXEC rm ${env_setup_script%/*}/relocate_sdk.py
>  
>  echo "SDK has been successfully set up and is ready to be used."
>  
> 



  reply	other threads:[~2012-11-28 13:23 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-28 12:14 [PATCH 0/1] Toolchain installation:adds sudo prompt and optins Hongxu Jia
2012-11-28 12:14 ` [PATCH 1/1] " Hongxu Jia
2012-11-28 13:08   ` Laurentiu Palcu [this message]
2012-11-29  1:14     ` Hongxu Jia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50B60CE6.2090208@intel.com \
    --to=laurentiu.palcu@intel.com \
    --cc=hongxu.jia@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.