Message ID | 20230731215310.3949441-6-charlie.johnston@ni.com |
---|---|
State | New |
Headers | show |
Series | Add new packagefeed recipe class. | expand |
This does need to be tested, and it does need examples. Can you rework create_rpm_index() from meta/classes-recipe/testimage.bbclass to use this class instead of package-index? Alex On Mon, 31 Jul 2023 at 23:53, Charlie Johnston <charlie.johnston@ni.com> wrote: > > 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.johnston@ni.com> > --- > meta/classes-recipe/packagefeed.bbclass | 27 +++++++++++++++++++++ > meta/classes-recipe/packagefeed_deb.bbclass | 8 ++++++ > meta/classes-recipe/packagefeed_ipk.bbclass | 8 ++++++ > meta/classes-recipe/packagefeed_rpm.bbclass | 8 ++++++ > 4 files changed, 51 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 0000000000..04b45e7723 > --- /dev/null > +++ b/meta/classes-recipe/packagefeed.bbclass > @@ -0,0 +1,27 @@ > +# > +# Copyright OpenEmbedded Contributors > +# > +# SPDX-License-Identifier: MIT > +# > + > +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 > + > + pn = d.getVar("PN") > + generate_feed_dirs(d, pn, d.getVar("FEED_DEPENDS")) > + generate_index_files(d, pn) > +} > +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 0000000000..2decc70a4f > --- /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 0000000000..89d296200b > --- /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 0000000000..8ce37cc855 > --- /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 (#185179): https://lists.openembedded.org/g/openembedded-core/message/185179 > Mute This Topic: https://lists.openembedded.org/mt/100471807/1686489 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
diff --git a/meta/classes-recipe/packagefeed.bbclass b/meta/classes-recipe/packagefeed.bbclass new file mode 100644 index 0000000000..04b45e7723 --- /dev/null +++ b/meta/classes-recipe/packagefeed.bbclass @@ -0,0 +1,27 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +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 + + pn = d.getVar("PN") + generate_feed_dirs(d, pn, d.getVar("FEED_DEPENDS")) + generate_index_files(d, pn) +} +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 0000000000..2decc70a4f --- /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 0000000000..89d296200b --- /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 0000000000..8ce37cc855 --- /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"
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.johnston@ni.com> --- meta/classes-recipe/packagefeed.bbclass | 27 +++++++++++++++++++++ meta/classes-recipe/packagefeed_deb.bbclass | 8 ++++++ meta/classes-recipe/packagefeed_ipk.bbclass | 8 ++++++ meta/classes-recipe/packagefeed_rpm.bbclass | 8 ++++++ 4 files changed, 51 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