[Buildroot] [PATCH v3] Add Xen 4.6

Alistair Francis alistair.francis at xilinx.com
Mon Jun 13 16:25:55 UTC 2016


On Sun, Jun 12, 2016 at 12:10 PM, Thomas Petazzoni
<thomas.petazzoni at free-electrons.com> wrote:
> Hello,
>
> On Thu, 12 May 2016 15:13:01 -0700, Alistair Francis wrote:
>> Add support to compile Xen 4.6 and Xen tools for arm32 and arm64
>> targets.
>>
>> Signed-off-by: Alistair Francis <alistair.francis at xilinx.com>
>
> Thanks a lot! I've applied your patch, with a number of changes, see
> below for the details!

Thanks so much!

Sorry there were still so many changes you had to make, but thanks for
merging it.

Thanks,

Alistair

>
>> diff --git a/package/xen/Config.in b/package/xen/Config.in
>> new file mode 100644
>> index 0000000..52d185c
>> --- /dev/null
>> +++ b/package/xen/Config.in
>> @@ -0,0 +1,42 @@
>> +config BR2_PACKAGE_XEN
>> +     bool "xen"
>> +     # Xen in buildroot only supports these architectures
>> +     depends on BR2_arm || BR2_aarch64
>
> In fact, BR2_arm is not good enough: Xen uses the dmb instruction for
> memory barriers, so I've restricted the package to ARMv7.
>
>> +     depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
>> +     depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
>> +     depends on BR2_USE_WCHAR # libglib2, util-linux
>> +     select BR2_PACKAGE_LIBAIO
>> +     select BR2_PACKAGE_LIBGLIB2
>> +     select BR2_PACKAGE_NCURSES
>> +     select BR2_PACKAGE_OPENSSL
>> +     select BR2_PACKAGE_PIXMAN
>> +     select BR2_PACKAGE_YAJL
>
> None of these dependencies are needed for the hypervisor, they are only
> needed for the tools. So I've moved all of this under the tools
> sub-option.
>
> Also, since I believe building with both the hypervisor and the tools
> disabled doesn't make much sense, I've added here:
>
>         select BR2_PACKAGE_XEN_HYPERVISOR if !BR2_PACKAGE_XEN_TOOLS
>
>> +if BR2_PACKAGE_XEN
>> +
>> +config BR2_PACKAGE_XEN_HYPERVISOR
>> +     bool "Build the Xen hypervisor"
>> +     default y
>> +     help
>> +       The Xen binaries are avaliable in /usr/lib/xen/
>> +       See http://wiki.xenproject.org/wiki/Getting_Started for using the
>> +       Xen hypervisor.
>> +
>> +config BR2_PACKAGE_XEN_TOOLS
>> +     bool "Build the Xen tools"
>> +     depends on !BR2_STATIC_LIBS # dtc (libfdt)
>> +     select BR2_PACKAGE_DTC
>> +     select BR2_PACKAGE_UTIL_LINUX
>> +     select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>> +     select BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC
>
> So here we have a lot more dependencies (all the ones you originally
> had on the main Xen option).
>
>
>> +ifeq ($(BR2_PACKAGE_XEN_HYPERVISOR),y)
>> +XEN_INSTALL_IMAGES = YES
>
> I've grouped this under the BR2_PACKAGE_XEN_HYPERVISOR conditional
> below.
>
>> +endif
>> +
>> +XEN_DEPENDENCIES += libaio libglib2 ncurses openssl pixman yajl
>
> This is now under the BR2_PACKAGE_XEN_TOOLS option.
>
>> +
>> +XEN_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR)
>
> Since you're not installing anything to the target when only the
> Hypervisor is enabled, I've simply added XEN_INSTALL_TARGET = NO in the
> hypervisor case, and moved this under the tools condition.
>
>> +XEN_ARCH=$(ARCH)
>
> Not needed, since the only architectures you support are ARM and
> AArch64, so the below conditions were sufficient.
>
>> +
>> +# Overwrite some architectures to match what Xen expects
>> +ifeq ($(ARCH),aarch64)
>> +XEN_ARCH="arm64"
>
> Quotes not needed.
>
>> +endif
>> +ifeq ($(ARCH),arm)
>
> else ifeq is better here.
>
>> +XEN_ARCH="arm32"
>
> Quotes not needed.
>
>> +endif
>> +
>> +XEN_CONF_OPTS += --disable-ocamltools
>> +XEN_MAKE_ENV += XEN_TARGET_ARCH=$(XEN_ARCH) CROSS_COMPILE=$(TARGET_CROSS) $(TARGET_CONFIGURE_OPTS)
>> +
>> +ifeq ($(BR2_PACKAGE_XEN_HYPERVISOR),y)
>> +XEN_MAKE_OPTS += dist-xen
>> +
>> +define XEN_INSTALL_IMAGES_CMDS
>> +     cp $(@D)/xen/xen $(BINARIES_DIR)
>> +endef
>> +else
>> +XEN_CONF_OPTS += --disable-xen
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_XEN_TOOLS),y)
>> +XEN_DEPENDENCIES += dtc util-linux
>
> I've added many more dependencies here.
>
>> +XEN_INSTALL_TARGET_OPTS += install-tools
>> +XEN_MAKE_OPTS += dist-tools
>> +
>> +define XEN_INSTALL_INIT_SYSV
>> +     mv $(TARGET_DIR)/etc/init.d/xencommons $(TARGET_DIR)/etc/init.d/S50xencommons
>> +     mv $(TARGET_DIR)/etc/init.d/xen-watchdog $(TARGET_DIR)/etc/init.d/S50xen-watchdog
>> +     mv $(TARGET_DIR)/etc/init.d/xendomains $(TARGET_DIR)/etc/init.d/S60xendomains
>> +endef
>> +else
>> +XEN_CONF_OPTS += --disable-tools
>> +endif
>> +
>> +$(eval $(autotools-package))
>
> See https://git.buildroot.org/buildroot/log for the final commit.
>
> Thanks!
>
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com



More information about the buildroot mailing list