[OE-core] [PATCH 1/1] oe-init-build-env, scripts/oe-buildenv-internal: add error detecting for $BDIR
Cui, Dexuan
dexuan.cui at intel.com
Thu Aug 4 14:49:05 UTC 2011
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.cui at 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.cui at 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
More information about the Openembedded-core
mailing list