Darren Hart wrote on 2011-08-04: > On 08/04/2011 12:37 AM, Cui, Dexuan wrote: > Please remember to include a description of the problem and the > approach taken to fix it. This eliminates wasted time trying to > decipher it later or by people unfamiliar with the history. This is important > even for simple changes. > In this case something like: > > " The previous fix for a bug in Ubuntu 10.04 readlink, $COMMIT_ID, > notified the user when a trailing slash was used. As there is no > semantic difference, simply remove any trailing slashes and proceed > without nagging the user. " Thanks! I'll use the description.
>> diff --git a/scripts/oe-buildenv-internal >> b/scripts/oe-buildenv-internal index 117b0c5..4a44174 100755 >> --- a/scripts/oe-buildenv-internal >> +++ b/scripts/oe-buildenv-internal >> @@ -28,14 +28,16 @@ if [ "x$BDIR" = "x" ]; then >> if [ "x$1" = "x" ]; then >> BDIR="build" >> else >> - BDIR=`readlink -f "$1"` - if [ -z "$BDIR" ]; then - >> if expr "$1" : '.*/$' >/dev/null; then - echo >> >&2 "Error: please remove any trailing / in the argument." - >> else - PARENTDIR=`dirname "$1"` - echo >> >&2 "Error: the directory $PARENTDIR doesn't exist?" - fi + >> BDIR="$1" + if [ "$BDIR" = "/" ]; then + echo >> >&2 "Error: / is not supported as a build directory." + >> return 1 + fi + BDIR=`echo $BDIR | sed -re 's|/+$||'` + >> BDIR=`readlink -f "$BDIR"` + if [ -z "$BDIR" ]; then + >> PARENTDIR=`dirname "$1"` + echo >&2 "Error: the >> directory $PARENTDIR doesn't exist?" > > This shouldn't be a question. If the documented behavior of readlink > is to return empty when the path doesn't exist, then assume this to be the > case. The latest manual of readlink says readlink should ignore trailing slash. > Also, it is a good idea to avoid contractions in printed error messages. > > echo >&2 "Error: the directory $PARENTDIR does not exist." Ok, I'll change "doesn't" to "does not". > Otherwise, this looks good to me. Please review the new patch (I paste it at the end of the mail, too) http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=dcui/bug-671&id=593e3506f4d4d9f6030100eac8c8e0af7f8ce3eb Thanks! -- Dexuan commit 593e3506f4d4d9f6030100eac8c8e0af7f8ce3eb Author: Dexuan Cui <dexuan....@intel.com> Date: Thu Aug 4 14:53:20 2011 +0800 scripts/oe-buildenv-internal: improve the error detecting for $BDIR Thanks a lot to Darren Hart and Paul Eggleton's suggestions! A description of this improvement from Darren is: " The previous fix for a bug in Ubuntu 10.04 readlink, be2a2764d8ceb398d81714661e6f199c8b11946c, notified the user when a trailing slash was used. As there is no semantic difference, simply remove any trailing slashes and proceed without nagging the user. " Signed-off-by: Dexuan Cui <dexuan....@intel.com> diff --git a/scripts/oe-buildenv-internal b/scripts/oe-buildenv-internal index 117b0c5..9988c9f 100755 --- a/scripts/oe-buildenv-internal +++ b/scripts/oe-buildenv-internal @@ -28,14 +28,22 @@ if [ "x$BDIR" = "x" ]; then if [ "x$1" = "x" ]; then BDIR="build" else - BDIR=`readlink -f "$1"` - if [ -z "$BDIR" ]; then - if expr "$1" : '.*/$' >/dev/null; then - echo >&2 "Error: please remove any trailing / in the argument." - else - PARENTDIR=`dirname "$1"` - echo >&2 "Error: the directory $PARENTDIR doesn't exist?" - fi + BDIR="$1" + if [ "$BDIR" = "/" ]; then + echo >&2 "Error: / is not supported as a build directory." + return 1 + fi + + # Remove possible trailing slash. This is used to work around + # buggy readlink of Ubuntu 10.04 that doesn't ignore trailing slash + # and hence "readlink -f new_dir_to_be_created/" returns empty. + # See YOCTO #671 for details. + BDIR=`echo $BDIR | sed -re 's|/+$||'` + + BDIR=`readlink -f "$BDIR"` + if [ -z "$BDIR" ]; then + PARENTDIR=`dirname "$1"` + echo >&2 "Error: the directory $PARENTDIR does not exist?" return 1 fi fi _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core