[lxc-devel] [PATCH] lxc-create: use posix shell instead of bash

Stéphane Graber stgraber at ubuntu.com
Wed Nov 21 19:36:36 UTC 2012


On 11/19/2012 11:36 AM, Serge Hallyn wrote:
> Quoting Natanael Copa (ncopa at alpinelinux.org):
>> - use '[ -x /path/prog ]' instead of 'type /path/prog'
>> - avoid getopt --longoptions
>> - add \ at after && and || when those are at end of line
>> - make sure condition expands to empty string if variable is empty
>>
> 
> looks good to me, thanks.
> 
> Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>

Acked-by: Stéphane Graber <stgraber at ubuntu.com>

And pushed to staging. Thanks!

> 
>> Signed-off-by: Natanael Copa <ncopa at alpinelinux.org>
>> ---
>> I have tested it with 'lxc-create -t debian ...' with busybox as /bin/sh
>>
>>  src/lxc/lxc-create.in | 70 +++++++++++++++++++++++++++++----------------------
>>  1 file changed, 40 insertions(+), 30 deletions(-)
>>
>> diff --git a/src/lxc/lxc-create.in b/src/lxc/lxc-create.in
>> index 101e489..e8056e9 100644
>> --- a/src/lxc/lxc-create.in
>> +++ b/src/lxc/lxc-create.in
>> @@ -1,4 +1,4 @@
>> -#!/bin/bash
>> +#!/bin/sh
>>  
>>  #
>>  # lxc: linux Container library
>> @@ -54,16 +54,26 @@ help() {
>>          echo "  $(basename $0) -t ubuntu -h" >&2
>>          exit 0
>>      fi
>> -    type ${templatedir}/lxc-$lxc_template 2>/dev/null
>> -    if [ $? -eq 0 ]; then
>> +    if [ -x ${templatedir}/lxc-$lxc_template ]; then
>>          echo >&2
>>          echo "Template-specific options (TEMPLATE_OPTIONS):" >&2
>>          ${templatedir}/lxc-$lxc_template -h
>>      fi
>>  }
>>  
>> -shortoptions='hn:f:t:B:'
>> -longoptions='help,name:,config:,template:,backingstore:,fstype:,dir:,lvname:,vgname:,fssize:'
>> +usage_err() {
>> +    [ -n "$1" ] && echo "$1" >&2
>> +    usage
>> +    exit 1
>> +}
>> +
>> +optarg_check() {
>> +    local opt="$1" optarg="$2"
>> +    if [ -z "$optarg" ]; then
>> +        usage_err "option '$opt' requires an argument"
>> +    fi
>> +}
>> +
>>  lxc_path=@LXCPATH@
>>  bindir=@BINDIR@
>>  templatedir=@LXCTEMPLATEDIR@
>> @@ -73,68 +83,69 @@ fssize=500M
>>  vgname=lxc
>>  custom_rootfs=""
>>  
>> -getopt=$(getopt -o $shortoptions --longoptions  $longoptions -- "$@")
>> -if [ $? != 0 ]; then
>> -    usage
>> -    exit 1;
>> -fi
>> -
>> -eval set -- "$getopt"
>> -
>> -while true; do
>> -        case "$1" in
>> +while [ $# -gt 0 ]; do
>> +        local opt="$1"
>> +        shift
>> +        case "$opt" in
>>  	    -h|--help)
>>  		help
>>  		exit 1
>>  		;;
>>  	    -n|--name)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		lxc_name=$1
>>  		shift
>>  		;;
>>  	    -f|--config)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		lxc_config=$1
>>  		shift
>>  		;;
>>  	    -t|--template)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		lxc_template=$1
>>  		shift
>>  		;;
>>  	    -B|--backingstore)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		backingstore=$1
>>  		shift
>>  		;;
>>  	    --dir)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		custom_rootfs=$1
>>  		shift
>>  		;;
>>  	    --lvname)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		lvname=$1
>>  		shift
>>  		;;
>>  	    --vgname)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		vgname=$1
>>  		shift
>>  		;;
>>  	    --fstype)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		fstype=$1
>>  		shift
>>  		;;
>>  	    --fssize)
>> -		shift
>> +		optarg_check $opt "$1"
>>  		fssize=$1
>>  		shift
>>  		;;
>>              --)
>>  		shift
>>  		break;;
>> +	    -?)
>> +		usage_err "unknown option '$opt'"
>> +		;;
>> +	    -*)
>> +		# split opts -abc into -a -b -c
>> +		set -- $(echo "${opt#-}" | sed 's/\(.\)/ -\1/g') "$@"
>> +		;;
>>              *)
>>  		usage
>>  		exit 1
>> @@ -200,7 +211,7 @@ rootfs="$lxc_path/$lxc_name/rootfs"
>>  
>>  if [ "$backingstore" = "_unset" -o "$backingstore" = "btrfs" ]; then
>>  # if no backing store was given, then see if btrfs would work
>> -    if which btrfs >/dev/null 2>&1 &&
>> +    if which btrfs >/dev/null 2>&1 && \
>>          btrfs filesystem df "$lxc_path/" >/dev/null 2>&1; then
>>          backingstore="btrfs"
>>      else
>> @@ -246,10 +257,10 @@ elif [ "$backingstore" = "btrfs" ]; then
>>  fi
>>  
>>  cleanup() {
>> -    if [ $backingstore = "lvm" ]; then
>> +    if [ "$backingstore" = "lvm" ]; then
>>          umount $rootfs
>>          lvremove -f $rootdev
>> -    elif [ $backingstore = "btrfs" ]; then
>> +    elif [ "$backingstore" = "btrfs" ]; then
>>          btrfs subvolume delete "$rootfs"
>>      fi
>>      ${bindir}/lxc-destroy -n $lxc_name
>> @@ -299,8 +310,7 @@ if [ ! -z $lxc_template ]; then
>>          template_path=${templatedir}/lxc-$lxc_template
>>      fi
>>  
>> -    type $template_path 2>/dev/null
>> -    if [ $? -ne 0 ]; then
>> +    if ! [ -x "$template_path" ]; then
>>          echo "$(basename $0): unknown template '$lxc_template'" >&2
>>          cleanup
>>      fi
>> @@ -314,7 +324,7 @@ if [ ! -z $lxc_template ]; then
>>      echo "'$lxc_template' template installed"
>>  fi
>>  
>> -if [ $backingstore = "lvm" ]; then
>> +if [ "$backingstore" = "lvm" ]; then
>>      echo "Unmounting LVM"
>>      umount $rootfs
>>  
>> -- 
>> 1.8.0
>>
>>
>> ------------------------------------------------------------------------------
>> Monitor your physical, virtual and cloud infrastructure from a single
>> web console. Get in-depth insight into apps, servers, databases, vmware,
>> SAP, cloud infrastructure, etc. Download 30-day Free Trial.
>> Pricing starts from $795 for 25 servers or applications!
>> http://p.sf.net/sfu/zoho_dev2dev_nov
>> _______________________________________________
>> Lxc-devel mailing list
>> Lxc-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/lxc-devel
> 
> ------------------------------------------------------------------------------
> Monitor your physical, virtual and cloud infrastructure from a single
> web console. Get in-depth insight into apps, servers, databases, vmware,
> SAP, cloud infrastructure, etc. Download 30-day Free Trial.
> Pricing starts from $795 for 25 servers or applications!
> http://p.sf.net/sfu/zoho_dev2dev_nov
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
> 


-- 
Stéphane Graber



-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 899 bytes
Desc: OpenPGP digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20121121/f670c1bf/attachment.pgp>


More information about the lxc-devel mailing list