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

[Xen-devel] Re: [PATCH]: Various build clean-ups



Various build clean-ups

This is a fairly chunky patch to clean up the build a bit.  
Please let me know if you would like any portions ommited, or broken out.

Also, I am left with two questions
1. Should buildconfigs/{mk.linux-2.6-xen0,mk.linux-2.6-xenU} be removed?
2. Should the NETBSD portions (of buildconfigs/Rules.mk) be removed?

Changes
-------

Python
* Make sure that DESTDIR is set, otherwise, if
  XEN_PYTHON_NATIVE_INSTALL then python installs go into a relative
  directory, rather then under the default prefix (usually /usr)
  This is done by setting it if unset in Config.mk

.PHONY
* Move .PHONY directives next to targets, this makes them a lot easier
  to miss
* Add missing .PHONY directives

Dependency installation targets
* Expand out install-iptables and install-logging into
  build-, install-, dist-, clean- and distclean-
  to make them consistent with other targets
* Call distclean-iptables and distclean-logging from distclean,
  so distclean really cleans the tree, even if the logging or
  iptables targets have been used

Iptables
* Upgrade iptables from 1.2.11 to 1.3.5, as the
  former does not seem to compile with linux-2.6.16
* Update iptables download URL from http://www.netfilter.org/files to
  http://www.netfilter.org/projects/iptables/files/
* Make iptables targets depend on prep-kernels, 
  as the kernel needs to be there for some components of iptables
  It will still build without the kernel, however, the build
  will differ depending on if prep-kernels had previously been
  called or not
* Update domU kernel dir from linux-$(LINUX_VER)-xenU to linux-$(LINUX_VER)-xen

Documentation
* Tidy up output of make help
* Document the use of the XEN_PYTHON_NATIVE_INSTALL environment variable

Kernels
* Don't delete non-existent %.tar.bz2 in buildconfigs/Rules.mk's %-mrproper
* Add a mrpropper target to buildconfigs/mk.linux-2.6-xen, and
  have this delete the local patch and tarball
* Make distclean depend on kclean, rather than calling clean target by hand
* Stop kclean from erroring out if the kernel directory doesn't exist
* Remove patches/*/.makedep in top level Makefile rather than in 
  buildconfigs/Rules.mk, as calling rules in the latter causes
  patches/*/.make to be created
  (Magnus)

Tar
* Use --bzip2 instead of -j with tar, as its backwards compatible

Download
* Allow LINUX_REPO, NETBSD_REPO, PYTHON_LOGGING_REPO and IPTABLES_REPO
  to specify the URL of the repository for the linux kernel,
  netbsd kernel, python logging package and iptables
  - Defaults are:
    LINUX_REPO          http://www.kernel.org/pub/linux/kernel/     
    NETBSD_REPO         http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads
    PYTHON_LOGGING_REPO http://www.red-dove.com
    IPTABLES_REPO       http://www.netfilter.org/projects/iptables/files
* Allow each of these variables to be overridden in the environment
* With the exception of LINUX_REPO, the URL should be the full
  path to the tarball.
* For LINUX_REPO it should be the path, trimmed to give a structure
  equivalent to http://www.kernel.org/pub/linux/kernel/
  - The kernel tarball will be downloaded from
    $(LINUX_REPO)/v$(KERNEL_MAJOR).$(KERNEL_MINOR)/
    e.g. http://www.kernel.org/pub/linux/kernel/v2.6
    Where KERNEL_MAJOR and KERNEL_MINOR are calculated at runtime
  - The path of the tarball can be overridden using LINUX_REPO_KERNEL_PATH 
    in the environment, in which case the tarball will be downloaded from
    $(LINUX_REPO)/v$(LINUX_REPO_KERNEL_PATH)/
  - If needed kernel patches will be downloaded from
    $(LINUX_REPO)/v$(KERNEL_MAJOR).$(KERNEL_MINOR)/snapshots
    if present, else
    $(LINUX_REPO)/v$(KERNEL_MAJOR).$(KERNEL_MINOR)/testing
    This will depend on the version of the patch
  - The path of the tarball can be overridden using LINUX_REPO_KERNEL_PATH 
  in the environment, in which case the patch will be downloaded from
    $(LINUX_REPO)/v$(LINUX_REPO_PATCH_PATH)/
  - The intention of LINUX_REPO_KERNEL_PATH and LINUX_REPO_PATCH_PATH
    is to allow for sites that don't follow the directory hierarchy of
    kernel.org, while simplifying the presumably common case where they do
* Previously KERNEL_REPO had similar properties to LINUX_REPO, but
  it was not as flexible, had a somewhat presumptuous name and could
  not be overridden in the environment. It has been removed
* Allow DOWNLOAD_PATH to set a search path for previously downloaded files
  - Use the first element of the path as the directory to save
    downloaded files
  - Default is LINUX_SRC_PATH if set in environment, else .:..
  - Note that kclean-tarball, makedistlcean-* and friends 
    intentionally only remove tarballs in the top level xen directory,
    regardless of the value of this variable. This is to allow
    more persistent storage of tarballs in a specified location,
    which cam be manually cleaned if desired.

mkbuildtree
* Don't assume mkbuiltree scripts are executable

pygryb
* clean a.out
  (Magnus)

Signed-Off-By: Horms <horms@xxxxxxxxxxxx>
Signed-Off-By: Magnus Damm <magnus@xxxxxxxxxxxxx>

 Config.mk                                      |   15 +
 Makefile                                       |  199 +++++++++++++++++++++----
 buildconfigs/Rules.mk                          |   34 ++--
 buildconfigs/mk.linux-2.6-xen                  |   18 +-
 linux-2.6-xen-sparse/drivers/xen/Makefile      |   26 +--
 linux-2.6-xen-sparse/drivers/xen/core/Makefile |   21 ++
 linux-2.6-xen-sparse/mkbuildtree               |    8 -
 tools/debugger/gdb/gdbbuild                    |    2 
 tools/misc/xen-clone                           |    2 
 tools/pygrub/Makefile                          |    2 
 10 files changed, 256 insertions(+), 71 deletions(-)

diff -r 40c23921e729 Config.mk
--- a/Config.mk Mon Mar 27 18:03:03 2006 +0100
+++ b/Config.mk Tue Mar 28 18:49:58 2006 +0900
@@ -24,6 +24,7 @@ OBJDUMP    = $(CROSS_COMPILE)objdump
 OBJDUMP    = $(CROSS_COMPILE)objdump
 
 DISTDIR     ?= $(XEN_ROOT)/dist
+DESTDIR     ?= /
 
 INSTALL      = install
 INSTALL_DIR  = $(INSTALL) -d -m0755
@@ -68,7 +69,19 @@ CFLAGS += $(foreach i, $(EXTRA_INCLUDES)
 CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i))
 
 # Choose the best mirror to download linux kernel
-KERNEL_REPO = http://www.kernel.org
+DOWNLOAD_PATH_DEFAULT := .:..
+ifdef LINUX_SRC_PATH
+DOWNLOAD_PATH  ?= $(LINUX_SRC_PATH) # Compatibility
+else
+DOWNLOAD_PATH  ?= $(DOWNLOAD_PATH_DEFAULT)
+endif
+DOWNLOAD_DIR   := $(firstword $(subst :, ,$(DOWNLOAD_PATH)))
+# LINUX_REPO_KERNEL_PATH Set in buildconfigs/Rules.mk, if not in environment
+# LINUX_REPO_PATCH_PATH  Set in buildconfigs/Rules.mk, if not in environment
+LINUX_REPO     ?= http://www.kernel.org/pub/linux/kernel/
+NETBSD_REPO    ?= http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads
+PYTHON_LOGGING_REPO ?= http://www.red-dove.com
+IPTABLES_REPO  ?= http://www.netfilter.org/projects/iptables/files
 
 # If ACM_SECURITY = y, then the access control module is compiled
 # into Xen and the policy type can be set by the boot policy file
diff -r 40c23921e729 Makefile
--- a/Makefile  Mon Mar 27 18:03:03 2006 +0100
+++ b/Makefile  Tue Mar 28 18:49:58 2006 +0900
@@ -14,6 +14,7 @@ endif
 endif
 
 # Default target must appear before any include lines
+.PHONY: all
 all: dist
 
 XEN_ROOT=$(CURDIR)
@@ -24,12 +25,10 @@ export pae=y
 export pae=y
 endif
 
-.PHONY:        all dist install xen kernels tools dev-docs docs world clean
-.PHONY:        mkpatches mrproper kbuild kdelete kclean
-
 # build and install everything into the standard system directories
 install: install-xen install-kernels install-tools install-docs
 
+.PHONY: build
 build: kernels
        $(MAKE) -C xen build
        $(MAKE) -C tools build
@@ -38,10 +37,12 @@ build: kernels
 # The test target is for unit tests that can run without an installation.  Of
 # course, many tests require a machine running Xen itself, and these are
 # handled elsewhere.
+.PHONY: test
 test:
        $(MAKE) -C tools/python test
 
 # build and install everything into local dist directory
+.PHONY: dist
 dist: DESTDIR=$(DISTDIR)/install
 dist: dist-xen dist-kernels dist-tools dist-docs
        $(INSTALL_DIR) $(DISTDIR)/check
@@ -54,79 +55,165 @@ dist-%: install-%
        @: # do nothing
 
 # Legacy dist targets
+.PHONY: xen tools kernels docs
 xen: dist-xen
 tools: dist-tools
 kernels: dist-kernels
 docs: dist-docs
 
+.PHONY: prep-kernels
 prep-kernels:
        for i in $(XKERNELS) ; do $(MAKE) $$i-prep || exit 1; done
 
+.PHONY: install-xen
 install-xen:
        $(MAKE) -C xen install
 
+.PHONY: install-tools
 install-tools:
        $(MAKE) -C tools install
 
+.PHONY: install-kernels
 install-kernels:
        for i in $(XKERNELS) ; do $(MAKE) $$i-install || exit 1; done
 
+.PHONY: install-docs
 install-docs:
        sh ./docs/check_pkgs && $(MAKE) -C docs install || true
 
+.PHONY: dev-docs
 dev-docs:
        $(MAKE) -C docs dev-docs
 
 # Build all the various kernels and modules
+.PHONY: kbuild
 kbuild: kernels
 
 # Delete the kernel build trees entirely
+.PHONY: kdelete
 kdelete:
        for i in $(XKERNELS) ; do $(MAKE) $$i-delete ; done
 
 # Clean the kernel build trees
+.PHONY: kclean
 kclean:
        for i in $(XKERNELS) ; do $(MAKE) $$i-clean ; done
 
 # Make patches from kernel sparse trees
+.PHONY: mkpatches
 mkpatches:
        for i in $(ALLSPARSETREES) ; do $(MAKE) $$i-xen.patch; done
 
 # build xen, the tools, and a domain 0 plus unprivileged linux-xen images,
 # and place them in the install directory. 'make install' should then
 # copy them to the normal system directories
+.PHONY: world
 world: 
        $(MAKE) clean
        $(MAKE) kdelete
        $(MAKE) dist
 
 # clean doesn't do a kclean
+.PHONY: clean
 clean:: 
        $(MAKE) -C xen clean
        $(MAKE) -C tools clean
        $(MAKE) -C docs clean
 
-# clean, but blow away kernel build tree plus tarballs
-distclean: clean
+# clean, but blow away kernel build tree plus tarballs in the xen source tree
+.PHONY: distclean
+distclean: clean kdelete distclean-logging distclean-iptables
        rm -rf dist patches/tmp
-       for i in $(ALLKERNELS) ; do $(MAKE) $$i-delete ; done
        for i in $(ALLSPARSETREES) ; do $(MAKE) $$i-mrproper ; done
+       rm -rf patches/*/.makedep
 
 # Linux name for GNU distclean
+.PHONY: mrproper
 mrproper: distclean
 
-install-logging: LOGGING=logging-0.4.9.2
-install-logging:
-       [ -f $(LOGGING).tar.gz ] || wget 
http://www.red-dove.com/$(LOGGING).tar.gz
-       tar -zxf $(LOGGING).tar.gz
-       cd $(LOGGING) && python setup.py install
-
-# handy target to upgrade iptables (use rpm or apt-get in preference)
-install-iptables:
-       wget http://www.netfilter.org/files/iptables-1.2.11.tar.bz2
-       tar -jxf iptables-1.2.11.tar.bz2
-       $(MAKE) -C iptables-1.2.11 PREFIX= 
KERNEL_DIR=../linux-$(LINUX_VER)-xen0 install
-
+# handy targets to upgrade loging (use rpm or apt-get in preference)
+LOGGING=logging-0.4.9.2
+
+vpath $(LOGGING).tar.gz $(DOWNLOAD_PATH)
+$(LOGGING).tar.gz:
+       wget $(IPTABLES_REPO)/$@ -O$(DOWNLOAD_DIR)/$@ \
+               || { rm -f $(DOWNLOAD_DIR)/$@; false; }
+
+# N.B: Not .PHONY
+prep-stamp-logging: 
+       [ -d $(LOGGING) ] || tar -zxf $<
+       touch $@
+
+.PHONY: prep-logging
+prep-logging: prep-stamp-logging
+
+.PHONY: build-logging
+build-logging: prep-logging
+       cd $(LOGGING) && python setup.py build
+
+.PHONY: install-logging
+install-logging: build-logging
+ifndef XEN_PYTHON_NATIVE_INSTALL
+       cd $(LOGGING) && python setup.py install --home="$(DESTDIR)/usr"
+else
+       cd $(LOGGING) && python setup.py install --root="$(DESTDIR)"
+endif
+
+.PHONY: dist-logging
+dist-logging: DESTDIR=$(DISTDIR)/install
+dist-logging: install-logging
+       @: # do nothing
+
+.PHONY: clean-logging
+clean-logging:
+       [ ! -d $(LOGGING) ] || ( cd $(LOGGING) && python setup.py clean; )
+
+.PHONY: distclean-logging
+distclean-logging: clean-logging
+       rm -f prep-stamp-logging $(LOGGING).tar.gz
+       rm -rf $(LOGGING)
+
+# handy targets to upgrade iptables (use rpm or apt-get in preference)
+IPTABLES=iptables-1.3.5
+
+vpath $(IPTABLES).tar.bz2 $(DOWNLOAD_PATH)
+$(IPTABLES).tar.bz2:
+       wget $(IPTABLES_REPO)/$@ -O$(DOWNLOAD_DIR)/$@ \
+               || { rm -f $(DOWNLOAD_DIR)/$@; false; }
+
+# N.B: Not .PHONY
+prep-stamp-iptables: $(IPTABLES).tar.bz2
+       [ -d $(IPTABLES) ] || tar --bzip2 -xf $<
+       touch $@
+
+.PHONY: prep-iptables
+prep-iptables: prep-stamp-iptables
+
+.PHONY: build-iptables
+build-iptables: prep-iptables prep-kernels
+       $(MAKE) -C $(IPTABLES) PREFIX= KERNEL_DIR=../linux-$(LINUX_VER)-xen
+
+.PHONY: install-iptables
+install-iptables: build-iptables
+       $(MAKE) -C $(IPTABLES) PREFIX= KERNEL_DIR=../linux-$(LINUX_VER)-xen \
+               install
+
+.PHONY: dist-iptables
+dist-iptables: DESTDIR=$(DISTDIR)/install
+dist-iptables: install-iptables
+       @: # do nothing
+
+.PHONY: clean-iptables
+clean-iptables:
+       [ ! -d $(IPTABLES) ] || $(MAKE) -C $(IPTABLES) PREFIX= \
+               KERNEL_DIR=../linux-$(LINUX_VER)-xen clean
+
+.PHONY: distclean-iptables
+distclean-iptables: clean-iptables
+       rm -f prep-stamp-iptables $(IPTABLES).tar.bz2
+       rm -rf $(IPTABLES)
+
+.PHONY: help
 help:
        @echo 'Installation targets:'
        @echo '  install          - build and install everything'
@@ -137,8 +224,8 @@ help:
        @echo ''
        @echo 'Building targets:'
        @echo '  dist             - build and install everything into local 
dist directory'
-       @echo '  world            - clean everything, delete guest kernel build'
-       @echo '                     trees then make dist'
+       @echo '  world            - clean everything, delete guest kernel build 
trees'
+       @echo '                     then make dist'
        @echo '  xen              - build and install Xen hypervisor'
        @echo '  tools            - build and install tools'
        @echo '  kernels          - build and install guest kernels'
@@ -147,25 +234,80 @@ help:
        @echo '  dev-docs         - build developer-only documentation'
        @echo ''
        @echo 'Cleaning targets:'
-       @echo '  clean            - clean the Xen, tools and docs (but not'
-       @echo '                     guest kernel) trees'
-       @echo '  distclean        - clean plus delete kernel tarballs and 
kernel'
-       @echo '                     build trees'
+       @echo '  clean            - clean the Xen, tools and docs (but not 
guest kernel trees)'
+       @echo '  distclean        - clean plus delete kernel build trees and'
+       @echo '                     local downloaded files'
        @echo '  kdelete          - delete guest kernel build trees'
        @echo '  kclean           - clean guest kernel build trees'
        @echo ''
-       @echo 'Dependency installation targets:'
-       @echo '  install-logging  - install the Python Logging package'
+       @echo 'Dependency installation targets (Python Logging package):'
+       @echo '  build-logging    - build logging'
+       @echo '  install-logging  - install logging tools'
+       @echo '  dist-logging     - install logging tools into local directory'
+       @echo '  clean-logging    - clean logging'
+       @echo '  distclean-logging'
+       @echo '                   - clean logging plus'
+       @echo '                     delete logging tree and local tarball'
+       @echo '  * distclean-logging is called by distclean,'
+       @echo '    but other targets are indepenent of non-logging targets'
+       @echo ''
+       @echo 'Dependency installation targets (iptables):'
+       @echo '  build-iptables   - build iptables'
        @echo '  install-iptables - install iptables tools'
+       @echo '  dist-iptables    - install iptables tools into local directory'
+       @echo '  clean-iptables   - clean iptables'
+       @echo '  distclean-iptables'
+       @echo '                   - clean iptables plus'
+       @echo '                     delete iptables tree and local tarball'
+       @echo '  * distclean-iptables is called by distclean,'
+       @echo '    but other targets are indepenent of non-iptables targets'
        @echo ''
        @echo 'Miscellaneous targets:'
        @echo '  prep-kernels     - prepares kernel directories, does not build'
        @echo '  mkpatches        - make patches against vanilla kernels from'
        @echo '                     sparse trees'
-       @echo '  uninstall        - attempt to remove installed Xen tools (use'
-       @echo '                     with extreme care!)'
+       @echo '  uninstall        - attempt to remove installed Xen tools'
+       @echo '                     (use with extreme care!)'
+       @echo
+       @echo 'Environment:'
+       @echo '  XEN_PYTHON_NATIVE_INSTALL=y'
+       @echo '                   - native python install or dist'
+       @echo '                     install into prefix/lib/python<VERSION>'
+       @echo '                     instead of <PREFIX>/lib/python'
+       @echo '                     true if set to non-empty value, false 
otherwise'
+       @echo ' LINUX_REPO=URL    - Base URL to download linux kernel from'
+       @echo '                     Default: $(LINUX_REPO)'
+       @echo ' LINUX_REPO_KERNEL_PATH=DIRECTORY'
+       @echo '                   - LINUX_REPO assumes that the URL has the 
same directory'
+       @echo '                     structure as 
http://www.kernel.org/pub/linux/kernel/'
+       @echo '                     and the rest of the path to the tarball is 
derived.'
+       @echo '                     If set, override the derivation.'
+       @echo '                     Default: $(LINUX_REPO)'
+       @echo ' LINUX_REPO_PATCHL_PATH=DIRECTORY'
+       @echo '                   - LINUX_REPO assumes that the URL has the 
same directory'
+       @echo '                     structure as 
http://www.kernel.org/pub/linux/kernel/'
+       @echo '                     and the rest of the path to the patches is 
derived.'
+       @echo '                     If set, override the derivation.'
+       @echo '                     Default: $(LINUX_REPO)'
+       @echo ' NETBSD_REPO=URL   - Base URL to download netbsd kernel from'
+       @echo '                     Default: $(NETBSD_REPO)'
+       @echo ' PYTHON_LOGGING_REPO=URL'
+       @echo '                   - Base URL to download python loging package 
from'
+       @echo '                     Default: $(PYTHON_LOGGING_REPO)'
+       @echo ' IPTABLES_REPO=URL'
+       @echo '                   - Base URL to download iptables from'
+       @echo '                     Default: $(IPTABLES_REPO)'
+       @echo ' DOWNLOAD_PATH=PATH'
+       @echo '                   - Directory to search for downloadable files'
+       @echo '                     ":" delimited'
+       @echo '                     First element will be used as the directory'
+       @echo '                     to store any downloaded files in'
+       @echo '                     Default: LINUX_SRC_PATH if set, else 
$(DOWNLOAD_PATH_DEFAULT)'
+
+
 
 # Use this target with extreme care!
+.PHONY: uninstall
 uninstall: D=$(DESTDIR)
 uninstall:
        [ -d $(D)/etc/xen ] && mv -f $(D)/etc/xen $(D)/etc/xen.old-`date +%s` 
|| true
@@ -199,5 +341,6 @@ uninstall:
        rm -rf $(D)/usr/share/man/man8/xen*
 
 # Legacy targets for compatibility
+.PHONY: linux26
 linux26:
        $(MAKE) 'KERNELS=linux-2.6*' kernels
diff -r 40c23921e729 buildconfigs/Rules.mk
--- a/buildconfigs/Rules.mk     Mon Mar 27 18:03:03 2006 +0100
+++ b/buildconfigs/Rules.mk     Tue Mar 28 18:49:58 2006 +0900
@@ -24,21 +24,28 @@ LINUX_VER   ?= $(shell grep "^LINUX_VER" b
 LINUX_VER      ?= $(shell grep "^LINUX_VER" buildconfigs/mk.linux-2.6-xen | 
sed -e 's/.*=[ ]*//')
 
 # Setup Linux search path
-LINUX_SRC_PATH ?= .:..
-vpath linux-%.tar.bz2 $(LINUX_SRC_PATH)
-vpath patch-%.bz2 $(LINUX_SRC_PATH)
+vpath linux-%.tar.bz2 $(DOWNLOAD_PATH)
+vpath patch-%.bz2 $(DOWNLOAD_PATH)
 
 # download a pristine Linux kernel tarball if there isn't one in LINUX_SRC_PATH
+ifndef LINUX_REPO_KERNEL_PATH
 linux-%.tar.bz2: override _LINUX_VDIR = $(word 1,$(subst ., ,$*)).$(word 
2,$(subst ., ,$*))
+linux-%.tar.bz2: LINUX_REPO_KERNEL_PATH = v$(_LINUX_VDIR)
+endif
 linux-%.tar.bz2:
        @echo "Cannot find $@ in path $(LINUX_SRC_PATH)"
-       wget $(KERNEL_REPO)/pub/linux/kernel/v$(_LINUX_VDIR)/$@ -O./$@
+       wget $(LINUX_REPO)/$(LINUX_REPO_KERNEL_PATH)/$@ -O$(DOWNLOAD_DIR)/$@ \\
+               || { rm -f $(DOWNLOAD_DIR)/$@; false; }
 
+ifndef LINUX_REPO_PATCH_PATH
 patch-%.bz2: override _LINUX_VDIR = $(word 1,$(subst ., ,$(*F))).$(word 
2,$(subst ., ,$(*F)))
 patch-%.bz2: override _LINUX_XDIR = $(if $(word 3,$(subst -, 
,$(*F))),snapshots,testing)
+patch-%.bz2: LINUX_REPO_PATCH_PATH = v$(_LINUX_VDIR)/$(_LINUX_XDIR)
+endif
 patch-%.bz2:
        @echo "Cannot find $(@F) in path $(LINUX_SRC_PATH)"
-       wget 
$(KERNEL_REPO)/pub/linux/kernel/v$(_LINUX_VDIR)/$(_LINUX_XDIR)/$(@F) -O./$@
+       wget $(LINUX_REPO)/$(LINUX_REPO_PATCH_PATH)/$(@F) \
+               -O$(DOWNLOAD_DIR)/$@ || { rm -f $(DOWNLOAD_DIR)/$@; false; }
 
 # Expand NetBSD release to NetBSD version
 NETBSD_RELEASE  ?= 2.0
@@ -52,7 +59,8 @@ vpath netbsd-%.tar.bz2 $(NETBSD_SRC_PATH
 # download a pristine NetBSD tarball if there isn't one in NETBSD_SRC_PATH
 netbsd-%-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2:
        @echo "Cannot find $@ in path $(NETBSD_SRC_PATH)"
-       wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/$@ -O./$@
+       wget $(NETBSD_REPO)/$@ -O$(DOWNLOAD_DIR)/$@ || \
+               || { rm -f $(DOWNLOAD_DIR)/$@; false; }
 
 netbsd-%.tar.bz2: netbsd-%-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2
        ln -fs $< $@
@@ -67,9 +75,10 @@ pristine-%: pristine-%/.valid-pristine
        @true
 
 pristine-%/.valid-pristine: %.tar.bz2
+       @ echo pristing-target: $@
        rm -rf tmp-pristine-$* $(@D)
        mkdir -p tmp-pristine-$*
-       tar -C tmp-pristine-$* -jxf $<
+       tar -C tmp-pristine-$* --bzip2 -xf $<
        -@rm -f tmp-pristine-$*/pax_global_header
        mv tmp-pristine-$*/* $(@D)
        @rm -rf tmp-pristine-$*
@@ -83,9 +92,6 @@ ifneq ($(PATCHDIRS),)
 
 $(patsubst patches/%,patches/%/.makedep,$(PATCHDIRS)): patches/%/.makedep: 
        @echo 'ref-$*/.valid-ref: $$(wildcard patches/$*/*.patch)' >$@
-
-clean::
-       rm -f patches/*/.makedep
 
 ref-%/.valid-ref: pristine-%/.valid-pristine
        set -e
@@ -113,6 +119,7 @@ endif
 
 %-delete:
        $(MAKE) -f buildconfigs/mk.$* delete
+       rm -f %
 
 %-clean:
        $(MAKE) -f buildconfigs/mk.$* clean
@@ -123,19 +130,20 @@ linux-2.6-xen.patch: ref-linux-$(LINUX_V
 linux-2.6-xen.patch: ref-linux-$(LINUX_VER)/.valid-ref
        rm -rf tmp-$@
        cp -al $(<D) tmp-$@
-       ( cd linux-2.6-xen-sparse && ./mkbuildtree ../tmp-$@ )  
+       ( cd linux-2.6-xen-sparse && sh ./mkbuildtree ../tmp-$@ )       
        diff -Nurp $(<D) tmp-$@ > $@ || true
        rm -rf tmp-$@
 
 %-xen.patch: ref-%/.valid-ref
        rm -rf tmp-$@
        cp -al $(<D) tmp-$@
-       ( cd $*-xen-sparse && ./mkbuildtree ../tmp-$@ ) 
+       ( cd $*-xen-sparse && sh ./mkbuildtree ../tmp-$@ )      
        diff -Nurp $(<D) tmp-$@ > $@ || true
        rm -rf tmp-$@
 
 %-mrproper: %-mrproper-extra
-       rm -rf pristine-$(*)* ref-$(*)* $*.tar.bz2
+       $(MAKE) -f buildconfigs/mk.$*-xen mrpropper
+       rm -rf pristine-$(*)* ref-$(*)*
        rm -rf $*-xen.patch
 
 netbsd-%-mrproper-extra:
diff -r 40c23921e729 buildconfigs/mk.linux-2.6-xen
--- a/buildconfigs/mk.linux-2.6-xen     Mon Mar 27 18:03:03 2006 +0100
+++ b/buildconfigs/mk.linux-2.6-xen     Tue Mar 28 18:49:58 2006 +0900
@@ -11,9 +11,8 @@ LINUX_DIR    = $(OS)-$(LINUX_VER)-$(EXTR
 
 include buildconfigs/Rules.mk
 
-.PHONY: build clean delete
-
 # The real action starts here!
+.PHONY: build
 build: $(LINUX_DIR)/include/linux/autoconf.h
        if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
            $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) modules ; \
@@ -26,8 +25,8 @@ build: $(LINUX_DIR)/include/linux/autoco
        rm -rf $(LINUX_DIR)
        cp -al $(<D) $(LINUX_DIR)
        # Apply arch-xen patches
-       ( cd linux-$(LINUX_SERIES)-xen-sparse ; \
-          LINUX_ARCH=$(LINUX_ARCH) ./mkbuildtree ../$(LINUX_DIR) )
+       ( cd linux-$(LINUX_SERIES)-xen-sparse && \
+          LINUX_ARCH=$(LINUX_ARCH) sh ./mkbuildtree ../$(LINUX_DIR) )
        # Re-use config from install dir if one exits else use default config
        CONFIG_VERSION=$$(sed -ne 's/^EXTRAVERSION = //p' 
$(LINUX_DIR)/Makefile); \
        [ -r 
$(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) ] && \
@@ -42,14 +41,23 @@ build: $(LINUX_DIR)/include/linux/autoco
          rm -f Makefile ; mv Mk.tmp Makefile )
        $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) oldconfig
 
+.PHONY: prep
 prep: $(LINUX_DIR)/include/linux/autoconf.h
 
+.PHONY: config
 config: CONFIGMODE = menuconfig
 config: $(LINUX_DIR)/include/linux/autoconf.h
        $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) $(CONFIGMODE)
 
+.PHONY: clean
 clean::
-       $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean
+       [ ! -d $(LINUX_DIR) ] || \
+               $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean
 
+.PHONY: delete
 delete: 
        rm -rf tmp-$(OS)-$(LINUX_VER) $(LINUX_DIR) 
+
+.PHONY: mrpropper
+mrpropper:
+       rm -f $(LINUX_SRCS)
diff -r 40c23921e729 linux-2.6-xen-sparse/drivers/xen/Makefile
--- a/linux-2.6-xen-sparse/drivers/xen/Makefile Mon Mar 27 18:03:03 2006 +0100
+++ b/linux-2.6-xen-sparse/drivers/xen/Makefile Tue Mar 28 18:49:58 2006 +0900
@@ -1,22 +1,20 @@
 
-obj-y  += net_driver_util.o
-obj-y  += util.o
+obj-y   += util.o
 
 obj-y  += core/
-obj-y  += char/
 obj-y  += console/
 obj-y  += evtchn/
-obj-y  += balloon/
+#obj-y += balloon/
 obj-y  += privcmd/
+obj-y  += blkback/
+#obj-y += netback/
+obj-y  += blkfront/
 obj-y  += xenbus/
+#obj-y += netfront/
+#obj-$(CONFIG_XEN_PRIVILEGED_GUEST)    += privcmd/
+#obj-$(CONFIG_XEN_BLKDEV_BACKEND)      += blkback/
+#obj-$(CONFIG_XEN_NETDEV_BACKEND)      += netback/
+#obj-$(CONFIG_XEN_BLKDEV_FRONTEND)     += blkfront/
+#obj-$(CONFIG_XEN_NETDEV_FRONTEND)     += netfront/
+#obj-$(CONFIG_XEN_BLKDEV_TAP)          += blktap/
 
-obj-$(CONFIG_XEN_BLKDEV_BACKEND)       += blkback/
-obj-$(CONFIG_XEN_NETDEV_BACKEND)       += netback/
-obj-$(CONFIG_XEN_TPMDEV_BACKEND)       += tpmback/
-obj-$(CONFIG_XEN_BLKDEV_FRONTEND)      += blkfront/
-obj-$(CONFIG_XEN_NETDEV_FRONTEND)      += netfront/
-obj-$(CONFIG_XEN_BLKDEV_TAP)           += blktap/
-obj-$(CONFIG_XEN_TPMDEV_FRONTEND)      += tpmfront/
-obj-$(CONFIG_XEN_PCIDEV_BACKEND)       += pciback/
-obj-$(CONFIG_XEN_PCIDEV_FRONTEND)      += pcifront/
-
diff -r 40c23921e729 linux-2.6-xen-sparse/drivers/xen/core/Makefile
--- a/linux-2.6-xen-sparse/drivers/xen/core/Makefile    Mon Mar 27 18:03:03 
2006 +0100
+++ b/linux-2.6-xen-sparse/drivers/xen/core/Makefile    Tue Mar 28 18:49:58 
2006 +0900
@@ -2,10 +2,25 @@
 # Makefile for the linux kernel.
 #
 
-obj-y   := evtchn.o reboot.o gnttab.o features.o
+XENARCH        := $(subst ",,$(CONFIG_XENARCH))
 
+CPPFLAGS_vmlinux.lds += -U$(XENARCH)
+
+$(obj)/vmlinux.lds.S:
+       @ln -fsn $(srctree)/arch/$(XENARCH)/kernel/vmlinux.lds.S $@
+
+
+obj-y   := gnttab.o
 obj-$(CONFIG_PROC_FS) += xen_proc.o
-obj-$(CONFIG_NET)     += skbuff.o
-obj-$(CONFIG_SMP)     += smpboot.o
+
+ifeq ($(ARCH),ia64)
+obj-y   += evtchn_ia64.o
+obj-y   += xenia64_init.o
+else
+extra-y += vmlinux.lds
+obj-y   += reboot.o evtchn.o fixup.o 
+obj-$(CONFIG_SMP)     += smp.o         # setup_profiling_timer def'd in ia64
+obj-$(CONFIG_NET)     += skbuff.o      # until networking is up on ia64
+endif
 obj-$(CONFIG_SYSFS)   += hypervisor_sysfs.o
 obj-$(CONFIG_XEN_SYSFS) += xen_sysfs.o
diff -r 40c23921e729 linux-2.6-xen-sparse/mkbuildtree
--- a/linux-2.6-xen-sparse/mkbuildtree  Mon Mar 27 18:03:03 2006 +0100
+++ b/linux-2.6-xen-sparse/mkbuildtree  Tue Mar 28 18:49:58 2006 +0900
@@ -90,8 +90,8 @@ RS=$DESTPATH
 RS=$DESTPATH
 
 # Arch-specific pre-processing
-if [ -x arch/${LINUX_ARCH}/xen-mkbuildtree-pre ]; then
-       arch/${LINUX_ARCH}/xen-mkbuildtree-pre
+if [ -e arch/${LINUX_ARCH}/xen-mkbuildtree-pre ]; then
+       sh arch/${LINUX_ARCH}/xen-mkbuildtree-pre
 fi
 
 # Remove old copies of files and directories at the destination
@@ -115,6 +115,6 @@ relative_lndir ../../../${RS}/../xen/inc
 
 # Arch-specific post-processing
 cd ${AD}
-if [ -x arch/${LINUX_ARCH}/xen-mkbuildtree-post ]; then
-       arch/${LINUX_ARCH}/xen-mkbuildtree-post
+if [ -e arch/${LINUX_ARCH}/xen-mkbuildtree-post ]; then
+       sh arch/${LINUX_ARCH}/xen-mkbuildtree-post
 fi
diff -r 40c23921e729 tools/debugger/gdb/gdbbuild
--- a/tools/debugger/gdb/gdbbuild       Mon Mar 27 18:03:03 2006 +0100
+++ b/tools/debugger/gdb/gdbbuild       Tue Mar 28 18:49:58 2006 +0900
@@ -7,7 +7,7 @@ tar xjf gdb-6.2.1.tar.bz2
 tar xjf gdb-6.2.1.tar.bz2
 
 cd gdb-6.2.1-xen-sparse
-./mkbuildtree ../gdb-6.2.1
+sh ./mkbuildtree ../gdb-6.2.1
 
 cd ..
 mkdir gdb-6.2.1-linux-i386-xen
diff -r 40c23921e729 tools/misc/xen-clone
--- a/tools/misc/xen-clone      Mon Mar 27 18:03:03 2006 +0100
+++ b/tools/misc/xen-clone      Tue Mar 28 18:49:58 2006 +0900
@@ -113,7 +113,7 @@ else
 
  # Turn linux into xenolinux then build it
  cd xenolinux-${LINUX_VER}-sparse
- ./mkbuildtree ../../linux-${LINUX_VER}
+ sh ./mkbuildtree ../../linux-${LINUX_VER}
  cd ../..
  mv linux-${LINUX_VER} xenolinux-${LINUX_VER}
  cd xenolinux-${LINUX_VER}
diff -r 40c23921e729 tools/pygrub/Makefile
--- a/tools/pygrub/Makefile     Mon Mar 27 18:03:03 2006 +0100
+++ b/tools/pygrub/Makefile     Tue Mar 28 18:49:58 2006 +0900
@@ -15,4 +15,4 @@ endif
 endif
 
 clean:
-       rm -rf build tmp *.pyc *.pyo *.o *.a *~
+       rm -rf build tmp *.pyc *.pyo *.o *.a *~ a.out

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


 


Rackspace

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