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

[Xen-changelog] [xen-unstable] stubdom/ioemu link farm creation fixes



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1221565466 -3600
# Node ID f03b0cc33576e4fe3ff6adfd0853addf676c105e
# Parent  087b8b29b6b20165062697305c6651ca2acb7b5b
stubdom/ioemu link farm creation fixes

Replace the stubdom/ioemu link farm creation in stubdom/Makefile,
with code which arranges that:
 * No symlinks are made for output files - in particular, any
   symlinks for .d files would be written through by the compiler
   and cause damage to the original tree and other strange
   behaviours
 * All subdirectories are made as local subdirectories rather than
   links
 * Any interrupted or half-completed creation of the link farm
   leaves the directory in a state where the link farming will be
   restarted
 * We use make's inherent ability to test for the existence of files
   rather than using [ -f ... ] at the start of the rule's commands
 * The list of files to be excluded from the link farm can be
   easily updated
etc.

This should fix some problems particularly with parallel builds,
or by-hand builds where directories are entered in other than the
usual order.

Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 stubdom/Makefile |   37 ++++++++++++++++++++-----------------
 1 files changed, 20 insertions(+), 17 deletions(-)

diff -r 087b8b29b6b2 -r f03b0cc33576 stubdom/Makefile
--- a/stubdom/Makefile  Tue Sep 16 11:26:19 2008 +0100
+++ b/stubdom/Makefile  Tue Sep 16 12:44:26 2008 +0100
@@ -165,7 +165,26 @@ lwip-$(XEN_TARGET_ARCH): lwip-$(LWIP_VER
 $(XEN_ROOT)/tools/ioemu-dir:
        make -C $(XEN_ROOT)/tools ioemu-dir-find
 
-mk-headers-$(XEN_TARGET_ARCH): $(XEN_ROOT)/tools/ioemu-dir
+ioemu/linkfarm.stamp: $(XEN_ROOT)/tools/ioemu-dir
+       mkdir -p ioemu
+ifeq ($(CONFIG_QEMU),ioemu)
+       [ -h ioemu/Makefile ] || ( cd ioemu && \
+         ln -sf ../$(XEN_ROOT)/tools/ioemu/* .)
+else
+       set -e;                                                                 
\
+       $(absolutify_xen_root);                                                 
\
+       cd ioemu;                                                               
\
+       src="$$XEN_ROOT/tools/ioemu-dir"; export src;                           
\
+       (cd $$src && find * -type d -print) | xargs mkdir -p;                   
\
+       (cd $$src && find *     ! -type l  -type f  $(addprefix ! -name ,       
\
+                       '*.[oda1]' 'config-*' config.mak qemu-dm qemu-img-xen   
\
+                       '*.html' '*.pod'                                        
\
+                       )) |                                                    
\
+           while read f; do rm -f "$$f"; ln -s "$$src/$$f" "$$f"; done
+endif
+       touch ioemu/linkfarm.stamp
+
+mk-headers-$(XEN_TARGET_ARCH): ioemu/linkfarm.stamp
        mkdir -p include/xen && \
           ln -sf $(addprefix ../../,$(wildcard 
$(XEN_ROOT)/xen/include/public/*.h)) include/xen && \
           ln -sf $(addprefix ../../$(XEN_ROOT)/xen/include/public/,arch-ia64 
arch-x86 hvm io xsm) include/xen && \
@@ -184,22 +203,6 @@ mk-headers-$(XEN_TARGET_ARCH): $(XEN_ROO
          ln -sf ../$(XEN_ROOT)/tools/libxc/$(XEN_TARGET_ARCH)/*.c . && \
          ln -sf ../$(XEN_ROOT)/tools/libxc/$(XEN_TARGET_ARCH)/*.h . && \
          ln -sf ../$(XEN_ROOT)/tools/libxc/$(XEN_TARGET_ARCH)/Makefile . )
-       mkdir -p ioemu
-ifeq ($(CONFIG_QEMU),ioemu)
-       [ -h ioemu/Makefile ] || ( cd ioemu && \
-         ln -sf ../$(XEN_ROOT)/tools/ioemu/* .)
-else
-       [ -h ioemu/Makefile ] || ( cd ioemu && \
-         ln -sf ../$(XEN_ROOT)/tools/ioemu-dir/* . && \
-          rm -fr i386-dm && \
-          rm -fr i386-stubdom && \
-          mkdir i386-dm && \
-          mkdir i386-stubdom && \
-         ln -sf $(CONFIG_QEMU)/i386-dm/* i386-dm/ && \
-         ln -sf $(CONFIG_QEMU)/i386-stubdom/* i386-stubdom/ )
-endif
-       [ ! -h ioemu/config-host.h ] || rm -f ioemu/config-host.h
-       [ ! -h ioemu/config-host.mak ] || rm -f ioemu/config-host.mak
        $(MAKE) -C $(MINI_OS) links
        touch mk-headers-$(XEN_TARGET_ARCH)
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.