Re: [Qemu-devel] [PATCH v2] configure: Fix creation of symbolic links for MinGW toolchain

2012-04-25 Thread Stefan Hajnoczi
On Mon, Mar 19, 2012 at 01:20:47PM +0100, Stefan Weil wrote:
 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 s...@weilnetz.de
 ---
  configure |   21 ++---
  1 files changed, 10 insertions(+), 11 deletions(-)

Sorry, this got lost in my inbox.  If you send patch revisions as
top-level emails then it's easier to notice them.  I probably marked it
as read and forgot about it because being part of the original email
thread made it appear like the discussion was still continuing.

Thanks, applied to the trivial patches tree:
https://github.com/stefanha/qemu/commits/trivial-patches

Stefan



Re: [Qemu-devel] [PATCH v2] configure: Fix creation of symbolic links for MinGW toolchain

2012-04-24 Thread Stefan Weil

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 Weils...@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.




[Qemu-devel] [PATCH v2] configure: Fix creation of symbolic links for MinGW toolchain

2012-03-19 Thread 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 s...@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
-- 
1.7.9