From: Stefan Weil <sw@weilnetz.de>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: qemu-trivial <qemu-trivial@nongnu.org>,
Peter Maydell <peter.maydell@linaro.org>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-trivial] [PATCH v2] configure: Fix creation of symbolic links for MinGW toolchain
Date: Tue, 24 Apr 2012 22:55:44 +0200 [thread overview]
Message-ID: <4F971350.8060107@weilnetz.de> (raw)
In-Reply-To: <1332159647-9456-1-git-send-email-sw@weilnetz.de>
Am 19.03.2012 13:20, schrieb 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<sw@weilnetz.de>
> ---
> configure | 21 ++++++++++-----------
> 1 files changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/configure b/configure
> index afe7395..53a8174 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
> @@ -3373,7 +3373,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
>
> @@ -3382,13 +3382,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
> @@ -3453,7 +3453,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
> @@ -3883,7 +3883,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
> @@ -3906,7 +3906,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
> @@ -3914,7 +3914,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
>
> @@ -3922,7 +3921,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
>
Should I send a pull request for this patch, or can it be applied
through qemu-devel?
Regards,
Stefan W.
next prev parent reply other threads:[~2012-04-24 20:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-17 15:31 [Qemu-trivial] [PATCH] configure: Fix creation of symbolic links for MinGW toolchain Stefan Weil
2012-03-17 15:31 ` [Qemu-devel] " Stefan Weil
2012-03-17 15:49 ` [Qemu-trivial] " Peter Maydell
2012-03-17 15:49 ` Peter Maydell
2012-03-17 15:59 ` [Qemu-trivial] " Stefan Weil
2012-03-17 15:59 ` Stefan Weil
2012-03-17 17:24 ` [Qemu-trivial] " Peter Maydell
2012-03-17 17:24 ` Peter Maydell
2012-03-19 11:30 ` [Qemu-trivial] " Stefan Hajnoczi
2012-03-19 11:30 ` [Qemu-devel] [Qemu-trivial] " Stefan Hajnoczi
2012-03-19 12:20 ` [Qemu-trivial] [PATCH v2] " Stefan Weil
2012-03-19 12:20 ` [Qemu-devel] " Stefan Weil
2012-04-24 20:55 ` Stefan Weil [this message]
2012-04-25 8:39 ` [Qemu-trivial] " 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=4F971350.8060107@weilnetz.de \
--to=sw@weilnetz.de \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=stefanha@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.