meta-starlingx/meta-stx-distro/classes/stx-metadata.bbclass
Jackie Huang 067b37abdc Add a method to re-use meta data from stx repo
StarlingX has many repos to maintain meta data (patches and config files)
for packages, previously we added a local copy of those files as bitbake's
metadata for each recipe which may cause maintenance issue.

So add a method to avoid that, which includes:

* Add new recipes stx-${STX_REPO}-source for thoes stx git repo and put
  them into the work-shared directory so they can be used by other recipes
  that need the stx  meta data, so it will reduce downloads and increase
  re-use.

* Add stx-source.bbclass for easily creating the work-shared recipes

* Add stx-metadata.bbclass for those recipes that need the stx meta data,
  it will add dependency on the stx-${STX_REPO}-source and redefine the
  SRC_URI before do_patch, so it can find the patches in stx repo in
  work-shard and do the patch, and other meta data like config files can
  be used in do_install, then the local copy of those meta data can be
  removed, and for the future upgrade, we don't need to manually check
  and update those meta data any more.

Story: 2008952
Task: 42576

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Change-Id: I0d07f2f6002eb0cee97ae86f95571d340de08a0b
2021-06-17 10:10:45 +08:00

42 lines
1.5 KiB
Plaintext

# This class is intended to help apply the patches and install
# config files fetched from stx git repo defined in STX_REPO so to
# avoid maintaining a local copy in the recipe's metadata.
#
# This adds dependency on stx-${STX_REPO}-source which
# fetches the stx source code and is used as a shared work
# directory, and the search path of patches and config files
# for the recipe will be added in FILESEXTRAPATHS so the
# patches will be found and applied in do_patch, and STX_METADATA_PATH
# can be used to locate config files to be installed.
#
# Please set the following variables correctly after inherit
# this bbclass:
# - STX_REPO: the StarlingX repo name, default is 'integ'
# - STX_SUBPATH: the subpath for the patches in the work-shard
# directory of stx-${STX_REPO}-source
# - SRC_URI_STX: the patch list in stx-${STX_REPO}-source
#
# e.g.
# STX_REPO = "integ"
# STX_SUBPATH = "config/puppet-modules/openstack/${BP}/centos/patches"
# SRC_URI_STX = "file://0001-Remove-log_dir-from-conf-files.patch"
STX_REPO ?= "integ"
STX_SUBPATH ?= ""
SRC_URI_STX ?= ""
STX_METADATA_PATH = "${TMPDIR}/work-shared/stx-${STX_REPO}-source/git/${STX_SUBPATH}"
FILESEXTRAPATHS_prepend = "${STX_METADATA_PATH}:"
do_patch[depends] += "stx-${STX_REPO}-source:do_patch"
do_patch_prepend() {
bb.build.exec_func('add_stx_patch', d)
}
python add_stx_patch() {
src_uri = d.getVar('SRC_URI', False)
src_uri_stx = d.getVar('SRC_URI_STX', False)
d.setVar('SRC_URI', src_uri_stx + " " + src_uri)
}