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

[Xen-devel] Improve build system for offline environments


  • To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Mathieu Tarral <mathieu.tarral@xxxxxxxxxxxxxx>
  • Date: Fri, 03 May 2019 12:29:55 +0000
  • Delivery-date: Fri, 03 May 2019 12:30:25 +0000
  • Feedback-id: 7ARND6YmrAEqSXE0j3TLm6ZqYiFFaDDEkO_KW8fTUEW0kYwGM1KEsuPxEPVWH5YuEnR43INtqwIKH-usvnxVQQ==:Ext:ProtonMail
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi,

As stated by the documentation:
"_Xen Project downloads various dependencies at build time_"

This makes Xen a difficult project to work with in an offline environment.

Thanks to the IRC channel, I heard of the command
`make subtree-force-update-all`
(We could document this option in the wiki "Compiling Xen From Source")

However, the overall process stays problematic:

1. the target 'subtree-force-update-all' implies that you can run a ./configure,
otherwise you will get the following error:

make[1]: Entering directory '~/xen/tools/'
~/xen/tools/../tools/Rules.mk:258: *** You have to run ./configure before 
building or installing the tools. Stop.

This is sometimes not possible because you are in a download-oriented
and locked environment, and therefore lack the system dependencies required for 
the configure.

Also you don't have the root privileges to install them.

2. the download of external dependencies remains incomplete and the
qemu-xen-dir build will fail since the submodules
have not been checked out (dtc, capstone, etc...)

make: Entering directory '~/xen/tools/qemu-xen-build'
  GEN     config-host.h
  GIT     ui/keycodemapdb dtc
Cloning into '~/xen/tools/qemu-xen-dir-remote/dtc'...
fatal: Unable to look up git.qemu-project.org (port 9418) (Name or service not 
known)


3. it becomes impossible to clean the sources in order to rebuild them,
since the Makefile will remove the external dependencies via the `make clean` 
target.
So using the `make world` target is excluded.

This is why I would like to start a discussion on how to
improve the situation for those working in an air-gapped network environment.

I would suggest to track the dependencies via submodules,
and fully clone the Xen repository will become as simple as
`git clone git://xenbits.xen.org/xen.git --recursive`

One of the advantages is that you can `clean` the sources without removing the 
external dependencies, since they are part of the repo now.

-> How do you think we can improve the build system to be more "offline 
environment" friendly ?
-> How much of these external files could be installed via the distribution, 
and linked with Xen instead of downloading a .tar.gz source ?
For example I have newlib-dev in my debian repositories.
Do I really have to download the one from Xen mirrors ?

Thanks

Mathieu Tarral


Sent with ProtonMail Secure Email.



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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