From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: Stefan Weil <sw@weilnetz.de>,
qemu-devel@nongnu.org,
Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH 1/3] configure: Fix creation of symbolic links for MinGW toolchain
Date: Tue, 1 May 2012 10:35:53 +0100 [thread overview]
Message-ID: <1335864955-30495-2-git-send-email-stefanha@linux.vnet.ibm.com> (raw)
In-Reply-To: <1335864955-30495-1-git-send-email-stefanha@linux.vnet.ibm.com>
From: Stefan Weil <sw@weilnetz.de>
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 <sw@weilnetz.de>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
---
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
next prev parent reply other threads:[~2012-05-01 9:36 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-01 9:35 [Qemu-devel] [PULL 0/3] Trivial patches for 21 April to 1 May 2012 Stefan Hajnoczi
2012-05-01 9:35 ` Stefan Hajnoczi [this message]
2012-05-01 9:35 ` [Qemu-devel] [PATCH 2/3] async: Use bool for boolean struct members and remove a hole Stefan Hajnoczi
2012-05-01 9:35 ` [Qemu-devel] [PATCH 3/3] iohandler: Use bool for boolean struct member and remove holes Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1335864955-30495-2-git-send-email-stefanha@linux.vnet.ibm.com \
--to=stefanha@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=sw@weilnetz.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).