#!/bin/sh # mkbuildtree # # Creates symbolic links in for the sparse tree # in the current directory. # Script to determine the relative path between two directories. # Copyright (c) D. J. Hawkey Jr. 2002 # Fixed for Xen project by K. Fraser in 2003. abs_to_rel () { local CWD SRCPATH if [ "$1" != "/" -a "${1##*[^/]}" = "/" ]; then SRCPATH=${1%?} else SRCPATH=$1 fi if [ "$2" != "/" -a "${2##*[^/]}" = "/" ]; then DESTPATH=${2%?} else DESTPATH=$2 fi CWD=$PWD [ "${1%%[^/]*}" != "/" ] && cd $1 && SRCPATH=$PWD [ "${2%%[^/]*}" != "/" ] && cd $2 && DESTPATH=$PWD [ "$CWD" != "$PWD" ] && cd $CWD BASEPATH=$SRCPATH [ "$SRCPATH" = "$DESTPATH" ] && DESTPATH="." && return [ "$SRCPATH" = "/" ] && DESTPATH=${DESTPATH#?} && return while [ "$BASEPATH/" != "${DESTPATH%${DESTPATH#$BASEPATH/}}" ]; do BASEPATH=${BASEPATH%/*} done SRCPATH=${SRCPATH#$BASEPATH} DESTPATH=${DESTPATH#$BASEPATH} DESTPATH=${DESTPATH#?} while [ -n "$SRCPATH" ]; do SRCPATH=${SRCPATH%/*} DESTPATH="../$DESTPATH" done [ -z "$BASEPATH" ] && BASEPATH="/" [ "${DESTPATH##*[^/]}" = "/" ] && DESTPATH=${DESTPATH%?} } [ "$1" == "" ] && { echo "Syntax: $0 "; exit 1; } # Get absolute path to the destination directory pushd . >/dev/null cd ${1} AD=`pwd` popd >/dev/null # Get absolute path to the source directory AS=`pwd` # Get path to source, relative to destination abs_to_rel ${AD} ${AS} RS=$DESTPATH # Remove old copies of files and directories at the destination for i in `find . -type f -o -type l` ; do rm -f ${AD}/${i#./} ; done # We now work from the destination directory cd ${AD} # Create symlinks of files and directories which exist in the sparse source ${AS}/lndir-rel -silent ${RS} rm -f mkbuildtree lndir-rel ## There are a whole bunch of special symlinks, mostly for files ## which are identical in the i386 and xeno-i386 architecture-dependent ## subdirectories. # This first symlink is special: it links to shared files in Xen's source tree rm -rf ${AD}/include/asm-xeno/hypervisor-ifs mkdir ${AD}/include/asm-xeno/hypervisor-ifs cd ${AD}/include/asm-xeno/hypervisor-ifs ${AS}/lndir-rel -silent ../../../${RS}/../xen/include/hypervisor-ifs # The remainder are the i386 -> xeno-i386 links cd .. ln -sf ../asm-i386/a.out.h ln -sf ../asm-i386/apicdef.h ln -sf ../asm-i386/apic.h ln -sf ../asm-i386/atomic.h ln -sf ../asm-i386/bitops.h ln -sf ../asm-i386/boot.h ln -sf ../asm-i386/byteorder.h ln -sf ../asm-i386/cache.h ln -sf ../asm-i386/checksum.h ln -sf ../asm-i386/cpufeature.h ln -sf ../asm-i386/current.h ln -sf ../asm-i386/debugreg.h ln -sf ../asm-i386/delay.h ln -sf ../asm-i386/div64.h ln -sf ../asm-i386/dma.h ln -sf ../asm-i386/elf.h ln -sf ../asm-i386/errno.h ln -sf ../asm-i386/fcntl.h ln -sf ../asm-i386/floppy.h ln -sf ../asm-i386/hardirq.h ln -sf ../asm-i386/hdreg.h ln -sf ../asm-i386/i387.h ln -sf ../asm-i386/ide.h ln -sf ../asm-i386/init.h ln -sf ../asm-i386/io.h ln -sf ../asm-i386/io_apic.h ln -sf ../asm-i386/ioctl.h ln -sf ../asm-i386/ioctls.h ln -sf ../asm-i386/ipcbuf.h ln -sf ../asm-i386/ipc.h ln -sf ../asm-i386/kmap_types.h ln -sf ../asm-i386/ldt.h ln -sf ../asm-i386/linux_logo.h ln -sf ../asm-i386/locks.h ln -sf ../asm-i386/math_emu.h ln -sf ../asm-i386/mc146818rtc.h ln -sf ../asm-i386/mca_dma.h ln -sf ../asm-i386/mman.h ln -sf ../asm-i386/mmu.h ln -sf ../asm-i386/mmx.h ln -sf ../asm-i386/module.h ln -sf ../asm-i386/mpspec.h ln -sf ../asm-i386/msgbuf.h ln -sf ../asm-i386/mtrr.h ln -sf ../asm-i386/namei.h ln -sf ../asm-i386/param.h ln -sf ../asm-i386/parport.h ln -sf ../asm-i386/pci.h ln -sf ../asm-i386/pgtable-3level.h ln -sf ../asm-i386/poll.h ln -sf ../asm-i386/posix_types.h ln -sf ../asm-i386/resource.h ln -sf ../asm-i386/rwlock.h ln -sf ../asm-i386/rwsem.h ln -sf ../asm-i386/scatterlist.h ln -sf ../asm-i386/semaphore.h ln -sf ../asm-i386/sembuf.h ln -sf ../asm-i386/serial.h ln -sf ../asm-i386/setup.h ln -sf ../asm-i386/shmbuf.h ln -sf ../asm-i386/shmparam.h ln -sf ../asm-i386/sigcontext.h ln -sf ../asm-i386/siginfo.h ln -sf ../asm-i386/signal.h ln -sf ../asm-i386/smplock.h ln -sf ../asm-i386/socket.h ln -sf ../asm-i386/sockios.h ln -sf ../asm-i386/softirq.h ln -sf ../asm-i386/spinlock.h ln -sf ../asm-i386/statfs.h ln -sf ../asm-i386/stat.h ln -sf ../asm-i386/string-486.h ln -sf ../asm-i386/string.h ln -sf ../asm-i386/termbits.h ln -sf ../asm-i386/termios.h ln -sf ../asm-i386/timex.h ln -sf ../asm-i386/tlb.h ln -sf ../asm-i386/types.h ln -sf ../asm-i386/uaccess.h ln -sf ../asm-i386/ucontext.h ln -sf ../asm-i386/unaligned.h ln -sf ../asm-i386/unistd.h ln -sf ../asm-i386/user.h ln -sf ../asm-i386/xor.h cd ../../arch/xeno/kernel ln -sf ../../i386/kernel/i387.c ln -sf ../../i386/kernel/init_task.c ln -sf ../../i386/kernel/ptrace.c ln -sf ../../i386/kernel/semaphore.c ln -sf ../../i386/kernel/sys_i386.c cd ../lib ln -sf ../../i386/lib/checksum.S ln -sf ../../i386/lib/dec_and_lock.c ln -sf ../../i386/lib/getuser.S ln -sf ../../i386/lib/iodebug.c ln -sf ../../i386/lib/memcpy.c ln -sf ../../i386/lib/mmx.c ln -sf ../../i386/lib/old-checksum.c ln -sf ../../i386/lib/strstr.c ln -sf ../../i386/lib/usercopy.c cd ../mm ln -sf ../../i386/mm/extable.c ln -sf ../../i386/mm/pageattr.c