Add a new bbclass that allows building a feed using the new oe.package_manager class. Additionally, there are packagefeed_<type> bbclasses to define package type specific configurations.
The do_packagefeed task currently does no use SSTATE data and is set to always run via [nostamp] = "1". The variable FEED_DEPENDS is used to specify feeds that the packagefeed depends on and will be available side-by-side. This prevents duplicate packages in the two feeds. Signed-off-by: Charlie Johnston <charlie.johns...@ni.com> --- meta/classes-recipe/packagefeed.bbclass | 50 +++++++++++++++++++++ meta/classes-recipe/packagefeed_deb.bbclass | 8 ++++ meta/classes-recipe/packagefeed_ipk.bbclass | 8 ++++ meta/classes-recipe/packagefeed_rpm.bbclass | 8 ++++ 4 files changed, 74 insertions(+) create mode 100644 meta/classes-recipe/packagefeed.bbclass create mode 100644 meta/classes-recipe/packagefeed_deb.bbclass create mode 100644 meta/classes-recipe/packagefeed_ipk.bbclass create mode 100644 meta/classes-recipe/packagefeed_rpm.bbclass diff --git a/meta/classes-recipe/packagefeed.bbclass b/meta/classes-recipe/packagefeed.bbclass new file mode 100644 index 00000000000..de075294645 --- /dev/null +++ b/meta/classes-recipe/packagefeed.bbclass @@ -0,0 +1,50 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +# Class for creating package feeds with indexes for a group of packages and their +# dependencies. +# +# When deploying a package feed or repo for an image such that deployed images can +# use them, it's not always desireable to include all packages in the default +# DEPLOY_DIR_<PKG_TYPE> directory in the feed. This class allows specifying one or +# more packages (or packagegroups) to define what should be included in a feed and +# creates a feed in DEPLOY_DIR_FEED with only those packages and dependencies. +# This allows for creating one or more feeds at once and removes the need to +# remove unwanted packages manually before an index is created. +# +# Example: +# inherit packagefeed +# +# RDEPENDS:${PN} += "\ +# packagegroup-core-buildessential \ +# " +# +# Optional variables: +# FEED_DEPENDS: +# Specifies one or more feeds that the feed depends on and excludes packages in +# those feeds from the feed being built. Used if a feed depends on packages in +# the feeds listed and it's safe to assume those feeds will always be present. + +PKGFEED_INHERITS = "${@' '.join(['packagefeed_' + x for x in d.getVar('PACKAGE_CLASSES').replace("package_", "").split()])}" +inherit ${PKGFEED_INHERITS} nopackages + +LICENSE ?= "MIT" + +# Feeds listed in FEED_DEPENDS and their dependencies will be excluded from the feed. +# This allows for side-by-side feeds without duplicate packages. +FEED_DEPENDS ??= "" + +fakeroot python do_packagefeed() { + from oe.package_manager import generate_feed_dirs, generate_index_files + + generate_feed_dirs(d, d.getVar("FEED_DEPENDS")) + generate_index_files(d, isFeed=True) +} +addtask packagefeed before do_build +do_packagefeed[recrdeptask] += "do_package_qa" +do_packagefeed[nostamp] = "1" +do_packagefeed[rdepends] += "${@' '.join([x + ':do_packagefeed' for x in d.getVar('FEED_DEPENDS').split()])}" +do_packagefeed[cleandirs] += "${DEPLOY_DIR_FEED_DEB}/${PN} ${DEPLOY_DIR_FEED_IPK}/${PN} ${DEPLOY_DIR_FEED_RPM}/${PN}" diff --git a/meta/classes-recipe/packagefeed_deb.bbclass b/meta/classes-recipe/packagefeed_deb.bbclass new file mode 100644 index 00000000000..2decc70a4f7 --- /dev/null +++ b/meta/classes-recipe/packagefeed_deb.bbclass @@ -0,0 +1,8 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +do_packagefeed[depends] += "apt-native:do_populate_sysroot" +do_packagefeed[recrdeptask] += "do_package_write_deb" diff --git a/meta/classes-recipe/packagefeed_ipk.bbclass b/meta/classes-recipe/packagefeed_ipk.bbclass new file mode 100644 index 00000000000..89d296200b9 --- /dev/null +++ b/meta/classes-recipe/packagefeed_ipk.bbclass @@ -0,0 +1,8 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +do_packagefeed[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot" +do_packagefeed[recrdeptask] += "do_package_write_ipk" diff --git a/meta/classes-recipe/packagefeed_rpm.bbclass b/meta/classes-recipe/packagefeed_rpm.bbclass new file mode 100644 index 00000000000..8ce37cc8551 --- /dev/null +++ b/meta/classes-recipe/packagefeed_rpm.bbclass @@ -0,0 +1,8 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +do_packagefeed[depends] += "createrepo-c-native:do_populate_sysroot" +do_packagefeed[recrdeptask] += "do_package_write_rpm" -- 2.41.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#186388): https://lists.openembedded.org/g/openembedded-core/message/186388 Mute This Topic: https://lists.openembedded.org/mt/100825507/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-