| Submitter | Björn Stenberg |
|---|---|
| Date | Nov. 22, 2012, 4:01 p.m. |
| Message ID | <1353600120-22967-2-git-send-email-bjst@enea.com> |
| Download | mbox | patch |
| Permalink | /patch/39479/ |
| State | New |
| Headers | show |
Comments
On Thu, 2012-11-22 at 17:01 +0100, Björn Stenberg wrote: > This patch creates a new distro feature "ptest", which creates -ptest > packages containing the test suite of the package for running on the > target. Test files are installed in /usr/lib/<pkg>/ptest. > > The patch also includes a change to automake, splitting the "make check" > target into separate steps for building and running the tests. > > Signed-off-by: Björn Stenberg <bjst@enea.com> > --- > meta/classes/image.bbclass | 6 ++- > meta/classes/packagegroup.bbclass | 2 +- > meta/conf/bitbake.conf | 15 ++++++++- > .../automake/automake/buildtest.patch | 33 ++++++++++++++++++++ > meta/recipes-devtools/automake/automake_1.12.3.bb | 3 +- > 5 files changed, 54 insertions(+), 5 deletions(-) > create mode 100644 meta/recipes-devtools/automake/automake/buildtest.patch > > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass > index 7b24e4e..b574545 100644 > --- a/meta/classes/image.bbclass > +++ b/meta/classes/image.bbclass > @@ -29,13 +29,13 @@ ROOTFS_BOOTSTRAP_INSTALL = "${@base_contains("IMAGE_FEATURES", "package-manageme > FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" > FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" > > -# packages to install from features, excluding dev/dbg/doc > +# packages to install from features, excluding dev/dbg/doc/ptest > NORMAL_FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(normal_groups(d), d))}" > NORMAL_FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(normal_groups(d), d))}" > > def normal_groups(d): > """Return all the IMAGE_FEATURES, with the exception of our special package groups""" > - extras = set(['dev-pkgs', 'staticdev-pkgs', 'doc-pkgs', 'dbg-pkgs']) > + extras = set(['dev-pkgs', 'staticdev-pkgs', 'doc-pkgs', 'dbg-pkgs', 'ptest-pkgs']) > features = set(oe.data.typed_value('IMAGE_FEATURES', d)) > return features.difference(extras) > > @@ -57,6 +57,8 @@ def complementary_globs(featurevar, d): > globs.append('*-doc') > elif feature == 'dbg-pkgs': > globs.append('*-dbg') > + elif feature == 'ptest-pkgs': > + globs.append('*-ptest') > return ' '.join(globs) > > IMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("IMAGE_FEATURES", d)}' > diff --git a/meta/classes/packagegroup.bbclass b/meta/classes/packagegroup.bbclass > index e0e5b1c..b5be048 100644 > --- a/meta/classes/packagegroup.bbclass > +++ b/meta/classes/packagegroup.bbclass > @@ -25,7 +25,7 @@ python () { > packages = d.getVar('PACKAGES', True).split() > genpackages = [] > for pkg in packages: > - for postfix in ['-dbg', '-dev']: > + for postfix in ['-dbg', '-dev', '-ptest']: > genpackages.append(pkg+postfix) > d.setVar('PACKAGES', ' '.join(packages+genpackages)) > } > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > index 450a0ee..d86e999 100644 > --- a/meta/conf/bitbake.conf > +++ b/meta/conf/bitbake.conf > @@ -224,6 +224,10 @@ SUMMARY_${PN}-dbg ?= "${SUMMARY} - Debugging files" > DESCRIPTION_${PN}-dbg ?= "${DESCRIPTION} \ > This package contains ELF symbols and related sources for debugging purposes." > > +SUMMARY_${PN}-ptest ?= "${SUMMARY} - Package test files" > +DESCRIPTION_${PN}-ptest ?= "${DESCRIPTION} \ > +This package contains a test directory ${PTEST_PATH} for package test purposes." > + > SUMMARY_${PN}-dev ?= "${SUMMARY} - Development files" > DESCRIPTION_${PN}-dev ?= "${DESCRIPTION} \ > This package contains symbolic links, header files, and \ > @@ -267,7 +271,7 @@ SOLIBSDEV_darwin8 = ".dylib" > SOLIBSDEV_darwin9 = ".dylib" > > PACKAGE_BEFORE_PN ?= "" > -PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}" > +PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PN}-ptest ${PACKAGE_BEFORE_PN} ${PN}" > PACKAGES_DYNAMIC = "^${PN}-locale-.*" > FILES = "" > > @@ -312,6 +316,15 @@ SECTION_${PN}-dbg = "devel" > ALLOW_EMPTY_${PN}-dbg = "1" > RRECOMMENDS_${PN}-dbg = "${PN} (= ${EXTENDPKGV})" > > +PTEST_PATH ?= "${libdir}/${PN}/ptest" > +FILES_${PN}-ptest = "${PTEST_PATH}/*" > +SECTION_${PN}-ptest = "devel" > +ALLOW_EMPTY_${PN}-ptest = "1" > +RDEPENDS_${PN}-ptest = "${PN} (= ${EXTENDPKGV})" > +PTEST_ENABLED = "${@base_contains("DISTRO_FEATURES", "ptest", "1", "0", d)}" > +RDEPENDS_${PN}-ptest_virtclass-native = "" > +RDEPENDS_${PN}-ptest_virtclass-nativesdk = "" > + > FILES_${PN}-locale = "${datadir}/locale" > > # File manifest Whilst we're in bootstrapping mode for this work, how about we make these changes a "ptest.bbclass" file which we'd inherit in the recipes where we've got ptest enabled? This would also solve the package name conflict I suspect you have in the dbus recipes, making the hack to the main dbus recipe unnecessary. Cheers, Richard
Richard Purdie wrote: > Whilst we're in bootstrapping mode for this work, how about we make > these changes a "ptest.bbclass" file which we'd inherit in the recipes > where we've got ptest enabled? Ok. I'll give it a go and see how it turns out.
Richard Purdie wrote: > > meta/classes/image.bbclass | 6 ++- > > meta/classes/packagegroup.bbclass | 2 +- > > meta/conf/bitbake.conf | 15 ++++++++- > > Whilst we're in bootstrapping mode for this work, how about we make > these changes a "ptest.bbclass" file which we'd inherit in the recipes > where we've got ptest enabled? Having looked into it a bit, I'm not sure I understand how you mean. First, I don't quite see how this would be done in an elegant way for the in-function changes in image.bbclass and packagegroup.bbclass. And the lines added to bitbake.conf were put there because they mirror other complementary packages like -dbg and -dev. Is it really a good idea to invent a new way of doing this for -ptest packages?
On Thu, 2012-11-29 at 16:52 +0100, Björn Stenberg wrote: > Richard Purdie wrote: > > > meta/classes/image.bbclass | 6 ++- > > > meta/classes/packagegroup.bbclass | 2 +- > > > meta/conf/bitbake.conf | 15 ++++++++- > > > > Whilst we're in bootstrapping mode for this work, how about we make > > these changes a "ptest.bbclass" file which we'd inherit in the recipes > > where we've got ptest enabled? > > Having looked into it a bit, I'm not sure I understand how you mean. > > First, I don't quite see how this would be done in an elegant way for > the in-function changes in image.bbclass and packagegroup.bbclass. Those are pretty non-invasive so I think we can just add these pieces in directly as you have them now. > And the lines added to bitbake.conf were put there because they mirror > other complementary packages like -dbg and -dev. Is it really a good > idea to invent a new way of doing this for -ptest packages? This isn't a "new way". We can easily put these in a .bbclass for now. Pretty much every package has a -dev and -dbg package but for now, the number of packages which will have ptest is limited. Its a waste of build time having the -ptest metadata being processed for every package, its also confusing. So I think my proposal stands, lets put the pieces from bitbake.conf into a bbclass file for now, the other pieces can merge into the core code. As and when we have more than say 60% of the metadata with ptest we can think about making -ptest packages the default. Cheers, Richard >
Richard Purdie wrote: > So I think my proposal stands, lets put the pieces from bitbake.conf > into a bbclass file for now, the other pieces can merge into the core > code. Fair enough. I'll get a new patch set together.
Patch
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 7b24e4e..b574545 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -29,13 +29,13 @@ ROOTFS_BOOTSTRAP_INSTALL = "${@base_contains("IMAGE_FEATURES", "package-manageme FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" -# packages to install from features, excluding dev/dbg/doc +# packages to install from features, excluding dev/dbg/doc/ptest NORMAL_FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(normal_groups(d), d))}" NORMAL_FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(normal_groups(d), d))}" def normal_groups(d): """Return all the IMAGE_FEATURES, with the exception of our special package groups""" - extras = set(['dev-pkgs', 'staticdev-pkgs', 'doc-pkgs', 'dbg-pkgs']) + extras = set(['dev-pkgs', 'staticdev-pkgs', 'doc-pkgs', 'dbg-pkgs', 'ptest-pkgs']) features = set(oe.data.typed_value('IMAGE_FEATURES', d)) return features.difference(extras) @@ -57,6 +57,8 @@ def complementary_globs(featurevar, d): globs.append('*-doc') elif feature == 'dbg-pkgs': globs.append('*-dbg') + elif feature == 'ptest-pkgs': + globs.append('*-ptest') return ' '.join(globs) IMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("IMAGE_FEATURES", d)}' diff --git a/meta/classes/packagegroup.bbclass b/meta/classes/packagegroup.bbclass index e0e5b1c..b5be048 100644 --- a/meta/classes/packagegroup.bbclass +++ b/meta/classes/packagegroup.bbclass @@ -25,7 +25,7 @@ python () { packages = d.getVar('PACKAGES', True).split() genpackages = [] for pkg in packages: - for postfix in ['-dbg', '-dev']: + for postfix in ['-dbg', '-dev', '-ptest']: genpackages.append(pkg+postfix) d.setVar('PACKAGES', ' '.join(packages+genpackages)) } diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 450a0ee..d86e999 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -224,6 +224,10 @@ SUMMARY_${PN}-dbg ?= "${SUMMARY} - Debugging files" DESCRIPTION_${PN}-dbg ?= "${DESCRIPTION} \ This package contains ELF symbols and related sources for debugging purposes." +SUMMARY_${PN}-ptest ?= "${SUMMARY} - Package test files" +DESCRIPTION_${PN}-ptest ?= "${DESCRIPTION} \ +This package contains a test directory ${PTEST_PATH} for package test purposes." + SUMMARY_${PN}-dev ?= "${SUMMARY} - Development files" DESCRIPTION_${PN}-dev ?= "${DESCRIPTION} \ This package contains symbolic links, header files, and \ @@ -267,7 +271,7 @@ SOLIBSDEV_darwin8 = ".dylib" SOLIBSDEV_darwin9 = ".dylib" PACKAGE_BEFORE_PN ?= "" -PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}" +PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PN}-ptest ${PACKAGE_BEFORE_PN} ${PN}" PACKAGES_DYNAMIC = "^${PN}-locale-.*" FILES = "" @@ -312,6 +316,15 @@ SECTION_${PN}-dbg = "devel" ALLOW_EMPTY_${PN}-dbg = "1" RRECOMMENDS_${PN}-dbg = "${PN} (= ${EXTENDPKGV})" +PTEST_PATH ?= "${libdir}/${PN}/ptest" +FILES_${PN}-ptest = "${PTEST_PATH}/*" +SECTION_${PN}-ptest = "devel" +ALLOW_EMPTY_${PN}-ptest = "1" +RDEPENDS_${PN}-ptest = "${PN} (= ${EXTENDPKGV})" +PTEST_ENABLED = "${@base_contains("DISTRO_FEATURES", "ptest", "1", "0", d)}" +RDEPENDS_${PN}-ptest_virtclass-native = "" +RDEPENDS_${PN}-ptest_virtclass-nativesdk = "" + FILES_${PN}-locale = "${datadir}/locale" # File manifest diff --git a/meta/recipes-devtools/automake/automake/buildtest.patch b/meta/recipes-devtools/automake/automake/buildtest.patch new file mode 100644 index 0000000..1dd5337 --- /dev/null +++ b/meta/recipes-devtools/automake/automake/buildtest.patch @@ -0,0 +1,33 @@ +Split "check-TESTS" into a buildtest and runtest target, so that they can +be run separately. + +Signed-off-by: Björn Stenberg <bjst@enea.com> +Upstream-Status: Pending + +--- a/lib/am/check.am 2012-11-14 13:46:16.335475995 +0100 ++++ b/lib/am/check.am 2012-08-13 18:40:12.000000000 +0200 +@@ -44,7 +44,7 @@ + am__tty_colors = $(am__tty_colors_dummy) + endif !%?COLOR% + +-.PHONY: check-TESTS ++.PHONY: check-TESTS buildtest-TESTS runtest-TESTS + + if %?PARALLEL_TESTS% + +@@ -465,7 +465,14 @@ + + else !%?PARALLEL_TESTS% + +-check-TESTS: $(TESTS) ++AM_RECURSIVE_TARGETS += buildtest runtest ++ ++buildtest-TESTS: $(TESTS) ++ ++check-TESTS: buildtest-TESTS ++ $(MAKE) $(AM_MAKEFLAGS) runtest-TESTS ++ ++runtest-TESTS: + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + ## Make sure Solaris VPATH-expands all members of this list, even diff --git a/meta/recipes-devtools/automake/automake_1.12.3.bb b/meta/recipes-devtools/automake/automake_1.12.3.bb index aaa5ee5..82b8b62 100644 --- a/meta/recipes-devtools/automake/automake_1.12.3.bb +++ b/meta/recipes-devtools/automake/automake_1.12.3.bb @@ -23,7 +23,8 @@ PATHFIXPATCH_class-nativesdk = "" SRC_URI += "${PATHFIXPATCH} \ file://prefer-cpio-over-pax-for-ustar-archives.patch \ file://python-libdir.patch \ - file://py-compile-compile-only-optimized-byte-code.patch" + file://py-compile-compile-only-optimized-byte-code.patch \ + file://buildtest.patch" SRC_URI[md5sum] = "d2af8484de94cdee16d89c50aaa1c729" SRC_URI[sha256sum] = "095ffaa3ac887d1eb3511bf13d7f1fc9ec0503c6a06aeae05c93730cdda9a5a0"
This patch creates a new distro feature "ptest", which creates -ptest packages containing the test suite of the package for running on the target. Test files are installed in /usr/lib/<pkg>/ptest. The patch also includes a change to automake, splitting the "make check" target into separate steps for building and running the tests. Signed-off-by: Björn Stenberg <bjst@enea.com> --- meta/classes/image.bbclass | 6 ++- meta/classes/packagegroup.bbclass | 2 +- meta/conf/bitbake.conf | 15 ++++++++- .../automake/automake/buildtest.patch | 33 ++++++++++++++++++++ meta/recipes-devtools/automake/automake_1.12.3.bb | 3 +- 5 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 meta/recipes-devtools/automake/automake/buildtest.patch