|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH xen.git 1/1] build: remove Linux kernel build integration.
On Wed, 2014-03-19 at 11:48 +0000, Ian Campbell wrote:
> We haven't shipped a XenoLinux kernel for more releases than I can remember.
> We held onto these because osstest was using them but this is no longer the
> case.
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
The osstest changes have now passed osstests own gate, I think we could
push this one now, I'm not entirely sure who needs to ack it though...
> ---
> Makefile | 59 +--
> buildconfigs/Rules.mk | 42 --
> buildconfigs/enable-xen-config | 127 ------
> buildconfigs/interface.exclude | 7 -
> buildconfigs/ketchup | 742
> ----------------------------------
> buildconfigs/mk.linux-2.6 | 10 -
> buildconfigs/mk.linux-2.6-common | 154 -------
> buildconfigs/mk.linux-2.6-git | 2 -
> buildconfigs/mk.linux-2.6-mm | 2 -
> buildconfigs/mk.linux-2.6-native | 5 -
> buildconfigs/mk.linux-2.6-pvops | 17 -
> buildconfigs/mk.linux-2.6-rc | 2 -
> buildconfigs/mk.linux-2.6-tip | 2 -
> buildconfigs/mk.linux-2.6-tip-latest | 17 -
> buildconfigs/mk.linux-2.6-xen | 6 -
> buildconfigs/mk.linux-2.6-xen0 | 2 -
> buildconfigs/mk.linux-2.6-xenU | 2 -
> buildconfigs/select-linux-arch | 30 --
> buildconfigs/select-linux-image | 33 --
> buildconfigs/select-repository | 69 ----
> buildconfigs/src.git-clone | 32 --
> buildconfigs/src.hg-clone | 32 --
> buildconfigs/src.tarball | 19 -
> config/Linux.mk | 7 -
> configure | 50 ---
> configure.ac | 1 -
> 26 files changed, 10 insertions(+), 1461 deletions(-)
> delete mode 100644 buildconfigs/Rules.mk
> delete mode 100644 buildconfigs/enable-xen-config
> delete mode 100644 buildconfigs/interface.exclude
> delete mode 100644 buildconfigs/ketchup
> delete mode 100644 buildconfigs/mk.linux-2.6
> delete mode 100644 buildconfigs/mk.linux-2.6-common
> delete mode 100644 buildconfigs/mk.linux-2.6-git
> delete mode 100644 buildconfigs/mk.linux-2.6-mm
> delete mode 100644 buildconfigs/mk.linux-2.6-native
> delete mode 100644 buildconfigs/mk.linux-2.6-pvops
> delete mode 100644 buildconfigs/mk.linux-2.6-rc
> delete mode 100644 buildconfigs/mk.linux-2.6-tip
> delete mode 100644 buildconfigs/mk.linux-2.6-tip-latest
> delete mode 100644 buildconfigs/mk.linux-2.6-xen
> delete mode 100644 buildconfigs/mk.linux-2.6-xen0
> delete mode 100644 buildconfigs/mk.linux-2.6-xenU
> delete mode 100755 buildconfigs/select-linux-arch
> delete mode 100755 buildconfigs/select-linux-image
> delete mode 100755 buildconfigs/select-repository
> delete mode 100644 buildconfigs/src.git-clone
> delete mode 100644 buildconfigs/src.hg-clone
> delete mode 100644 buildconfigs/src.tarball
>
> diff --git a/Makefile b/Makefile
> index 91ca280..e46f5f1 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -7,7 +7,7 @@
> all: dist
>
> -include config/Toplevel.mk
> -SUBSYSTEMS?=xen kernels tools stubdom docs
> +SUBSYSTEMS?=xen tools stubdom docs
> TARGS_DIST=$(patsubst %, dist-%, $(SUBSYSTEMS))
> TARGS_INSTALL=$(patsubst %, install-%, $(SUBSYSTEMS))
>
> @@ -15,7 +15,7 @@ export XEN_ROOT=$(CURDIR)
> include Config.mk
>
> SUBARCH := $(subst x86_32,i386,$(XEN_TARGET_ARCH))
> -export XEN_TARGET_ARCH SUBARCH XEN_SYSTYPE
> +export XEN_TARGET_ARCH SUBARCH
> include buildconfigs/Rules.mk
>
> # build and install everything into the standard system directories
> @@ -23,7 +23,7 @@ include buildconfigs/Rules.mk
> install: $(TARGS_INSTALL)
>
> .PHONY: build
> -build: kernels
> +build:
> $(MAKE) -C xen build
> $(MAKE) -C tools build
> $(MAKE) -C stubdom build
> @@ -54,17 +54,12 @@ dist-%: install-%
> @: # do nothing
>
> # Legacy dist targets
> -.PHONY: xen tools stubdom kernels docs
> +.PHONY: xen tools stubdom docs
> xen: dist-xen
> tools: dist-tools
> -kernels: dist-kernels
> stubdom: dist-stubdom
> 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
> @@ -95,10 +90,6 @@ endif
> install-tools: $(QEMU_TRAD_DIR_TARGET) $(QEMU_XEN_DIR_TARGET)
> $(MAKE) -C tools install
>
> -.PHONY: install-kernels
> -install-kernels:
> - for i in $(XKERNELS) ; do $(MAKE) $$i-install || exit 1; done
> -
> .PHONY: install-stubdom
> install-stubdom: $(QEMU_TRAD_DIR_TARGET) install-tools
> $(MAKE) -C stubdom install
> @@ -122,27 +113,12 @@ install-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
> -
> -# 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
> +# build xen and the tools 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
>
> # Package a build in a debball file, that is inside a .deb format
> @@ -159,7 +135,6 @@ debball: dist
> rpmball: dist
> bash ./tools/misc/mkrpm $(XEN_ROOT) $$($(MAKE) -C xen xenversion
> --no-print-directory)
>
> -# clean doesn't do a kclean
> .PHONY: clean
> clean::
> $(MAKE) -C xen clean
> @@ -170,7 +145,7 @@ ifeq (x86_64,$(XEN_TARGET_ARCH))
> endif
> $(MAKE) -C docs clean
>
> -# clean, but blow away kernel build tree plus tarballs
> +# clean, but blow away tarballs
> .PHONY: distclean
> distclean:
> rm -f config/Toplevel.mk
> @@ -181,9 +156,7 @@ ifeq (x86_64,$(XEN_TARGET_ARCH))
> XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom distclean
> endif
> $(MAKE) -C docs distclean
> - rm -rf dist patches/tmp
> - for i in $(ALLKERNELS) ; do $(MAKE) $$i-delete ; done
> - rm -rf patches/*/.makedep
> + rm -rf dist
> rm -rf config.log config.status config.cache autom4te.cache
>
> # Linux name for GNU distclean
> @@ -203,19 +176,15 @@ help:
> @echo ' install - build and install everything'
> @echo ' install-xen - build and install the Xen hypervisor'
> @echo ' install-tools - build and install the control tools'
> - @echo ' install-kernels - build and install guest kernels'
> @echo ' install-stubdom - build and install the stubdomain images'
> @echo ' install-docs - build and install user documentation'
> @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 then make dist'
> @echo ' xen - build and install Xen hypervisor'
> @echo ' tools - build and install tools'
> @echo ' stubdom - build and install the stubdomain images'
> - @echo ' kernels - build and install guest kernels'
> - @echo ' kbuild - synonym for make kernels'
> @echo ' docs - build and install user documentation'
> @echo ' dev-docs - build developer-only documentation'
> @echo ''
> @@ -223,11 +192,8 @@ help:
> @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 'Miscellaneous targets:'
> - @echo ' prep-kernels - prepares kernel directories, does not build'
> @echo ' uninstall - attempt to remove installed Xen tools'
> @echo ' (use with extreme care!)'
> @echo
> @@ -255,11 +221,6 @@ uninstall:
> make -C tools uninstall
> rm -rf $(D)/boot/tboot*
>
> -# Legacy targets for compatibility
> -.PHONY: linux26
> -linux26:
> - $(MAKE) 'KERNELS=linux-2.6*' kernels
> -
> .PHONY: xenversion
> xenversion:
> @$(MAKE) --no-print-directory -C xen xenversion
> diff --git a/buildconfigs/Rules.mk b/buildconfigs/Rules.mk
> deleted file mode 100644
> index ee61cf6..0000000
> --- a/buildconfigs/Rules.mk
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -
> -include Config.mk
> -
> -export DESTDIR
> -
> -ALLKERNELS = $(patsubst buildconfigs/mk.%,%,$(wildcard buildconfigs/mk.*))
> -
> -%-install:
> - $(MAKE) -f buildconfigs/mk.$* build
> -
> -%-dist: DESTDIR=$(DISTDIR)/install
> -%-dist: %-install
> - @: # do nothing
> -
> -# Legacy dist target
> -%-build: %-dist
> - @: # do nothing
> -
> -%-prep: DESTDIR=$(DISTDIR)/install
> -%-prep:
> - $(MAKE) -f buildconfigs/mk.$* prep
> -
> -%-config: DESTDIR=$(DISTDIR)/install
> -%-config:
> - $(MAKE) -f buildconfigs/mk.$* config
> -
> -%-delete:
> - $(MAKE) -f buildconfigs/mk.$* delete
> -
> -%-clean:
> - $(MAKE) -f buildconfigs/mk.$* clean
> -
> -%.patch:
> - $(MAKE) -f buildconfigs/mk.$* $@
> -
> -%-mrproper:
> - $(MAKE) -f buildconfigs/mk.$*-xen mrproper
> - rm -rf pristine-$(*)* ref-$(*)*
> - rm -rf $*-xen.patch
> -
> -# never delete any intermediate files.
> -.SECONDARY:
> diff --git a/buildconfigs/enable-xen-config b/buildconfigs/enable-xen-config
> deleted file mode 100644
> index 7ee4d37..0000000
> --- a/buildconfigs/enable-xen-config
> +++ /dev/null
> @@ -1,127 +0,0 @@
> -#!/bin/sh
> -
> -set -e
> -
> -if [ $# -ne 1 ] ; then
> - echo "Usage $(basename $0) <config-file>" 1>&2
> - exit 1
> -fi
> -
> -CONFIG=$1
> -
> -setopt()
> -{
> - OPTION=$1
> - VALUE=$2
> -
> - # First remove any existing instances of this option
> - sed -e "s/^# ${OPTION} is not set$//g ; s/^${OPTION}=.*$//g" -i
> "${CONFIG}"
> -
> - # Then append the new value
> - case ${VALUE} in
> - n) echo "# ${OPTION} is not set" >> "${CONFIG}" ;;
> - y|m|*) echo "${OPTION}=${VALUE}" >> "${CONFIG}" ;;
> - esac
> -}
> -
> -setopt CONFIG_PARAVIRT y
> -setopt CONFIG_PARAVIRT_DEBUG y
> -setopt CONFIG_PARAVIRT_GUEST y
> -setopt CONFIG_PARAVIRT_SPINLOCKS y
> -
> -setopt CONFIG_XEN y
> -setopt CONFIG_XEN_BLKDEV_FRONTEND y
> -setopt CONFIG_XEN_NETDEV_FRONTEND y
> -setopt CONFIG_XEN_KBDDEV_FRONTEND y
> -setopt CONFIG_XEN_FBDEV_FRONTEND y
> -setopt CONFIG_XEN_PCIDEV_FRONTEND y
> -setopt CONFIG_XEN_BALLOON y
> -setopt CONFIG_XEN_SCRUB_PAGES y
> -setopt CONFIG_XEN_DEV_EVTCHN y
> -setopt CONFIG_XEN_BACKEND y
> -setopt CONFIG_XEN_BLKDEV_BACKEND y
> -setopt CONFIG_XEN_BLKDEV_TAP y
> -setopt CONFIG_XEN_NETDEV_BACKEND y
> -setopt CONFIG_XEN_PCIDEV_BACKEND y
> -setopt CONFIG_XEN_PCIDEV_BACKEND_VPCI y
> -setopt CONFIG_XEN_PCIDEV_BACKEND_PASS n
> -setopt CONFIG_XEN_PCIDEV_BACKEND_SLOT n
> -setopt CONFIG_XEN_PCIDEV_BE_DEBUG n
> -setopt CONFIG_XENFS y
> -setopt CONFIG_XEN_COMPAT_XENFS y
> -setopt CONFIG_XEN_PCI_PASSTHROUGH y
> -setopt CONFIG_HVC_XEN y
> -setopt CONFIG_XEN_MAX_DOMAIN_MEMORY 32
> -setopt CONFIG_XEN_DEBUG_FS y
> -setopt CONFIG_XEN_DOM0 y
> -setopt CONFIG_XEN_SYS_HYPERVISOR y
> -setopt CONFIG_XEN_GNTDEV y
> -setopt CONFIG_XEN_PLATFORM_PCI y
> -
> -setopt CONFIG_VMI y
> -setopt CONFIG_TUN y
> -
> -setopt CONFIG_KVM y
> -setopt CONFIG_KVM_INTEL y
> -setopt CONFIG_KVM_AMD y
> -setopt CONFIG_KVM_CLOCK y
> -setopt CONFIG_KVM_GUEST n
> -setopt CONFIG_KVM_TRACE n
> -
> -setopt CONFIG_LGUEST n
> -
> -setopt CONFIG_LOCALVERSION_AUTO n
> -
> -setopt CONFIG_BRIDGE y
> -
> -setopt CONFIG_DEBUG_STACK_USAGE n
> -
> -setopt CONFIG_MEMORY_HOTPLUG y
> -setopt CONFIG_MEMORY_HOTREMOVE y
> -
> -setopt CONFIG_MIGRATION n
> -
> -setopt CONFIG_ACPI_HOTPLUG_MEMORY n
> -
> -# Should all be set one way or another in defconfig but aren't
> -setopt CONFIG_NUMA n
> -setopt CONFIG_X86_VSMP n
> -setopt CONFIG_X86_UV n
> -setopt CONFIG_CALGARY_IOMMU n
> -setopt CONFIG_AMD_IOMMU n
> -setopt CONFIG_MAXSMP n
> -setopt CONFIG_SPARSEMEM_VMEMMAP n
> -setopt CONFIG_I7300_IDLE n
> -setopt CONFIG_DMAR n
> -setopt CONFIG_INTR_REMAP n
> -setopt CONFIG_GFS2_FS n
> -setopt CONFIG_IOMMU_DEBUG n
> -setopt CONFIG_X86_MCE_INTEL n
> -setopt CONFIG_X86_MCE_AMD n
> -setopt CONFIG_CRYPTO_AES_NI_INTEL n
> -setopt CONFIG_CISS_SCSI_TAPE n
> -
> -setopt CONFIG_FUSION y
> -setopt CONFIG_FUSION_SPI m
> -setopt CONFIG_FUSION_SAS m
> -setopt CONFIG_FUSION_FC m
> -setopt CONFIG_FUSION_MAX_SGE 128
> -setopt CONFIG_FUSION_CTL n
> -setopt CONFIG_FUSION_LOGGING n
> -
> -setopt CONFIG_BLK_CPQ_CISS_DA m
> -
> -case ${XEN_TARGET_ARCH} in
> - x86_32) setopt CONFIG_64BIT n ;;
> - x86_64)
> - setopt CONFIG_64BIT y
> - setopt CONFIG_IA32_EMULATION y
> - setopt CONFIG_IA32_AOUT n
> - setopt CONFIG_CRYPTO_AES_X86_64 n
> - setopt CONFIG_CRYPTO_SALSA20_X86_64 n
> - setopt CONFIG_CRYPTO_TWOFISH_X86_64 n
> - ;;
> - *) ;;
> -esac
> -
> -exit 0
> diff --git a/buildconfigs/interface.exclude b/buildconfigs/interface.exclude
> deleted file mode 100644
> index 1df89a5..0000000
> --- a/buildconfigs/interface.exclude
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -*.size
> -*.pyc
> -checker
> -checker.c
> -ia64.h
> -x86_32.h
> -x86_64.h
> diff --git a/buildconfigs/ketchup b/buildconfigs/ketchup
> deleted file mode 100644
> index 8725f7d..0000000
> --- a/buildconfigs/ketchup
> +++ /dev/null
> @@ -1,742 +0,0 @@
> -#!/usr/bin/python
> -#
> -# ketchup 0.9.8
> -# http://selenic.com/ketchup/wiki
> -#
> -# Copyright 2004 Matt Mackall <mpm@xxxxxxxxxxx>
> -#
> -# This software may be used and distributed according to the terms
> -# of the GNU General Public License, incorporated herein by reference.
> -#
> -# Usage:
> -#
> -# in an existing kernel directory, run:
> -#
> -# ketchup <version>
> -#
> -# where version is a complete kernel version, or a branch name to grab
> -# the latest version
> -#
> -# You can override some variables by creating a ~/.ketchuprc file.
> -# The ~/.ketchuprc is just a Python script, eg. it might look like this:
> -#
> -# kernel_url = 'http://kernel.localdomain/pub/linux/kernel'
> -# archive = os.environ["HOME"] + '/tmp/ketchup-archive'
> -# gpg = '/weird/path/to/gpg'
> -#
> -
> -import re, sys, urllib, os, getopt, glob, shutil
> -
> -def error(*args):
> - sys.stderr.write("ketchup: ")
> - for a in args:
> - sys.stderr.write(str(a))
> - sys.stderr.write("\n")
> -
> -def qprint(*args):
> - if not options["quiet"]:
> - sys.stdout.write(" ".join(map(str, args)))
> - sys.stdout.write("\n")
> -
> -def lprint(*args):
> - sys.stdout.write(" ".join(map(str, args)))
> - sys.stdout.write("\n")
> -
> -
> -def fancyopts(args, options, state, syntax=''):
> - long = []
> - short = ''
> - map = {}
> - dt = {}
> -
> - def help(state, opt, arg, options = options, syntax = syntax):
> - lprint("Usage: ", syntax)
> -
> - for s, l, d, c in options:
> - opt = ' '
> - if s: opt = opt + '-' + s + ' '
> - if l: opt = opt + '--' + l + ' '
> - if d: opt = opt + '(' + str(d) + ')'
> - lprint(opt)
> - if c: lprint(' %s' % c)
> - sys.exit(0)
> -
> - options = [('h', 'help', help, 'Show usage info')] + options
> -
> - for s, l, d, c in options:
> - map['-'+s] = map['--'+l]=l
> - state[l] = d
> - dt[l] = type(d)
> - if not d is None and not type(d) is type(help): s, l = s + ':', l +
> '='
> - if s: short = short + s
> - if l: long.append(l)
> -
> - if os.environ.has_key("KETCHUP_OPTS"):
> - args = os.environ["KETCHUP_OPTS"].split() + args
> -
> - try:
> - opts, args = getopt.getopt(args, short, long)
> - except getopt.GetoptError:
> - help(state, None, args)
> - sys.exit(-1)
> -
> - for opt, arg in opts:
> - if dt[map[opt]] is type(help): state[map[opt]](state,map[opt],arg)
> - elif dt[map[opt]] is type(1): state[map[opt]] = int(arg)
> - elif dt[map[opt]] is type(''): state[map[opt]] = arg
> - elif dt[map[opt]] is type([]): state[map[opt]].append(arg)
> - elif dt[map[opt]] is type(None): state[map[opt]] = 1
> -
> - return args
> -
> -# Default values
> -kernel_url = 'http://www.kernel.org/pub/linux/kernel'
> -archive = os.environ["HOME"] + "/.ketchup"
> -rename_prefix = 'linux-'
> -rename_with_localversion = False
> -wget = "/usr/bin/wget"
> -gpg = "/usr/bin/gpg"
> -precommand = postcommand = None
> -default_tree = None
> -local_trees = {}
> -
> -# Functions to parse version strings
> -
> -def tree(ver):
> - return float(re.match(r'(\d+\.\d+)', ver).group(1))
> -
> -def rev(ver):
> - p = pre(ver)
> - r = int(re.match(r'\d+\.\d+\.(\d+)', ver).group(1))
> - if p: r = r - 1
> - return r
> -
> -def pre(ver):
> - try: return re.match(r'\d+\.\d+\.\d+(\.\d+)?-((rc|pre)\d+)',
> ver).group(2)
> - except: return None
> -
> -def post(ver):
> - try: return re.match(r'\d+\.\d+\.\d+\.(\d+)', ver).group(1)
> - except: return None
> -
> -def pretype(ver):
> - try: return re.match(r'\d+\.\d+\.\d+(\.\d+)?-((rc|pre)\d+)',
> ver).group(3)
> - except: return None
> -
> -def prenum(ver):
> - try: return int(re.match(r'\d+\.\d+\.\d+-((rc|pre)(\d+))', ver).group(3))
> - except: return None
> -
> -def prebase(ver):
> - return re.match(r'(\d+\.\d+\.\d+((-(rc|pre)|\.)\d+)?)', ver).group(1)
> -
> -def revbase(ver):
> - return "%s.%s" % (tree(ver), rev(ver))
> -
> -def base(ver):
> - v = revbase(ver)
> - if post(ver): v += "." + post(ver)
> - return v
> -
> -def forkname(ver):
> - try: return re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-(\w+?)\d+)?',
> - ver).group(5)
> - except: return None
> -
> -def forknum(ver):
> - try: return int(
> - re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-(\w+?)(\d+))?',
> - ver).group(6))
> - except: return None
> -
> -def fork(ver):
> - try: return re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-(\w+))?',
> ver).group(4)
> - except: return None
> -
> -def get_ver(makefile):
> - """ Read the version information from the specified makefile """
> - part = {}
> - parts = "VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION".split(' ')
> - m = open(makefile)
> - for l in m.readlines():
> - for p in parts:
> - try: part[p] = re.match(r'%s\s*=\s*(\S+)' % p, l).group(1)
> - except: pass
> -
> - version = "%s.%s.%s" % tuple([part[p] for p in parts[:3]])
> - version += part.get("EXTRAVERSION","")
> - return version
> -
> -def get_localversion():
> - v = ''
> -
> - for name in glob.glob('localversion*'):
> - try: v += open(name).readline().strip()
> - except: pass
> -
> - try:
> - c = open('.config').read()
> - v += re.search(r'^CONFIG_LOCALVERSION="(.+)"', c, re.M).group(1)
> - except: pass
> -
> - return v
> -
> -def compare_ver(a, b):
> - """
> - Compare kernel versions a and b
> -
> - Note that -pre and -rc versions sort before the version they modify,
> - -pre sorts before -rc, -bk, -git, and -mm, etc. sort alphabetically.
> - """
> - if a == b: return 0
> -
> - c = cmp(float(tree(a)), float(tree(b)))
> - if c: return c
> - c = cmp(rev(a), rev(b))
> - if c: return c
> - c = cmp(int(post(a) or 0), int(post(b) or 0))
> - if c: return c
> - c = cmp(pretype(a), pretype(b)) # pre sorts before rc
> - if c: return c
> - c = cmp(prenum(a), prenum(b))
> - if c: return c
> - c = cmp(forkname(a), forkname(b))
> - if c: return c
> - return cmp(forknum(a), forknum(b))
> -
> -def last(url, pat="(.*/)"):
> - for l in urllib.urlopen(url).readlines():
> - m = re.search('(?i)<a href="%s">' % pat, l)
> - if m: n = m.group(1)
> - return n
> -
> -def latest_mm(url, pat):
> - url = kernel_url + '/people/akpm/patches/2.6/'
> - url += last(url)
> - part = last(url)
> - return part[:-1]
> -
> -def latest_ck(url, pat):
> - url = "http://ck.kolivas.org/patches/2.6/pre-releases/"
> - url += last(url)
> - part = last(url)
> - pre = part[:-1]
> -
> - url = "http://ck.kolivas.org/patches/2.6/"
> - url += last(url,"(2.6.*/)")
> - part = last(url)
> - rel = part[:-1]
> -
> - l = [pre, rel]
> - l.sort(compare_ver)
> - return l[-1]
> -
> -def latest_dir(url, pat):
> - """Find the latest link matching pat at url after sorting"""
> - p = []
> - for l in urllib.urlopen(url).readlines():
> - m = re.search('"%s"' % pat, l)
> - if m: p.append(m.group(1))
> -
> - if not p: return None
> -
> - p.sort(compare_ver)
> - return p[-1]
> -
> -# mbligh is lazy and has a bunch of empty directories
> -def latest_mjb(url, pat):
> - url = kernel_url + '/people/mbligh/'
> -
> - # find the last Linus release and search backwards
> - l = [find_ver('2.6'), find_ver("2.6-pre")]
> - l.sort(compare_ver)
> - linus = l[-1]
> -
> - p = []
> - for l in urllib.urlopen(url).readlines():
> - m = re.search('"(2\.6\..*/)"', l)
> - if m:
> - v = m.group(1)
> - if compare_ver(v, linus) <= 0:
> - p.append(v)
> -
> - p.sort(compare_ver)
> - p.reverse()
> -
> - for ver in p:
> - mjb = latest_dir(url + ver, pat)
> - if mjb: return mjb
> -
> - return None
> -
> -def latest_26_tip(url, pat):
> - l = [find_ver('2.6'), find_ver('2.6-git'), find_ver('2.6-pre')]
> - l.sort(compare_ver)
> - return l[-1]
> -
> -def find_info(ver):
> - b = "%.1f" % tree(ver)
> - f = forkname(ver)
> - p = pre(ver)
> -
> - s = b
> - if f:
> - s = "%s-%s" % (b, f)
> - elif p:
> - s = "%s-pre" % b
> -
> - return version_info[s]
> -
> -def version_urls(ver):
> - """ Return the URL for the patch associated with the specified version
> """
> - i = find_info(ver)[1]
> - if type(i) != type([]):
> - i = [i]
> -
> - v = {
> - 'full': ver,
> - 'tree': tree(ver),
> - 'base': base(ver),
> - 'prebase': prebase(ver)
> - }
> -
> - l = []
> - for e in i:
> - l.append(e % v)
> -
> - return l
> -
> -def patch_path(ver):
> - return os.path.join(archive, os.path.basename(version_urls(ver)[0]))
> -
> -def download(url, f):
> - qprint("Downloading %s" % os.path.basename(url))
> - if options["dry-run"]:
> - return 1
> -
> - if not options["wget"]:
> - p = urllib.urlopen(url).read()
> - if p.find("<title>404") != -1:
> - return None
> - open(f, 'w').write(p)
> - else:
> - e = os.system("%s -c -O %s %s" %
> - (options["wget"], f + ".partial", url))
> - if e:
> - return None
> - os.rename(f + ".partial", f)
> -
> - return 1
> -
> -def verify(url, f, sign):
> - if options["no-gpg"] or options["dry-run"] or not options["gpg-path"]:
> - return 1
> -
> - sf = f + sign
> - if not download(url + sign, sf):
> - error("signature download failed")
> - error("removing files...")
> - os.unlink(f)
> - return 0
> -
> - qprint("Verifying signature...")
> - r = os.system("%s --verify %s %s" % (options["gpg-path"], sf, f))
> - if r:
> - error("gpg returned %d" % r)
> - error("removing files...")
> - os.unlink(f)
> - os.unlink(sf)
> - return 0
> -
> - return 1
> -
> -def trydownload(urls, f, sign):
> - for url in urls:
> - if download(url, f):
> - if not sign or verify(url, f, sign):
> - return f
> - if url[-4:] == ".bz2":
> - f2 = f[:-4] + ".gz"
> - url2 = url[:-4] + ".gz"
> - if download(url2, f2):
> - if not sign or verify(url2, f2, sign):
> - return f2
> - return None
> -
> -def get_patch(ver):
> - """Return the path to patch for given ver, downloading if necessary"""
> - f = patch_path(ver)
> - if os.path.exists(f):
> - return f
> - if f[-4:] == ".bz2":
> - f2 = f[:-4] + ".gz"
> - if os.path.exists(f2):
> - return f2
> -
> - urls = version_urls(ver)
> - sign = find_info(ver)[3]
> - if sign == 1: sign = ".sign"
> - f = trydownload(urls, f, sign)
> - if not f:
> - error("patch download failed")
> - sys.exit(-1)
> -
> - return f
> -
> -def apply_patch(ver, reverse = 0):
> - """Find the patch to upgrade from the predecessor of ver to ver and
> - apply or reverse it."""
> - p = get_patch(ver)
> - r = ""
> - if reverse:
> - r = " -R"
> -
> - qprint("Applying %s%s" % (os.path.basename(p), r))
> - if options["dry-run"]:
> - return ver
> -
> - def cmd(patch, reverse, dry):
> - base = "patch -l -p1%s" % reverse
> - if dry:
> - base += " --dry-run"
> -
> - if p[-4:] == ".bz2":
> - pipe = "bzcat %s | %s" % (patch, base)
> - elif p[-3:] == ".gz":
> - pipe = "zcat %s | %s" % (patch, base)
> - else:
> - pipe = "%s < %s" % (base, patch)
> -
> - err = os.system(pipe + " > .patchdiag")
> - if err:
> - sys.stderr.write(open(".patchdiag").read())
> - os.unlink(".patchdiag")
> - return err
> -
> - err = cmd(p, r, 1)
> - if err:
> - error("patch %s failed: %d" % (p, err))
> - sys.exit(-1)
> -
> - err = cmd(p, r, 0)
> - if err:
> - error("patch %s failed while it was supposed to apply: %d" % (p,
> err))
> - sys.exit(-1)
> -
> -def untar(tarfile):
> - old = os.getcwd()
> - os.mkdir("ketchup-tmp")
> - os.chdir("ketchup-tmp")
> -
> - err = os.system("bzcat %s | tar -xf -" % tarfile)
> - if err:
> - error("Unpacking failed: ", err)
> - sys.exit(-1)
> -
> - err = os.system("mv linux*/* linux*/.[^.]* ..; rmdir linux*")
> - if err:
> - error("Unpacking failed: ", err)
> - sys.exit(-1)
> -
> - os.chdir(old)
> - shutil.rmtree("ketchup-tmp")
> -
> -def install_nearest(ver):
> - t = tree(ver)
> - tarballs = glob.glob(archive + "/linux-%s.*.tar.bz2" % t)
> - list = []
> -
> - for f in tarballs:
> - m = re.match(r'.*/linux-(.*).tar.bz2$', f)
> - v = m.group(1)
> - d = abs(rev(v) - rev(ver))
> - list.append((d, f, v))
> - list.sort()
> -
> - if not list or (options["full-tarball"] and list[0][0]):
> - f = "linux-%s.tar.bz2" % ver
> - url = "%s/v%s/%s" % (kernel_url, t, f)
> - f = archive + "/" + f
> -
> - sign = find_info(ver)[3]
> - if sign == 1: sign = ".sign"
> -
> - f = trydownload([url], f, sign)
> - if not f:
> - error("Tarball download failed")
> - sys.exit(-1)
> -
> - else:
> - f = list[0][1]
> - ver = list[0][2]
> -
> - qprint("Unpacking %s" % os.path.basename(f))
> - if options["dry-run"]: return ver
> - untar(f)
> -
> - return ver
> -
> -def find_ver(ver):
> - if ver in version_info.keys():
> - v = version_info[ver]
> - d = v[1]
> - if type(d) is type([]):
> - d = d[0]
> - for n in range(5):
> - return v[0](os.path.dirname(d), v[2])
> - error('retrying version lookup for %s' % ver)
> - else:
> - return ver
> -
> -def transform(a, b):
> - if a == b:
> - qprint("Nothing to do!")
> - return
> - if not a:
> - a = install_nearest(base(b))
> - t = tree(a)
> - if t != tree(b):
> - error("Can't patch %s to %s" % (tree(a), tree(b)))
> - sys.exit(-1)
> - if fork(a):
> - apply_patch(a, 1)
> - a = prebase(a)
> - if prebase(a) != prebase(b):
> - if pre(a):
> - apply_patch(a, 1)
> - a = base(a)
> -
> - if post(a) and post(a) != post(b):
> - apply_patch(prebase(a), 1)
> -
> - ra, rb = rev(a), rev(b)
> - if ra > rb:
> - for r in range(ra, rb, -1):
> - apply_patch("%s.%s" % (t, r), -1)
> - if ra < rb:
> - for r in range(ra + 1, rb + 1):
> - apply_patch("%s.%s" % (t, r))
> - a = revbase(b)
> -
> - if post(b) and post(a) != post(b):
> - apply_patch(prebase(b), 0)
> - a = base(b)
> -
> - if pre(b):
> - apply_patch(prebase(b))
> - a = prebase(b)
> -
> - if fork(b):
> - a = apply_patch(b)
> -
> -def rename_dir(v):
> - """Rename the current directory to linux-v, where v is the function
> arg"""
> - if rename_with_localversion:
> - v += get_localversion()
> - cwd = os.getcwd()
> - basedir = os.path.dirname(cwd)
> - newdir = os.path.join(basedir, rename_prefix + v)
> - if newdir == cwd:
> - return
> - if os.access(newdir, os.F_OK):
> - error("Cannot rename directory, destination exists: %s", newdir);
> - return
> - os.rename(cwd, newdir)
> - qprint('Current directory renamed to %s' % newdir)
> -
> -
> -# latest lookup function, canonical urls, pattern for lookup function,
> -# signature flag, description
> -version_info = {
> - '2.4': (latest_dir,
> - kernel_url + "/v2.4" + "/patch-%(base)s.bz2",
> - r'patch-(.*?).bz2',
> - 1, "old stable kernel series"),
> - '2.4-pre': (latest_dir,
> - kernel_url + "/v2.4" + "/testing/patch-%(prebase)s.bz2",
> - r'patch-(.*?).bz2',
> - 1, "old stable kernel series prereleases"),
> - '2.6': (latest_dir,
> - kernel_url + "/v2.6" + "/patch-%(prebase)s.bz2",
> - r'patch-(.*?).bz2',
> - 1, "current stable kernel series"),
> - '2.6-rc': (latest_dir,
> - kernel_url + "/v2.6" + "/testing/patch-%(prebase)s.bz2",
> - r'patch-(.*?).bz2',
> - 1, "current stable kernel series prereleases"),
> - '2.6-pre': (latest_dir,
> - kernel_url + "/v2.6" + "/testing/patch-%(prebase)s.bz2",
> - r'patch-(.*?).bz2',
> - 1, "current stable kernel series prereleases"),
> - '2.6-git': (latest_dir,
> - [kernel_url + "/v2.6" + "/snapshots/patch-%(full)s.bz2",
> - kernel_url + "/v2.6" + "/snapshots/old/patch-%(full)s.bz2"],
> - r'patch-(.*?).bz2',
> - 1, "current stable kernel series snapshots"),
> - '2.6-bk': (latest_dir,
> - [kernel_url + "/v2.6" + "/snapshots/patch-%(full)s.bz2",
> - kernel_url + "/v2.6" + "/snapshots/old/patch-%(full)s.bz2"],
> - r'patch-(.*?).bz2',
> - 1, "old stable kernel series snapshots"),
> - '2.6-tip': (latest_26_tip, "", "", 1,
> - "current stable kernel series tip"),
> - '2.6-mm': (latest_mm,
> - kernel_url + "/people/akpm/patches/" +
> - "%(tree)s/%(prebase)s/%(full)s/%(full)s.bz2", "",
> - 1, "Andrew Morton's -mm development tree"),
> - '2.6-tiny': (latest_dir,
> - "http://www.selenic.com/tiny/%(full)s.patch.bz2",
> - r'(2.6.*?).patch.bz2',
> - 1, "Matt Mackall's -tiny tree for small systems"),
> - '2.6-mjb': (latest_mjb,
> - kernel_url +
> "/people/mbligh/%(prebase)s/patch-%(full)s.bz2",
> - r'patch-(2.6.*?).bz2',
> - 1, "Martin Bligh's random collection 'o crap"),
> - '2.6-rt': (latest_dir,
> - ["http://people.redhat.com/mingo/" +
> - "realtime-preempt/patch-%(full)s",
> - "http://people.redhat.com/mingo/" +
> - "realtime-preempt/older/patch-%(full)s"],
> - r'patch-(2.6.*?)',
> - 0, "Ingo Molnar's realtime-preempt kernel"),
> - '2.6-ck': (latest_ck,
> - ["http://ck.kolivas.org/patches/2.6/" +
> - "%(prebase)s/%(full)s/patch-%(full)s.bz2",
> - "http://ck.kolivas.org/patches/2.6/pre-releases/" +
> - "%(prebase)s/%(full)s/patch-%(full)s.bz2"],
> - "", ".sig",
> - "Con Kolivas' patches for system responsiveness (desktop)"),
> - '2.6-cks': (latest_dir,
> - "http://ck.kolivas.org/patches/cks/patch-%(full)s.bz2",
> - r'patch-(2.6.*?).bz2', ".sig",
> - "Con Kolivas' patches for system responsiveness (server)")
> - }
> -
> -# Override defaults with ~/.ketchuprc which is just a Python script
> -rcpath = os.path.expanduser('~/.ketchuprc')
> -if os.path.isfile(rcpath):
> - try:
> - execfile(rcpath)
> - except Exception, e:
> - sys.exit('Failed parsing %s\nError was: %s' % (rcpath, e))
> -
> -# Add local trees
> -for k,v in local_trees.items():
> - version_info[k] = v
> -
> -# Environment variables override defaults and ketchuprc
> -kernel_url = os.environ.get("KETCHUP_URL", kernel_url)
> -archive = os.environ.get("KETCHUP_ARCH", archive)
> -
> -# And finally command line overrides everything
> -if not os.path.exists(wget): wget = ""
> -if not os.path.exists(gpg): gpg = ""
> -
> -options = {}
> -opts = [
> - ('a', 'archive', archive, 'cache directory'),
> - ('d', 'directory', '.', 'directory to update'),
> - ('f', 'full-tarball', None, 'if unpacking a tarball, download the
> latest'),
> - ('g', 'gpg-path', gpg, 'path for GnuPG'),
> - ('G', 'no-gpg', None, 'disable GPG signature verification'),
> - ('k', 'kernel-url', kernel_url, 'base url for kernel.org mirror'),
> - ('l', 'list-trees', None, 'list supported trees'),
> - ('m', 'show-makefile', None, 'output version in makefile <arg>'),
> - ('n', 'dry-run', None, 'don\'t download or apply patches'),
> - ('p', 'show-previous', None, 'output version previous to <arg>'),
> - ('q', 'quiet', None, 'reduce output'),
> - ('r', 'rename-directory', None, 'rename updated directory to %s<v>'
> - % rename_prefix),
> - ('s', 'show-latest', None, 'output the latest version of <arg>'),
> - ('u', 'show-url', None, 'output URL for <arg>'),
> - ('w', 'wget', wget, 'command to use for wget'),
> - ]
> -
> -args = fancyopts(sys.argv[1:], opts, options,
> - 'ketchup [options] [ver]')
> -
> -archive = options["archive"]
> -kernel_url = options["kernel-url"]
> -if options["no-gpg"]: options["gpg-path"] = ''
> -
> -# Process args
> -
> -if not os.path.exists(options["directory"]):
> - qprint("Creating target directory", options["directory"])
> - os.mkdir(options["directory"])
> -os.chdir(options["directory"])
> -
> -if os.path.isfile(".ketchuprc"):
> - try:
> - execfile(".ketchuprc")
> - except Exception, e:
> - sys.exit('Failed parsing .ketchuprc\nError was: %s' % (e))
> -
> -if options["list-trees"]:
> - l = version_info.keys()
> - l.sort()
> - for tree in l:
> - if version_info[tree][3] == 0:
> - lprint(tree, "(unsigned)")
> - else:
> - lprint(tree, "(signed)")
> - lprint(" " + version_info[tree][4])
> - sys.exit(0)
> -
> -if options["show-makefile"] and len(args) < 2:
> - if not args:
> - lprint(get_ver("Makefile"))
> - else:
> - lprint(get_ver(args[0]))
> - sys.exit(0)
> -
> -if len(args) == 0 and default_tree:
> - qprint("Using default tree \"%s\"" % (default_tree))
> - args.append(default_tree)
> -
> -if len(args) != 1:
> - error("No version given on command line and no default in configuration")
> - sys.exit(-1)
> -
> -if options["show-latest"]:
> - lprint(find_ver(args[0]))
> - sys.exit(0)
> -
> -if options["show-url"]:
> - lprint(version_urls(find_ver(args[0]))[0])
> - sys.exit(0)
> -
> -if options["show-previous"]:
> - v = find_ver(args[0])
> - p = prebase(v)
> - if p == v: p = base(v)
> - if p == v:
> - if rev(v) > 0: p = "%.1f.%s" % (tree(v), rev(v) -1)
> - else: p = "unknown"
> - lprint(p)
> - sys.exit(0)
> -
> -if not os.path.exists(options["archive"]):
> - qprint("Creating cache directory", options["archive"])
> - os.mkdir(options["archive"])
> -
> -if precommand and os.system(precommand):
> - sys.exit('Precommand "%s" failed!' % precommand)
> -
> -try:
> - a = get_ver('Makefile')
> -except:
> - a = None
> -
> -if not a and os.listdir("."):
> - error("Can't find kernel version for non-empty directory")
> - sys.exit(-1)
> -
> -b = find_ver(args[0])
> -qprint("%s -> %s" % (a, b))
> -transform(a, b)
> -if options["rename-directory"] and not options["dry-run"]:
> - rename_dir(b)
> -
> -if postcommand and os.system(postcommand):
> - sys.exit('Postcommand "%s" failed!' % postcommand)
> diff --git a/buildconfigs/mk.linux-2.6 b/buildconfigs/mk.linux-2.6
> deleted file mode 100644
> index 6b8d989..0000000
> --- a/buildconfigs/mk.linux-2.6
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -XEN_LINUX_SOURCE ?= tarball
> -LINUX_VER ?= 2.6
> -
> -IMAGE_TARGET ?= vmlinux bzImage
> -
> -XEN_LINUX_CONFIG_UPDATE := buildconfigs/enable-xen-config
> -
> -EXTRAVERSION ?=
> -
> -include buildconfigs/mk.linux-2.6-common
> diff --git a/buildconfigs/mk.linux-2.6-common
> b/buildconfigs/mk.linux-2.6-common
> deleted file mode 100644
> index e8e97fb..0000000
> --- a/buildconfigs/mk.linux-2.6-common
> +++ /dev/null
> @@ -1,154 +0,0 @@
> -LINUX_SERIES = 2.6
> -
> -# Linux search path, will be searched for tarballs and mercurial
> -# repositories.
> -LINUX_SRC_PATH ?= .:..
> -
> -# The source directory is not automatically updated to avoid blowing
> -# away developer's changes. If you want to automatically pull a new
> -# version of the Linux tree then add `XEN_LINUX_UPDATE=y' to your make
> -# command line.
> -ifeq ($(XEN_LINUX_UPDATE),y)
> -__XEN_LINUX_UPDATE = $(LINUX_SRCDIR)/.force-update
> -else
> -__XEN_LINUX_UPDATE =
> -endif
> -
> -ifeq ($(XEN_LINUX_NONINTERACTIVE_CONFIG),y)
> -__NONINT_CONFIG = yes $$'\n' |
> -else
> -__NONINT_CONFIG =
> -endif
> -
> -LINUX_DIR = build-linux-$(LINUX_VER)$(EXTRAVERSION)_$(XEN_TARGET_ARCH)
> -
> -IMAGE_TARGET ?= vmlinuz
> -
> -LINUX_VER3 := $(LINUX_SERIES).$(word 3, $(subst ., ,$(LINUX_VER)))
> -
> -.PHONY: _build
> -_build: build
> -
> --include buildconfigs/src.$(XEN_LINUX_SOURCE)
> -
> -LINUX_ARCH = $$(sh buildconfigs/select-linux-arch $(LINUX_SRCDIR))
> -IMAGE_PATH = $$(sh buildconfigs/select-linux-image $(LINUX_DIR)
> $(LINUX_ARCH) $(IMAGE_TARGET))
> -
> -INSTALL_BOOT_PATH := $(DESTDIR)/boot
> -
> -# Default to allowing interface mismatch
> -ifndef XEN_LINUX_ALLOW_INTERFACE_MISMATCH
> -XEN_LINUX_ALLOW_INTERFACE_MISMATCH := y
> -endif
> -
> -KERNELRELEASE = $(shell $(MAKE) -s --no-print-directory -C $(LINUX_DIR)
> kernelrelease)
> -
> -# The real action starts here!
> -.PHONY: build
> -build: $(LINUX_DIR)/include/linux/autoconf.h
> -ifneq ($(XEN_LINUX_ALLOW_INTERFACE_MISMATCH),y)
> - @if ! diff -urN -X buildconfigs/interface.exclude \
> - $(LINUX_SRCDIR)/include/xen/interface xen/include/public ;
> then \
> - echo "" 1>&2 ; \
> - echo " *** $(LINUX_SRCDIR)/include/xen/interface is out of date
> " 1>&2 ; \
> - echo " *** relative to $(XEN_ROOT)/xen/include/public." 1>&2 ; \
> - echo "" 1>&2 ; \
> - exit 1 ; \
> - fi
> -endif
> - if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
> - $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) modules || exit 1 ; \
> - $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH)
> INSTALL_MOD_PATH=$(DESTDIR) modules_install ; \
> - fi
> - $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR)
> $(IMAGE_TARGET)
> - mkdir -p $(INSTALL_BOOT_PATH)
> - @cp -v $(IMAGE_PATH) $(INSTALL_BOOT_PATH)/vmlinuz-$(KERNELRELEASE)
> - @cp -v $(LINUX_DIR)/.config $(INSTALL_BOOT_PATH)/config-$(KERNELRELEASE)
> - @cp -v $(LINUX_DIR)/System.map
> $(INSTALL_BOOT_PATH)/System.map-$(KERNELRELEASE)
> -
> -$(LINUX_DIR)/include/linux/autoconf.h:
> CONFIG_FILE=$(CURDIR)/$(LINUX_DIR)/.config
> -$(LINUX_DIR)/include/linux/autoconf.h: $(LINUX_SRCDIR)/.valid-src
> - rm -rf $(LINUX_DIR)
> - mkdir -p $(LINUX_DIR)
> - # Re-use config from install dir if one exists. Next try to use
> - # buildconfigs/create_config.sh is one is provided by the source
> - # tree. Finally attempt to use make defconfig.
> - set -e ; \
> - CONFIG_VERSION=$$(sed -ne 's/$$(XENGUEST)//; s/^EXTRAVERSION = //p'
> $(LINUX_SRCDIR)/Makefile); \
> - if [ ! -z "$(XEN_LINUX_CONFIG)" -a -r "$(XEN_LINUX_CONFIG)" ]; then \
> - cp $(XEN_LINUX_CONFIG) $(CONFIG_FILE); \
> - elif [ -r
> $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION$(EXTRAVERSION) ] ; then \
> - cp
> $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION$(EXTRAVERSION)
> $(CONFIG_FILE) ; \
> - elif [ -e $(LINUX_SRCDIR)/buildconfigs/create_config.sh ] ; then \
> - cd $(LINUX_SRCDIR) && sh buildconfigs/create_config.sh \
> - $(CONFIG_FILE) $(EXTRAVERSION) $(XEN_TARGET_ARCH)
> $(XEN_SYSTYPE) ; \
> - echo "Configured $(LINUX_DIR) using create_config.sh" ; \
> - elif $(MAKE) -C $(LINUX_SRCDIR) ARCH=$(LINUX_ARCH) defconfig
> O=$$(/bin/pwd)/$(LINUX_DIR) ; then \
> - echo "Configured $(LINUX_DIR) using defconfig" ; \
> - else \
> - echo "No configuration method found for this kernel" ; \
> - fi
> -ifneq ($(XEN_LINUX_CONFIG_UPDATE),)
> - echo "Updating $(CONFIG_FILE) using $(XEN_LINUX_CONFIG_UPDATE)"
> - sh $(XEN_LINUX_CONFIG_UPDATE) $(CONFIG_FILE)
> -endif
> -ifeq ($(XEN_TARGET_ARCH),x86_32)
> - sed -e 's!^CONFIG_HIGHMEM4G=y$$!\# CONFIG_HIGHMEM4G is not set!;s!^\#
> CONFIG_HIGHMEM64G is not set$$!CONFIG_HIGHMEM64G=y!' $(CONFIG_FILE) >
> $(CONFIG_FILE)- && mv $(CONFIG_FILE)- $(CONFIG_FILE)
> -endif
> -ifneq ($(EXTRAVERSION),)
> - echo "$(EXTRAVERSION)" >$(LINUX_DIR)/localversion-xen
> -endif
> - $(__NONINT_CONFIG) $(MAKE) -C $(LINUX_SRCDIR) ARCH=$(LINUX_ARCH)
> oldconfig O=$$(/bin/pwd)/$(LINUX_DIR)
> - @set -e ; if [ ! -f $(LINUX_DIR)/Makefile ] ; then \
> - echo "==================================="; \
> - echo "oldconfig did not create a Makefile"; \
> - echo "Generating $(LINUX_DIR)/Makefile "; \
> - echo "==================================="; \
> - ( echo "# Automatically generated: don't edit"; \
> - echo ""; \
> - echo "VERSION = 2"; \
> - echo "PATCHLEVEL = 6"; \
> - echo ""; \
> - echo "KERNELSRC := $(CURDIR)/$(LINUX_SRCDIR)"; \
> - echo "KERNELOUTPUT := $(CURDIR)/$(LINUX_DIR)"; \
> - echo ""; \
> - echo "MAKEFLAGS += --no-print-directory"; \
> - echo ""; \
> - echo ".PHONY: all \$$(MAKECMDGOALS)"; \
> - echo ""; \
> - echo "all:"; \
> - echo " \$$(MAKE) -C \$$(KERNELSRC) O=\$$(KERNELOUTPUT)"; \
> - echo ""; \
> - echo "Makefile:;"; \
> - echo ""; \
> - echo "\$$(filter-out all Makefile,\$$(MAKECMDGOALS)) %/:"; \
> - echo " \$$(MAKE) -C \$$(KERNELSRC) O=\$$(KERNELOUTPUT) \$$@"; \
> - ) > $(LINUX_DIR)/Makefile ; \
> - fi
> - $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) prepare
> -
> -.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::
> - [ ! -d $(LINUX_DIR) ] || \
> - $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean
> -
> -.PHONY: delete
> -delete:
> - rm -rf tmp-linux-$(LINUX_VER) $(LINUX_DIR) $(LINUX_SRCDIR)
> -
> -.PHONY: mrproper
> -mrproper:
> - rm -rf $(LINUX_SRCDIR)
> - rm -f linux-$(LINUX_VER).tar.bz2
> -
> -.PHONY: $(LINUX_SRCDIR)/.force-update
> -$(LINUX_SRCDIR)/.force-update:
> - @ :
> diff --git a/buildconfigs/mk.linux-2.6-git b/buildconfigs/mk.linux-2.6-git
> deleted file mode 100644
> index 1a142dd..0000000
> --- a/buildconfigs/mk.linux-2.6-git
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -LINUX_VER ?= 2.6-git
> -include buildconfigs/mk.linux-2.6
> diff --git a/buildconfigs/mk.linux-2.6-mm b/buildconfigs/mk.linux-2.6-mm
> deleted file mode 100644
> index f02e864..0000000
> --- a/buildconfigs/mk.linux-2.6-mm
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -LINUX_VER ?= 2.6-mm
> -include buildconfigs/mk.linux-2.6
> diff --git a/buildconfigs/mk.linux-2.6-native
> b/buildconfigs/mk.linux-2.6-native
> deleted file mode 100644
> index c7c0949..0000000
> --- a/buildconfigs/mk.linux-2.6-native
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -EXTRAVERSION = -native
> -IMAGE_TARGET = bzImage
> -INSTALL_BOOT_PATH = $(DESTDIR)/boot
> -
> -include buildconfigs/mk.linux-2.6-common
> diff --git a/buildconfigs/mk.linux-2.6-pvops b/buildconfigs/mk.linux-2.6-pvops
> deleted file mode 100644
> index 59cae79..0000000
> --- a/buildconfigs/mk.linux-2.6-pvops
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -XEN_LINUX_SOURCE ?= git-clone
> -LINUX_VER ?= 2.6-pvops
> -
> -IMAGE_TARGET ?= bzImage
> -
> -XEN_LINUX_CONFIG_UPDATE := buildconfigs/enable-xen-config
> -
> -ifeq ($(GIT_HTTP),y)
> -XEN_LINUX_GIT_URL ?=
> http://www.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git
> -else
> -XEN_LINUX_GIT_URL ?=
> git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git
> -endif
> -XEN_LINUX_GIT_REMOTEBRANCH ?= xen/stable-2.6.32.x
> -
> -EXTRAVERSION ?=
> -
> -include buildconfigs/mk.linux-2.6-common
> diff --git a/buildconfigs/mk.linux-2.6-rc b/buildconfigs/mk.linux-2.6-rc
> deleted file mode 100644
> index 34f4513..0000000
> --- a/buildconfigs/mk.linux-2.6-rc
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -LINUX_VER ?= 2.6-rc
> -include buildconfigs/mk.linux-2.6
> diff --git a/buildconfigs/mk.linux-2.6-tip b/buildconfigs/mk.linux-2.6-tip
> deleted file mode 100644
> index 0588ad2..0000000
> --- a/buildconfigs/mk.linux-2.6-tip
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -LINUX_VER ?= 2.6-tip
> -include buildconfigs/mk.linux-2.6
> diff --git a/buildconfigs/mk.linux-2.6-tip-latest
> b/buildconfigs/mk.linux-2.6-tip-latest
> deleted file mode 100644
> index 2a0b9af..0000000
> --- a/buildconfigs/mk.linux-2.6-tip-latest
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -XEN_LINUX_SOURCE ?= git-clone
> -LINUX_VER ?= 2.6-x86-latest
> -
> -IMAGE_TARGET ?= bzImage vmlinux
> -
> -XEN_LINUX_CONFIG_UPDATE := buildconfigs/enable-xen-config
> -
> -ifeq ($(GIT_HTTP),y)
> -XEN_LINUX_GIT_URL ?=
> http://www.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip.git
> -else
> -XEN_LINUX_GIT_URL ?=
> git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip.git
> -endif
> -XEN_LINUX_GIT_REMOTEBRANCH ?= auto-latest
> -
> -EXTRAVERSION ?=
> -
> -include buildconfigs/mk.linux-2.6-common
> diff --git a/buildconfigs/mk.linux-2.6-xen b/buildconfigs/mk.linux-2.6-xen
> deleted file mode 100644
> index 8594b55..0000000
> --- a/buildconfigs/mk.linux-2.6-xen
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -EXTRAVERSION ?= -xen
> -LINUX_VER ?= 2.6.18
> -
> -XEN_LINUX_SOURCE ?= hg-clone
> -
> -include buildconfigs/mk.linux-2.6-common
> diff --git a/buildconfigs/mk.linux-2.6-xen0 b/buildconfigs/mk.linux-2.6-xen0
> deleted file mode 100644
> index 96a5712..0000000
> --- a/buildconfigs/mk.linux-2.6-xen0
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -EXTRAVERSION = -xen0
> -include buildconfigs/mk.linux-2.6-xen
> diff --git a/buildconfigs/mk.linux-2.6-xenU b/buildconfigs/mk.linux-2.6-xenU
> deleted file mode 100644
> index 02f3e07..0000000
> --- a/buildconfigs/mk.linux-2.6-xenU
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -EXTRAVERSION = -xenU
> -include buildconfigs/mk.linux-2.6-xen
> diff --git a/buildconfigs/select-linux-arch b/buildconfigs/select-linux-arch
> deleted file mode 100755
> index a5d0856..0000000
> --- a/buildconfigs/select-linux-arch
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -#!/bin/sh
> -
> -ME=$(basename $0)
> -
> -if [ $# -lt 1 ] || [ $# -gt 2 ] ; then
> - echo "usage: $ME <linux-build-directory>" 1>&2
> - exit 1;
> -fi
> -
> -LINUX_DIR=$1
> -
> -case ${XEN_TARGET_ARCH} in
> - x86_32|x86_64)
> - if [ -d ${LINUX_DIR}/arch/x86 ] ; then
> - ARCH=x86
> - elif [ "${XEN_TARGET_ARCH}" = "x86_32" ] ; then
> - ARCH=i386
> - else
> - ARCH=x86_64
> - fi
> - ;;
> - *)
> - ARCH=${XEN_TARGET_ARCH}
> - ;;
> -esac
> -
> -echo "$ME: ${ARCH}" 1>&2
> -echo ${ARCH}
> -
> -exit 0
> diff --git a/buildconfigs/select-linux-image b/buildconfigs/select-linux-image
> deleted file mode 100755
> index 07899f8..0000000
> --- a/buildconfigs/select-linux-image
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -#!/bin/sh
> -
> -ME=$(basename $0)
> -
> -if [ $# -lt 3 ] ; then
> - echo "usage: $ME <linux-build-directory> <linux-arch>
> <linux-targets...>" 1>&2
> - exit 1;
> -fi
> -
> -LINUX_DIR=$1
> -LINUX_ARCH=$2
> -LINUX_TARGET=$3 # We don't care about second and subsequent targets
> -
> -case ${XEN_TARGET_ARCH} in
> - ia64)
> - IMAGE=${LINUX_DIR}/arch/ia64/hp/sim/boot/vmlinux.gz
> - ;;
> - *)
> - if [ -f ${LINUX_DIR}/arch/${LINUX_ARCH}/boot/${LINUX_TARGET} ] ; then
> - IMAGE=${LINUX_DIR}/arch/${LINUX_ARCH}/boot/${LINUX_TARGET}
> - elif [ -f ${LINUX_DIR}/${LINUX_TARGET} ] ; then
> - IMAGE=${LINUX_DIR}/${LINUX_TARGET}
> - else
> - echo "$ME: cannot determine Linux image to use for ${LINUX_ARCH} in
> ${LINUX_DIR}" 1>&2
> - exit 1
> - fi
> - ;;
> -esac
> -
> -echo "$ME: ${IMAGE}" 1>&2
> -echo ${IMAGE}
> -
> -exit 0
> diff --git a/buildconfigs/select-repository b/buildconfigs/select-repository
> deleted file mode 100755
> index 48ae00f..0000000
> --- a/buildconfigs/select-repository
> +++ /dev/null
> @@ -1,69 +0,0 @@
> -#!/bin/sh
> -
> -ME=$(basename $0)
> -
> -if [ $# -lt 1 ] || [ $# -gt 2 ] ; then
> - echo "usage: $ME <repository-name> [search-path]" 1>&2
> - exit 1;
> -fi
> -
> -REPO=$1
> -LINUX_SRC_PATH=$2
> -
> -if [ X"${LINUX_SRC_PATH}" != X ] ; then
> - echo "$ME: Searching \`${LINUX_SRC_PATH}' for $REPO" 1>&2
> - IFS_saved="$IFS"
> - IFS=:
> - for i in $LINUX_SRC_PATH ; do
> - # Ignore current directory since we will almost certainly find
> - # the target directory there which breaks updating (there's no
> - # point updating from yourself!).
> - if [ X"." = X"${i}" ] ; then
> - echo "$ME: Ignoring \`.'" 1>&2
> - continue
> - fi
> -
> - if [ -d "$i/$REPO/.hg" ] ; then
> - echo "$ME: Found $i/$REPO" 1>&2
> - echo "$i/$REPO"
> - exit 0
> - fi
> - done
> - IFS="$IFS_saved"
> -fi
> -
> -if [ -d ${XEN_ROOT}/.hgxxx ] ; then
> - XEN=$(hg -R ${XEN_ROOT} path default)
> - if [ $? -ne 0 ] || [ X"$XEN" = "X" ] ; then
> - echo "$ME: Unable to determine Xen repository parent." 1>&2
> - exit 1;
> - fi
> -
> - BASE=$(dirname ${XEN})
> - if [ $? -ne 0 ] || [ X"$BASE" = "X" ] ; then
> - echo "$ME: Unable to determine Xen repository base." 1>&2
> - exit 1;
> - fi
> - if [ -d "$XEN" ] && [ ! -d "$BASE/$REPO" ] ; then
> - echo "$ME: No such dir: $BASE/$REPO" 1>&2
> - exit 1
> - fi
> -
> - echo "$ME: Found ${BASE}/${REPO}" 1>&2
> -
> - # If ${BASE}/${REPO} is a local directory then prepend file:// so that
> - # the test in src.hg-clone will fail and we will clone instead of
> - # linking this repository. We only want to link repositories which
> - # were found via LINUX_SRC_PATH.
> - if [ -d "${BASE}/${REPO}" ] ; then
> - echo "file://${BASE}/${REPO}"
> - else
> - echo ${BASE}/${REPO}
> - fi
> -else
> - echo "Unable to determine path to Linux source tree." 1>&2
> - echo "Falling back to linux-2.6.18-xen Mercurial repository." 1>&2
> - echo http://xenbits.xen.org/linux-2.6.18-xen.hg
> -fi
> -
> -exit 0
> diff --git a/buildconfigs/src.git-clone b/buildconfigs/src.git-clone
> deleted file mode 100644
> index 35865e1..0000000
> --- a/buildconfigs/src.git-clone
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -# Mercurial
> -GIT ?= git
> -
> -LINUX_SRCDIR ?= linux-$(LINUX_VER).git
> -
> -# The URL of the remote GIT repository
> -ifeq ($(XEN_LINUX_GIT_URL),)
> -.ERROR: XEN_LINUX_GIT_URL not specified
> -endif
> -
> -# The branch in the remote repository
> -ifeq ($(XEN_LINUX_GIT_REMOTEBRANCH),)
> -.ERROR: XEN_LINUX_GIT_REMOTEBRANCH not specified
> -endif
> -
> -XEN_GIT_ORIGIN ?= xen
> -
> -XEN_LINUX_GIT_LOCALBRANCH ?= $(XEN_LINUX_GIT_REMOTEBRANCH)
> -
> -# Set XEN_LINUX_GITREV to update to a particlar revision.
> -XEN_LINUX_GITREV ?= $(XEN_GIT_ORIGIN)/$(XEN_LINUX_GIT_REMOTEBRANCH)
> -
> -$(LINUX_SRCDIR)/.valid-src: $(__XEN_LINUX_UPDATE)
> - set -ex; \
> - if ! [ -d $(LINUX_SRCDIR) ]; then \
> - rm -rf $(LINUX_SRCDIR) $(LINUX_SRCDIR).tmp; \
> - mkdir $(LINUX_SRCDIR).tmp; rmdir $(LINUX_SRCDIR).tmp; \
> - $(GIT) clone -o $(XEN_GIT_ORIGIN) -n $(XEN_LINUX_GIT_URL)
> $(LINUX_SRCDIR).tmp; \
> - (cd $(LINUX_SRCDIR).tmp; git checkout -b
> $(XEN_LINUX_GIT_LOCALBRANCH) $(XEN_LINUX_GITREV) ); \
> - mv $(LINUX_SRCDIR).tmp $(LINUX_SRCDIR); \
> - fi
> - touch $@
> diff --git a/buildconfigs/src.hg-clone b/buildconfigs/src.hg-clone
> deleted file mode 100644
> index 0586bc8..0000000
> --- a/buildconfigs/src.hg-clone
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -# Mercurial
> -HG ?= hg
> -
> -LINUX_SRCDIR ?= linux-$(LINUX_VER)-xen.hg
> -
> -# Repository to clone.
> -XEN_LINUX_HGREPO ?= $$(sh buildconfigs/select-repository $(LINUX_SRCDIR)
> $(LINUX_SRC_PATH))
> -
> -# Set XEN_LINUX_HGREV to update to a particlar revision.
> -XEN_LINUX_HGREV ?= tip
> -
> -$(LINUX_SRCDIR)/.valid-src: $(__XEN_LINUX_UPDATE)
> - set -e ; \
> - if [ ! -e $(LINUX_SRCDIR)/.hg ] ; then \
> - __repo=$(XEN_LINUX_HGREPO) ; \
> - if [ -d $${__repo} ] ; then \
> - echo "Linking $${__repo} to $(LINUX_SRCDIR)." ; \
> - ln -s $${__repo} $(LINUX_SRCDIR) ; \
> - else \
> - echo "Cloning $${__repo} to $(LINUX_SRCDIR)." ; \
> - $(HG) clone $${__repo#file://} $(LINUX_SRCDIR) ; \
> - fi ; \
> - else \
> - __parent=$$($(HG) -R $(LINUX_SRCDIR) path default) ; \
> - echo "Pulling changes from $${__parent} into $(LINUX_SRCDIR)." ; \
> - $(HG) -R $(LINUX_SRCDIR) pull $${__parent} ; \
> - fi
> - set -e ; if [ -n "$(XEN_LINUX_HGREV)" ] ; then \
> - echo "Updating $(LINUX_SRCDIR) to revision $(XEN_LINUX_HGREV)." ; \
> - ( cd $(LINUX_SRCDIR) && $(HG) update $(XEN_LINUX_HGREV) ); \
> - fi
> - touch $@
> diff --git a/buildconfigs/src.tarball b/buildconfigs/src.tarball
> deleted file mode 100644
> index 2101e1a..0000000
> --- a/buildconfigs/src.tarball
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -XEN_LINUX_MIRROR ?= http://www.kernel.org/pub/linux/kernel/v2.6/
> -XEN_LINUX_TARBALL ?= linux-$(LINUX_VER)-xen.tar.bz2
> -
> -LINUX_SRCDIR ?= linux-$(LINUX_VER)
> -
> -KETCHUP ?= python buildconfigs/ketchup
> -
> -vpath linux-%.tar.bz2 $(LINUX_SRC_PATH)
> -
> -# download a pristine Linux kernel tarball if there isn't one in
> LINUX_SRC_PATH
> -linux-%.tar.bz2:
> - @echo "Cannot find $@ in path $(LINUX_SRC_PATH)"
> - false wget $(XEN_LINUX_MIRROR)/$@ -O./$@
> -
> -# XXX create a pristine tree for diff -Nurp convenience
> -
> -%/.valid-src: $(__XEN_LINUX_UPDATE)
> - $(KETCHUP) -d $(@D) $(LINUX_VER)
> - touch $@ # update timestamp to avoid rebuild
> diff --git a/config/Linux.mk b/config/Linux.mk
> index 10d84af..b421a1c 100644
> --- a/config/Linux.mk
> +++ b/config/Linux.mk
> @@ -1,8 +1 @@
> include $(XEN_ROOT)/config/StdGNU.mk
> -
> -# You may use wildcards, e.g. KERNELS=*2.6*
> -KERNELS ?=
> -
> -XKERNELS := $(foreach kernel, $(KERNELS), \
> - $(patsubst buildconfigs/mk.%,%, \
> - $(wildcard buildconfigs/mk.$(kernel))) )
> diff --git a/configure b/configure
> index c2c724a..d5c8500 100755
> --- a/configure
> +++ b/configure
> @@ -592,7 +592,6 @@ SUBSYSTEMS
> docs
> stubdom
> tools
> -kernels
> xen
> subdirs
> host_os
> @@ -645,7 +644,6 @@ ac_subst_files=''
> ac_user_opts='
> enable_option_checking
> enable_xen
> -enable_kernels
> enable_tools
> enable_stubdom
> enable_docs
> @@ -654,7 +652,6 @@ enable_docs
> host_alias
> target_alias'
> ac_subdirs_all='xen
> -kernels
> tools
> stubdom
> docs'
> @@ -1271,7 +1268,6 @@ Optional Features:
> --disable-FEATURE do not include FEATURE (same as
> --enable-FEATURE=no)
> --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
> --disable-xen Disable build and install of xen
> - --disable-kernels Disable build and install of kernels
> --disable-tools Disable build and install of tools
> --enable-stubdom Enable build and install of stubdom
> --disable-docs Disable build and install of docs
> @@ -1891,52 +1887,6 @@ fi
>
>
>
> -# Check whether --enable-kernels was given.
> -if test "${enable_kernels+set}" = set; then :
> - enableval=$enable_kernels;
> -
> -if test "x$enableval" = "xyes"; then :
> -
> -
> -kernels=y
> -SUBSYSTEMS="$SUBSYSTEMS kernels"
> -
> -
> -else
> -
> -if test "x$enableval" = "xno"; then :
> -
> -
> -kernels=n
> -
> -
> -fi
> -
> -fi
> -
> -
> -else
> -
> -
> -kernels=y
> -SUBSYSTEMS="$SUBSYSTEMS kernels"
> -
> -
> -fi
> -
> -
> -if test -e "kernels/configure"; then :
> -
> -if test "x$kernels" = "xy" || test "x$kernels" = "x" ; then
> - subdirs="$subdirs kernels"
> -
> -fi
> -
> -fi
> -
> -
> -
> -
> # Check whether --enable-tools was given.
> if test "${enable_tools+set}" = set; then :
> enableval=$enable_tools;
> diff --git a/configure.ac b/configure.ac
> index ce06dad..6c14524 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -23,7 +23,6 @@ case "$host_cpu" in
> esac
>
> AX_SUBSYSTEM_DEFAULT_ENABLE([xen])
> -AX_SUBSYSTEM_DEFAULT_ENABLE([kernels])
> AX_SUBSYSTEM_DEFAULT_ENABLE([tools])
> AX_SUBSYSTEM_CONDITIONAL([stubdom], $arch_enable_stubdom)
> AX_SUBSYSTEM_DEFAULT_ENABLE([docs])
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |