From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49413) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SP9VA-0001ek-7k for qemu-devel@nongnu.org; Tue, 01 May 2012 05:36:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SP9V8-00034p-8p for qemu-devel@nongnu.org; Tue, 01 May 2012 05:36:07 -0400 Received: from e06smtp14.uk.ibm.com ([195.75.94.110]:50000) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SP9V7-00033g-VA for qemu-devel@nongnu.org; Tue, 01 May 2012 05:36:06 -0400 Received: from /spool/local by e06smtp14.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 1 May 2012 10:36:02 +0100 Received: from d06av05.portsmouth.uk.ibm.com (d06av05.portsmouth.uk.ibm.com [9.149.37.229]) by d06nrmr1407.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q419Zwgq2461892 for ; Tue, 1 May 2012 10:35:59 +0100 Received: from d06av05.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av05.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q419ZwsV025043 for ; Tue, 1 May 2012 03:35:58 -0600 From: Stefan Hajnoczi Date: Tue, 1 May 2012 10:35:53 +0100 Message-Id: <1335864955-30495-2-git-send-email-stefanha@linux.vnet.ibm.com> In-Reply-To: <1335864955-30495-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1335864955-30495-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 1/3] configure: Fix creation of symbolic links for MinGW toolchain List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Stefan Weil , qemu-devel@nongnu.org, Stefan Hajnoczi From: Stefan Weil The MinGW toolchain on w32/w64 hosts does not create symbolic links, but implements 'ln -s' similar to 'cp -r'. In incremental out of tree builds, this resulted in files which were not updated when their counterparts in the QEMU source tree changed. Especially for Makefile* this happened very often. With this patch, the 'symlinked' files are now always updated for out of tree builds. Similar code was already used for the symbolic link of libcacard/Makefile. The symlink macro always removes the target before it is created again, therefore the rm command for libcacard/Makefile was redundant and is removed now. Macro symlink is also used with directories. To remove them on w32 hosts, a recursive rm is needed. v2: Quote arguments in shell function symlink, and also quote any argument which is passed to symlink and which contains macros. This should reduce the chance of accidents caused by rm -rf. Signed-off-by: Stefan Weil Signed-off-by: Stefan Hajnoczi --- configure | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/configure b/configure index 25697bb..9d21302 100755 --- a/configure +++ b/configure @@ -41,8 +41,8 @@ compile_prog() { # symbolically link $1 to $2. Portable version of "ln -sf". symlink() { - rm -f $2 - ln -s $1 $2 + rm -rf "$2" + ln -s "$1" "$2" } # check whether a command is available to this shell (may be either an @@ -3435,7 +3435,7 @@ fi for d in libdis libdis-user; do mkdir -p $d - symlink $source_path/Makefile.dis $d/Makefile + symlink "$source_path/Makefile.dis" "$d/Makefile" echo > $d/config.mak done @@ -3444,13 +3444,13 @@ if test "$linux" = "yes" ; then mkdir -p linux-headers case "$cpu" in i386|x86_64) - symlink $source_path/linux-headers/asm-x86 linux-headers/asm + symlink "$source_path/linux-headers/asm-x86" linux-headers/asm ;; ppcemb|ppc|ppc64) - symlink $source_path/linux-headers/asm-powerpc linux-headers/asm + symlink "$source_path/linux-headers/asm-powerpc" linux-headers/asm ;; s390x) - symlink $source_path/linux-headers/asm-s390 linux-headers/asm + symlink "$source_path/linux-headers/asm-s390" linux-headers/asm ;; esac fi @@ -3515,7 +3515,7 @@ mkdir -p $target_dir/kvm if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then mkdir -p $target_dir/nwfpe fi -symlink $source_path/Makefile.target $target_dir/Makefile +symlink "$source_path/Makefile.target" "$target_dir/Makefile" echo "# Automatically generated by configure - do not modify" > $config_target_mak @@ -3958,7 +3958,7 @@ do done mkdir -p $DIRS for f in $FILES ; do - if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then + if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then symlink "$source_path/$f" "$f" fi done @@ -3981,7 +3981,7 @@ for hwlib in 32 64; do mkdir -p $d mkdir -p $d/ide mkdir -p $d/usb - symlink $source_path/Makefile.hw $d/Makefile + symlink "$source_path/Makefile.hw" "$d/Makefile" mkdir -p $d/9pfs echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak done @@ -3989,7 +3989,6 @@ done if [ "$source_path" != `pwd` ]; then # out of tree build mkdir -p libcacard - rm -f libcacard/Makefile symlink "$source_path/libcacard/Makefile" libcacard/Makefile fi @@ -3997,7 +3996,7 @@ d=libuser mkdir -p $d mkdir -p $d/trace mkdir -p $d/qom -symlink $source_path/Makefile.user $d/Makefile +symlink "$source_path/Makefile.user" "$d/Makefile" if test "$docs" = "yes" ; then mkdir -p QMP -- 1.7.10