[dpdk-dev] scripts: fix relpath.sh output when build dir is a symlink

Message ID 1430816409-6773-1-git-send-email-olivier.matz@6wind.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Olivier Matz May 5, 2015, 9 a.m. UTC
  The script relpath.sh return the relative path of the first directory
from the second directory. It is used to generate relative symlinks,
which can be useful if the build directory is embedded in the dpdk
directory: the whole dpdk can be moved without breaking the links,
which is helpful for an installation.

In case the build directory is a symlink, the script was not generating
the proper relative path. Fix this by calling "readlink -f" on the
arguments.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 scripts/relpath.sh | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
  

Comments

Olivier Matz May 5, 2015, 9 a.m. UTC | #1
Hi Simon,

On 05/05/2015 11:00 AM, Olivier Matz wrote:
> The script relpath.sh return the relative path of the first directory
> from the second directory. It is used to generate relative symlinks,
> which can be useful if the build directory is embedded in the dpdk
> directory: the whole dpdk can be moved without breaking the links,
> which is helpful for an installation.
>
> In case the build directory is a symlink, the script was not generating
> the proper relative path. Fix this by calling "readlink -f" on the
> arguments.
>
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>

Can you have a try with this patch?

Regards,
Olivier
  
Simon Kagstrom May 5, 2015, 9:14 a.m. UTC | #2
On 2015-05-05 11:00, Olivier MATZ wrote:
> On 05/05/2015 11:00 AM, Olivier Matz wrote:
>> The script relpath.sh return the relative path of the first directory
>> from the second directory. It is used to generate relative symlinks,
>> which can be useful if the build directory is embedded in the dpdk
>> directory: the whole dpdk can be moved without breaking the links,
>> which is helpful for an installation.
>>
>> In case the build directory is a symlink, the script was not generating
>> the proper relative path. Fix this by calling "readlink -f" on the
>> arguments.
> 
> Can you have a try with this patch?

Yes, this fixes my build issue, thanks!

Verified-by: Simon Kagstrom <simon.kagstrom@netinsight.net>

// Simon
  
Thomas Monjalon May 12, 2015, 12:26 p.m. UTC | #3
2015-05-05 11:14, Simon Kågström:
> On 2015-05-05 11:00, Olivier MATZ wrote:
> > On 05/05/2015 11:00 AM, Olivier Matz wrote:
> >> The script relpath.sh return the relative path of the first directory
> >> from the second directory. It is used to generate relative symlinks,
> >> which can be useful if the build directory is embedded in the dpdk
> >> directory: the whole dpdk can be moved without breaking the links,
> >> which is helpful for an installation.
> >>
> >> In case the build directory is a symlink, the script was not generating
> >> the proper relative path. Fix this by calling "readlink -f" on the
> >> arguments.
> > 
> > Can you have a try with this patch?
> 
> Yes, this fixes my build issue, thanks!
> 
> Verified-by: Simon Kagstrom <simon.kagstrom@netinsight.net>

Applied, thanks
  

Patch

diff --git a/scripts/relpath.sh b/scripts/relpath.sh
index 00030e5..7d2f48f 100755
--- a/scripts/relpath.sh
+++ b/scripts/relpath.sh
@@ -43,8 +43,13 @@  if [ $# -ne 2 ]; then
 	exit 1
 fi
 
-REL1=${1#/}
-REL2=${2#/}
+# get the real absolute path, derefencing symlinks
+ABS1=$(readlink -f $1)
+ABS2=$(readlink -f $2)
+
+# remove leading slash
+REL1=${ABS1#/}
+REL2=${ABS2#/}
 
 left1=${REL1%%/*}
 right1=${REL1#*/}