qemu-trivial.nongnu.org archive mirror
 help / color / mirror / Atom feed
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.



  reply	other threads:[~2012-04-24 20:55 UTC|newest]

Thread overview: 8+ 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:49 ` [Qemu-trivial] [Qemu-devel] " Peter Maydell
2012-03-17 15:59   ` Stefan Weil
2012-03-17 17:24     ` Peter Maydell
2012-03-19 11:30       ` Stefan Hajnoczi
2012-03-19 12:20         ` [Qemu-trivial] [PATCH v2] " Stefan Weil
2012-04-24 20:55           ` Stefan Weil [this message]
2012-04-25  8:39           ` [Qemu-trivial] [Qemu-devel] " 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 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).