[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-trivial] [PATCH v2] configure: Fix creation of symbolic links

From: Stefan Weil
Subject: Re: [Qemu-trivial] [PATCH v2] configure: Fix creation of symbolic links for MinGW toolchain
Date: Tue, 24 Apr 2012 22:55:44 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20120317 Iceowl/1.0b1 Icedove/3.0.11

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.

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<address@hidden>
  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

@@ -3382,13 +3382,13 @@ if test "$linux" = "yes" ; then
    mkdir -p linux-headers
    case "$cpu" in
-    symlink $source_path/linux-headers/asm-x86 linux-headers/asm
+    symlink "$source_path/linux-headers/asm-x86" linux-headers/asm
-    symlink $source_path/linux-headers/asm-powerpc linux-headers/asm
+    symlink "$source_path/linux-headers/asm-powerpc" linux-headers/asm
-    symlink $source_path/linux-headers/asm-s390 linux-headers/asm
+    symlink "$source_path/linux-headers/asm-s390" linux-headers/asm
@@ -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
-symlink $source_path/Makefile.target $target_dir/Makefile
+symlink "$source_path/Makefile.target" "$target_dir/Makefile"

  echo "# Automatically generated by configure - do not modify">  
@@ -3883,7 +3883,7 @@ do
  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"
@@ -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
@@ -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

@@ -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?

Stefan W.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]