![]() oe-go-mod-autogen.py is a helper script for go mod recipes. It follows Bruce's initiative about how to deal with go mod recipes in OE. Example: cmd: <path_to>/meta-virtualization/scripts/oe-go-mod-autogen.py \ --repo https://github.com/docker/compose --rev v2.20.3 output: src_uri.inc, relocation.inc, modules.txt Copy these three generated files to replace the original ones, then we only need update PV and SRCREV, and docker-compose is upgraded. Below are some technical details. * get module's repo from module name This script checks the following two URLs to determine the module's repo. 1. https://<module_name_tweaked>?=go-get=1 2. https://pkg.go.dev/<module_name_tweaked> The module_name_tweaked is derived from module_name, with the last components removed one by one. Let me use two examples to explain this. For module_name sigs.k8s.io/json, the sigs.k8s.io/json is first used as module_name_tweaked for searching. And we can correctly get the repo URL, so the search stops. For module_name github.com/k3s-io/etcd/api/v3, the following ones are used as module_name_tweaked: github.com/k3s-io/etcd/api/v3 github.com/k3s-io/etcd/api github.com/k3s-io/etcd And when searching 'github.com/k3s-io/etcd', we get the repo URL, so the search stops. * determine the srcdir:destdir mapping in 'vendor' creation To correctly form the 'vendor' directory, the mapping is critical. This script makes use of tag matching and path matching to determine the subpath in the repo for the module. * avoid subpath being overriden by parent path We need to avoid subpath being overriden by parent path. This is needed for both SRC_URI ordering in src_uri.inc and the sites mapping ordering in relocation.inc. This script simply uses the length as the ordering key, simply for the reason that if a path is a subpath of another path, it must be longer. * the .git suffix is removed to sync with each other Unlike normal recipes, go mod recipe usually have many SRC_URIs. This script remove the '.git' suffix from repo URL so that the repo URLs are in sync with each. * basic directory hierarchy and caching mechanism <cwd>/repos: hold the repos downloaded and checked <cwd>/wget-contents: hold the contents to determine the module's repo <cwd>/wget-contents/<module_name>.repo_url.cache: the repo value cache This is to avoid unnecessary URL fetching and repo cloning. * the ERROR_OUT_ON_FETCH_AND_CHECKOUT_FAILURE switch in script The script must get the correct repo_url, fullsrc_rev and subpath for each required module in go.mod to correctly generate the src_uri.inc and relocation.inc files. If this process fails for any required module, this script stop immediately, as I deliberately set ERROR_OUT_ON_FETCH_AND_CHECKOUT_FAILURE to True in this script. The purpose is to encourage people to report problems to meta-virt so that we can improve this script according to these feedbacks. But this variable can set to False, then the script only records the failed modules in self.modules_unhandled with reasons added, people can modify the generated src_uri.inc and relocation.inc to manually handle these unhandled modules if they are urgent to add/upgrade some go mod recipes. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> |
||
---|---|---|
classes | ||
conf | ||
docs | ||
dynamic-layers | ||
files | ||
lib/oeqa/runtime/cases | ||
recipes-containers | ||
recipes-core | ||
recipes-demo | ||
recipes-devtools | ||
recipes-extended | ||
recipes-graphics/xorg-xserver | ||
recipes-kernel | ||
recipes-networking | ||
scripts | ||
wic | ||
.gitignore | ||
COPYING.MIT | ||
MAINTAINERS | ||
meta-virt-roadmap.txt | ||
README |
meta-virtualization
This layer provides support for building Xen, KVM, Libvirt, and associated packages necessary for constructing OE-based virtualized solutions.
The bbappend files for some recipes (e.g. linux-yocto) in this layer need to have 'virtualization' in DISTRO_FEATURES to have effect. To enable them, add in configuration file the following line.
DISTRO_FEATURES:append = " virtualization"
If meta-virtualization is included, but virtualization is not enabled as a distro feature a warning is printed at parse time:
You have included the meta-virtualization layer, but
'virtualization' has not been enabled in your DISTRO_FEATURES. Some bbappend files
may not take effect. See the meta-virtualization README for details on enabling
virtualization support.
If you know what you are doing, this warning can be disabled by setting the following variable in your configuration:
SKIP_META_VIRT_SANITY_CHECK = 1
Depending on your use case, there are other distro features in meta-virtualization that may also be enabled:
- xen: enables xen functionality in various packages (kernel, libvirt, etc)
- kvm: enables KVM configurations in the kernel and autoloads modules
- k8s: enables kubernets configurations in the kernel, tools and configuration
- aufs: enables aufs support in docker and linux-yocto
- x11: enable xen and libvirt functionality related to x11
- selinux: enables functionality in libvirt and lxc
- systemd: enable systemd services and unit files (for recipes for support)
- sysvinit: enable sysvinit scripts (for recipes with support)
- seccomp: enable seccomp support for packages that have the capability.
Dependencies
This layer depends on:
URI: git://github.com/openembedded/openembedded-core.git branch: master revision: HEAD prio: default
URI: git://github.com/openembedded/meta-openembedded.git branch: master revision: HEAD layers: meta-oe meta-networking meta-filesystems meta-python
BBFILE_PRIORITY_openembedded-layer = "4"
Required for Xen XSM policy: URI: git://git.yoctoproject.org/meta-selinux branch: master revision: HEAD prio: default
Required for Ceph: URI: git://git.yoctoproject.org/meta-cloud-services branch: master revision: HEAD prio: default
Required for cri-o: URI: git://git.yoctoproject.org/meta-selinux branch: master revision: HEAD prio: default
Community / Colaboration
Repository: https://git.yoctoproject.org/cgit/cgit.cgi/meta-virtualization/ Mailing list: https://lists.yoctoproject.org/g/meta-virtualization IRC: libera.chat #meta-virt channel
Maintenance
Send pull requests, patches, comments or questions to meta-virtualization@lists.yoctoproject.org
Maintainer: Bruce Ashfield bruce.ashfield@gmail.com see MAINTAINERS for more specific information
When sending single patches, please using something like: $ git send-email -1 -M --to meta-virtualization@lists.yoctoproject.org --subject-prefix='meta-virtualization][PATCH'
License
All metadata is MIT licensed unless otherwise stated. Source code included in tree for individual recipes is under the LICENSE stated in each recipe (.bb file) unless otherwise stated.