Go to file
Chen Qi 23ea9c77f9 oe-go-mod-autogen.py: add script to help adding/upgrading go mod recipes
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>
2023-09-15 17:30:40 +00:00
classes conf: make container recipes parseable when virtualization is not set 2023-03-20 09:06:47 -04:00
conf conf: drop mickledore, only specify nanbield 2023-09-15 16:10:00 +00:00
docs podman: Add support for rootless mode 2022-07-15 17:11:58 -04:00
dynamic-layers xen-boot-cmd: Remove hard assigment for ramdisk image 2023-08-17 20:01:19 +00:00
files fs-perms-nagios.txt: add perms conf file 2018-09-06 12:45:17 -04:00
lib/oeqa/runtime/cases xtf: add testimage integration to run XTF test cases in OEQA 2021-09-02 16:36:23 -04:00
recipes-containers k3s: update to v1.27.5 2023-09-15 17:30:40 +00:00
recipes-core packagegroup-kubernetes: set COMPATIBLE_HOST 2023-09-15 17:30:14 +00:00
recipes-demo app-container: temporarily copy contens of .inc file to recipe 2022-09-12 16:45:26 -04:00
recipes-devtools go-context: add CLEANBROKEN 2023-09-04 03:14:17 +00:00
recipes-extended virtiofsd: add seccomp to REQUIRED_DISTRO_FEATURES 2023-09-04 03:05:40 +00:00
recipes-graphics/xorg-xserver global: overrides syntax conversion 2021-08-02 17:17:53 -04:00
recipes-kernel recipes/classes/scripts: Drop SRCPV usage 2023-08-24 01:38:21 +00:00
recipes-networking recipes/classes/scripts: Drop SRCPV usage 2023-08-24 01:38:21 +00:00
scripts oe-go-mod-autogen.py: add script to help adding/upgrading go mod recipes 2023-09-15 17:30:40 +00:00
wic xen-image-minimal: supply bootloader config for qemux86-64 machine 2021-09-02 16:36:23 -04:00
.gitignore buildah: add seccomp and ipv6 to REQUIRED_DISTRO_FEATURES 2023-04-12 13:10:11 -04:00
COPYING.MIT Initial meta-xen layer documentation. 2012-06-21 15:51:11 -06:00
MAINTAINERS MAINTAINERS: add xtf and the raspberry pi dynamic layer for Xen 2021-12-16 21:45:00 -05:00
meta-virt-roadmap.txt docs: roadmap: add missing workflow items 2019-10-28 11:56:10 -04:00
README README: remove some cri-o specific layer dependencies 2023-02-17 15:34:51 -05:00

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.