~ubuntu-branches/ubuntu/utopic/xen/utopic

« back to all changes in this revision

Viewing changes to tools/debugger/gdb/gdb-6.2.1-xen-sparse/mkbuildtree

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2010-05-06 15:47:38 UTC
  • mto: (1.3.1) (15.1.1 sid) (4.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100506154738-agoz0rlafrh1fnq7
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
 
 
3
# mkbuildtree <build tree>
 
4
#
 
5
# Creates symbolic links in <build tree> for the sparse tree
 
6
# in the current directory.
 
7
 
 
8
# Script to determine the relative path between two directories.
 
9
# Copyright (c) D. J. Hawkey Jr. 2002
 
10
# Fixed for Xen project by K. Fraser in 2003.  
 
11
abs_to_rel ()
 
12
{
 
13
        local CWD SRCPATH
 
14
                
 
15
        if [ "$1" != "/" -a "${1##*[^/]}" = "/" ]; then
 
16
                SRCPATH=${1%?}
 
17
        else
 
18
                SRCPATH=$1
 
19
        fi
 
20
        if [ "$2" != "/" -a "${2##*[^/]}" = "/" ]; then
 
21
                DESTPATH=${2%?}
 
22
        else
 
23
                DESTPATH=$2
 
24
        fi
 
25
 
 
26
        CWD=$PWD
 
27
        [ "${1%%[^/]*}" != "/" ] && cd $1 && SRCPATH=$PWD
 
28
        [ "${2%%[^/]*}" != "/" ] && cd $2 && DESTPATH=$PWD
 
29
        [ "$CWD" != "$PWD" ] && cd $CWD
 
30
 
 
31
        BASEPATH=$SRCPATH
 
32
 
 
33
        [ "$SRCPATH" = "$DESTPATH" ] && DESTPATH="." && return
 
34
        [ "$SRCPATH" = "/" ] && DESTPATH=${DESTPATH#?} && return
 
35
 
 
36
        while [ "$BASEPATH/" != "${DESTPATH%${DESTPATH#$BASEPATH/}}" ]; do
 
37
          BASEPATH=${BASEPATH%/*}
 
38
        done
 
39
 
 
40
        SRCPATH=${SRCPATH#$BASEPATH}
 
41
        DESTPATH=${DESTPATH#$BASEPATH}
 
42
        DESTPATH=${DESTPATH#?}
 
43
        while [ -n "$SRCPATH" ]; do
 
44
                SRCPATH=${SRCPATH%/*}
 
45
                DESTPATH="../$DESTPATH"
 
46
        done
 
47
 
 
48
        [ -z "$BASEPATH" ] && BASEPATH="/"
 
49
        [ "${DESTPATH##*[^/]}" = "/" ] && DESTPATH=${DESTPATH%?}
 
50
}
 
51
 
 
52
# relative_lndir <target_dir>
 
53
# Creates a tree of symlinks in the current working directory that mirror
 
54
# real files in <target_dir>. <target_dir> should be relative to the current
 
55
# working directory. Symlinks in <target_dir> are ignored. Source-control files
 
56
# are ignored.
 
57
relative_lndir ()
 
58
{
 
59
  local SYMLINK_DIR REAL_DIR pref i j
 
60
  SYMLINK_DIR=$PWD
 
61
  REAL_DIR=$1
 
62
  (
 
63
  cd $REAL_DIR
 
64
  for i in `find . -type d | grep -v SCCS`; do
 
65
    [ -d $SYMLINK_DIR/$i ] || mkdir -p $SYMLINK_DIR/$i
 
66
    (
 
67
    cd $i
 
68
    pref=`echo $i | sed -e 's#/[^/]*#../#g' -e 's#^\.##'`
 
69
    for j in `find . -type f -o -type l -maxdepth 1`; do
 
70
      ln -sf ${pref}${REAL_DIR}/$i/$j ${SYMLINK_DIR}/$i/$j
 
71
    done
 
72
    )
 
73
  done
 
74
  )
 
75
}
 
76
 
 
77
[ "$1" == "" ] && { echo "Syntax: $0 <linux tree to xenify>"; exit 1; }
 
78
 
 
79
# Get absolute path to the destination directory
 
80
pushd . >/dev/null
 
81
cd ${1}
 
82
AD=$PWD
 
83
popd >/dev/null
 
84
  
 
85
# Get absolute path to the source directory
 
86
AS=`pwd`
 
87
 
 
88
# Get name of sparse directory
 
89
SDN=$(basename $AS)
 
90
 
 
91
# Get path to source, relative to destination
 
92
abs_to_rel ${AD} ${AS}
 
93
RS=$DESTPATH
 
94
 
 
95
# We now work from the destination directory
 
96
cd ${AD}
 
97
 
 
98
# Remove old symlinks
 
99
find sys -type l | while read f
 
100
do
 
101
  case $(readlink $f) in
 
102
  */$SDN/*)
 
103
    rm -f $f
 
104
    ;;
 
105
  esac
 
106
done
 
107
 
 
108
if [ -f ${AD}/BUILDING ]; then
 
109
  # Create symlinks of files and directories which exist in the sparse source
 
110
  (cd sys && relative_lndir ../${RS}/sys)
 
111
else
 
112
  # Create symlinks of files and directories which exist in the sparse source
 
113
  relative_lndir ${RS}
 
114
  rm -f mkbuildtree
 
115
fi