diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-04-26 20:44:23 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-05-01 14:22:53 +0100 |
| commit | cf9c5ac2c152a7b53a1306cbde88bc3c0131028f (patch) | |
| tree | 674d41ec7db0eb32d7f41cd91497f10db13902aa | |
| parent | 6f6a9ec39beeb41e5d3d616baddd21faca9da224 (diff) | |
| download | poky-cf9c5ac2c152a7b53a1306cbde88bc3c0131028f.tar.gz | |
selftest-ed: Upgrade to version 1.21/1.20.2
Older versions do not compile with GCC 15. We had different versions to test
GPLv3 exclusion.
1.21 compiles with gcc 15 and 1.20.2 has a CFLAGS tweak to allow it to work
with gcc 15 too.
1.21 is licensed under GPL-2.0 so we need to rework some of the tests.
Tweak the gplv3 test by adding a special override of LICENSE to then test
the license exclusion code.
Modify the archiver selftests to use the new version.
Based on a patch from Khem Raj <raj.khem@gmail.com>
(From OE-Core rev: 3b17355ad1ecad17d12c5eb0e6403a59ef11f7d7)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
6 files changed, 97 insertions, 71 deletions
diff --git a/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb b/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb deleted file mode 100644 index 1a140a532f..0000000000 --- a/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb +++ /dev/null | |||
| @@ -1,23 +0,0 @@ | |||
| 1 | SUMMARY = "Line-oriented text editor -- selftest GPL-2.0-or-later version" | ||
| 2 | HOMEPAGE = "http://www.gnu.org/software/ed/" | ||
| 3 | SECTION = "base" | ||
| 4 | LICENSE = "GPL-2.0-or-later" | ||
| 5 | LIC_FILES_CHKSUM = "file://COPYING;md5=6ddd5335ef96fb858a138230af773710 \ | ||
| 6 | file://main.c;beginline=1;endline=17;md5=36d4b85e5ae9028e918d1cc775c2475e" | ||
| 7 | |||
| 8 | SRC_URI = "${SAVANNAH_GNU_MIRROR}/ed/ed-${PV}.tar.bz2" | ||
| 9 | |||
| 10 | SRC_URI[md5sum] = "4ee21e9dcc9b5b6012c23038734e1632" | ||
| 11 | SRC_URI[sha256sum] = "edef2bbde0fbf0d88232782a0eded323f483a0519d6fde9a3b1809056fd35f3e" | ||
| 12 | |||
| 13 | inherit autotools texinfo | ||
| 14 | |||
| 15 | S = "${WORKDIR}/ed-${PV}" | ||
| 16 | |||
| 17 | EXTRA_OECONF = "'CC=${CC}' 'CXX=${CXX}' 'CFLAGS=${CFLAGS}' 'CXXFLAGS=${CXXFLAGS}' 'CPPFLAGS=${CPPFLAGS}' 'LDFLAGS=${LDFLAGS}'" | ||
| 18 | |||
| 19 | CONFIGUREOPTS:remove = "--disable-dependency-tracking" | ||
| 20 | CONFIGUREOPTS:remove = "--disable-silent-rules" | ||
| 21 | EXTRA_OECONF:remove = "--disable-static" | ||
| 22 | |||
| 23 | BBCLASSEXTEND = "native" | ||
diff --git a/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb b/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb deleted file mode 100644 index b92740de32..0000000000 --- a/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb +++ /dev/null | |||
| @@ -1,38 +0,0 @@ | |||
| 1 | SUMMARY = "Line-oriented text editor -- selftest variant" | ||
| 2 | HOMEPAGE = "http://www.gnu.org/software/ed/" | ||
| 3 | |||
| 4 | LICENSE = "GPL-3.0-or-later" | ||
| 5 | LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7 \ | ||
| 6 | file://ed.h;endline=20;md5=4e36b7a40e137f42aee718165590d125 \ | ||
| 7 | file://main.c;endline=17;md5=c5b8f78f115df187af76868a2aead16a" | ||
| 8 | |||
| 9 | SECTION = "base" | ||
| 10 | |||
| 11 | # LSB states that ed should be in /bin/ | ||
| 12 | bindir = "${base_bindir}" | ||
| 13 | |||
| 14 | SRC_URI = "${GNU_MIRROR}/ed/ed-${PV}.tar.lz" | ||
| 15 | RECIPE_NO_UPDATE_REASON = "This recipe is used in selftest and shouldn't be updated otherwise" | ||
| 16 | |||
| 17 | SRC_URI[md5sum] = "7f4a54fa7f366479f03654b8af645fd0" | ||
| 18 | SRC_URI[sha256sum] = "ffb97eb8f2a2b5a71a9b97e3872adce953aa1b8958e04c5b7bf11d556f32552a" | ||
| 19 | |||
| 20 | S = "${WORKDIR}/ed-${PV}" | ||
| 21 | |||
| 22 | EXTRA_OEMAKE = "-e MAKEFLAGS=" | ||
| 23 | |||
| 24 | inherit texinfo | ||
| 25 | |||
| 26 | do_configure() { | ||
| 27 | ${S}/configure | ||
| 28 | } | ||
| 29 | |||
| 30 | do_install() { | ||
| 31 | oe_runmake 'DESTDIR=${D}' install | ||
| 32 | # Info dir listing isn't interesting at this point so remove it if it exists. | ||
| 33 | if [ -e "${D}${infodir}/dir" ]; then | ||
| 34 | rm -f ${D}${infodir}/dir | ||
| 35 | fi | ||
| 36 | } | ||
| 37 | |||
| 38 | BBCLASSEXTEND = "native" | ||
diff --git a/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.20.2.bb b/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.20.2.bb new file mode 100644 index 0000000000..d4232b72ee --- /dev/null +++ b/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.20.2.bb | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | SUMMARY = "Line-oriented text editor" | ||
| 2 | HOMEPAGE = "http://www.gnu.org/software/ed/" | ||
| 3 | DESCRIPTION = "GNU ed is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files, both interactively and via shell scripts. A restricted version of ed, red, can only edit files in the current directory and cannot execute shell commands." | ||
| 4 | |||
| 5 | LICENSE = "GPL-2.0-only" | ||
| 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \ | ||
| 7 | file://ed.h;endline=20;md5=c3212b6c53b09668107420af9368c0ef \ | ||
| 8 | file://main.c;endline=17;md5=e5d2ae5ddd1ecb87dc71702c06dd06dc \ | ||
| 9 | " | ||
| 10 | |||
| 11 | SECTION = "base" | ||
| 12 | |||
| 13 | CVE_PRODUCT = "gnu:ed" | ||
| 14 | |||
| 15 | # LSB states that ed should be in /bin/ | ||
| 16 | bindir = "${base_bindir}" | ||
| 17 | |||
| 18 | # Upstream regularly removes previous releases from https://ftp.gnu.org/gnu/ed/ | ||
| 19 | SRC_URI = "${GNU_MIRROR}/ed/ed-${PV}.tar.lz" | ||
| 20 | UPSTREAM_CHECK_URI = "${GNU_MIRROR}/ed/" | ||
| 21 | |||
| 22 | SRC_URI[sha256sum] = "65fec7318f48c2ca17f334ac0f4703defe62037bb13cc23920de077b5fa24523" | ||
| 23 | |||
| 24 | S = "${WORKDIR}/ed-${PV}" | ||
| 25 | |||
| 26 | EXTRA_OEMAKE = "-e MAKEFLAGS=" | ||
| 27 | |||
| 28 | # for gcc 15 true/false change | ||
| 29 | CFLAGS += "-std=gnu17" | ||
| 30 | |||
| 31 | inherit texinfo | ||
| 32 | |||
| 33 | do_configure() { | ||
| 34 | ${S}/configure | ||
| 35 | } | ||
| 36 | |||
| 37 | do_install() { | ||
| 38 | oe_runmake 'DESTDIR=${D}' install | ||
| 39 | # Info dir listing isn't interesting at this point so remove it if it exists. | ||
| 40 | if [ -e "${D}${infodir}/dir" ]; then | ||
| 41 | rm -f ${D}${infodir}/dir | ||
| 42 | fi | ||
| 43 | } | ||
| 44 | BBCLASSEXTEND = "native" | ||
diff --git a/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.21.1.bb b/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.21.1.bb new file mode 100644 index 0000000000..acd1ce5907 --- /dev/null +++ b/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.21.1.bb | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | SUMMARY = "Line-oriented text editor" | ||
| 2 | HOMEPAGE = "http://www.gnu.org/software/ed/" | ||
| 3 | DESCRIPTION = "GNU ed is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files, both interactively and via shell scripts. A restricted version of ed, red, can only edit files in the current directory and cannot execute shell commands." | ||
| 4 | |||
| 5 | LICENSE = "GPL-2.0-only" | ||
| 6 | LICENSE:gplv3test = "GPL-3.0-or-later" | ||
| 7 | LIC_FILES_CHKSUM = "file://COPYING;md5=cca7f74ec83b7a9ce7ccd195aad471bd \ | ||
| 8 | file://ed.h;endline=20;md5=a24e7f91c0fb83e65a746f5994762a49 \ | ||
| 9 | file://main.c;endline=17;md5=fd6ad9f1853f123f4ae7a31d59761f09 \ | ||
| 10 | " | ||
| 11 | |||
| 12 | SECTION = "base" | ||
| 13 | |||
| 14 | CVE_PRODUCT = "gnu:ed" | ||
| 15 | |||
| 16 | # LSB states that ed should be in /bin/ | ||
| 17 | bindir = "${base_bindir}" | ||
| 18 | |||
| 19 | # Upstream regularly removes previous releases from https://ftp.gnu.org/gnu/ed/ | ||
| 20 | SRC_URI = "${GNU_MIRROR}/ed/ed-${PV}.tar.lz" | ||
| 21 | UPSTREAM_CHECK_URI = "${GNU_MIRROR}/ed/" | ||
| 22 | |||
| 23 | SRC_URI[sha256sum] = "d6d0c7192b02b0519c902a93719053e865ade5a784a3b327d93d888457b23c4b" | ||
| 24 | |||
| 25 | S = "${WORKDIR}/ed-${PV}" | ||
| 26 | |||
| 27 | EXTRA_OEMAKE = "-e MAKEFLAGS=" | ||
| 28 | |||
| 29 | inherit texinfo | ||
| 30 | |||
| 31 | do_configure() { | ||
| 32 | ${S}/configure | ||
| 33 | } | ||
| 34 | |||
| 35 | do_install() { | ||
| 36 | oe_runmake 'DESTDIR=${D}' install | ||
| 37 | # Info dir listing isn't interesting at this point so remove it if it exists. | ||
| 38 | if [ -e "${D}${infodir}/dir" ]; then | ||
| 39 | rm -f ${D}${infodir}/dir | ||
| 40 | fi | ||
| 41 | } | ||
| 42 | BBCLASSEXTEND = "native" | ||
diff --git a/meta/lib/oeqa/selftest/cases/archiver.py b/meta/lib/oeqa/selftest/cases/archiver.py index 3cb888c506..612ec675a7 100644 --- a/meta/lib/oeqa/selftest/cases/archiver.py +++ b/meta/lib/oeqa/selftest/cases/archiver.py | |||
| @@ -190,28 +190,28 @@ class Archiver(OESelftestTestCase): | |||
| 190 | Test that the archiver works with `ARCHIVER_MODE[src] = "original"`. | 190 | Test that the archiver works with `ARCHIVER_MODE[src] = "original"`. |
| 191 | """ | 191 | """ |
| 192 | 192 | ||
| 193 | self._test_archiver_mode('original', 'ed-1.14.1.tar.lz') | 193 | self._test_archiver_mode('original', 'ed-1.21.1.tar.lz') |
| 194 | 194 | ||
| 195 | def test_archiver_mode_patched(self): | 195 | def test_archiver_mode_patched(self): |
| 196 | """ | 196 | """ |
| 197 | Test that the archiver works with `ARCHIVER_MODE[src] = "patched"`. | 197 | Test that the archiver works with `ARCHIVER_MODE[src] = "patched"`. |
| 198 | """ | 198 | """ |
| 199 | 199 | ||
| 200 | self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-patched.tar.xz') | 200 | self._test_archiver_mode('patched', 'selftest-ed-native-1.21.1-r0-patched.tar.xz') |
| 201 | 201 | ||
| 202 | def test_archiver_mode_configured(self): | 202 | def test_archiver_mode_configured(self): |
| 203 | """ | 203 | """ |
| 204 | Test that the archiver works with `ARCHIVER_MODE[src] = "configured"`. | 204 | Test that the archiver works with `ARCHIVER_MODE[src] = "configured"`. |
| 205 | """ | 205 | """ |
| 206 | 206 | ||
| 207 | self._test_archiver_mode('configured', 'selftest-ed-native-1.14.1-r0-configured.tar.xz') | 207 | self._test_archiver_mode('configured', 'selftest-ed-native-1.21.1-r0-configured.tar.xz') |
| 208 | 208 | ||
| 209 | def test_archiver_mode_recipe(self): | 209 | def test_archiver_mode_recipe(self): |
| 210 | """ | 210 | """ |
| 211 | Test that the archiver works with `ARCHIVER_MODE[recipe] = "1"`. | 211 | Test that the archiver works with `ARCHIVER_MODE[recipe] = "1"`. |
| 212 | """ | 212 | """ |
| 213 | 213 | ||
| 214 | self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-recipe.tar.xz', | 214 | self._test_archiver_mode('patched', 'selftest-ed-native-1.21.1-r0-recipe.tar.xz', |
| 215 | 'ARCHIVER_MODE[recipe] = "1"\n') | 215 | 'ARCHIVER_MODE[recipe] = "1"\n') |
| 216 | 216 | ||
| 217 | def test_archiver_mode_diff(self): | 217 | def test_archiver_mode_diff(self): |
| @@ -220,7 +220,7 @@ class Archiver(OESelftestTestCase): | |||
| 220 | Exclusions controlled by `ARCHIVER_MODE[diff-exclude]` are not yet tested. | 220 | Exclusions controlled by `ARCHIVER_MODE[diff-exclude]` are not yet tested. |
| 221 | """ | 221 | """ |
| 222 | 222 | ||
| 223 | self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-diff.gz', | 223 | self._test_archiver_mode('patched', 'selftest-ed-native-1.21.1-r0-diff.gz', |
| 224 | 'ARCHIVER_MODE[diff] = "1"\n') | 224 | 'ARCHIVER_MODE[diff] = "1"\n') |
| 225 | 225 | ||
| 226 | def test_archiver_mode_dumpdata(self): | 226 | def test_archiver_mode_dumpdata(self): |
| @@ -228,7 +228,7 @@ class Archiver(OESelftestTestCase): | |||
| 228 | Test that the archiver works with `ARCHIVER_MODE[dumpdata] = "1"`. | 228 | Test that the archiver works with `ARCHIVER_MODE[dumpdata] = "1"`. |
| 229 | """ | 229 | """ |
| 230 | 230 | ||
| 231 | self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-showdata.dump', | 231 | self._test_archiver_mode('patched', 'selftest-ed-native-1.21.1-r0-showdata.dump', |
| 232 | 'ARCHIVER_MODE[dumpdata] = "1"\n') | 232 | 'ARCHIVER_MODE[dumpdata] = "1"\n') |
| 233 | 233 | ||
| 234 | def test_archiver_mode_mirror(self): | 234 | def test_archiver_mode_mirror(self): |
| @@ -236,7 +236,7 @@ class Archiver(OESelftestTestCase): | |||
| 236 | Test that the archiver works with `ARCHIVER_MODE[src] = "mirror"`. | 236 | Test that the archiver works with `ARCHIVER_MODE[src] = "mirror"`. |
| 237 | """ | 237 | """ |
| 238 | 238 | ||
| 239 | self._test_archiver_mode('mirror', 'ed-1.14.1.tar.lz', | 239 | self._test_archiver_mode('mirror', 'ed-1.21.1.tar.lz', |
| 240 | 'BB_GENERATE_MIRROR_TARBALLS = "1"\n') | 240 | 'BB_GENERATE_MIRROR_TARBALLS = "1"\n') |
| 241 | 241 | ||
| 242 | def test_archiver_mode_mirror_excludes(self): | 242 | def test_archiver_mode_mirror_excludes(self): |
| @@ -247,7 +247,7 @@ class Archiver(OESelftestTestCase): | |||
| 247 | """ | 247 | """ |
| 248 | 248 | ||
| 249 | target='selftest-ed' | 249 | target='selftest-ed' |
| 250 | target_file_name = 'ed-1.14.1.tar.lz' | 250 | target_file_name = 'ed-1.21.1.tar.lz' |
| 251 | 251 | ||
| 252 | features = 'INHERIT += "archiver"\n' | 252 | features = 'INHERIT += "archiver"\n' |
| 253 | features += 'ARCHIVER_MODE[src] = "mirror"\n' | 253 | features += 'ARCHIVER_MODE[src] = "mirror"\n' |
| @@ -285,7 +285,7 @@ class Archiver(OESelftestTestCase): | |||
| 285 | bitbake('-c deploy_archives %s' % (target)) | 285 | bitbake('-c deploy_archives %s' % (target)) |
| 286 | 286 | ||
| 287 | bb_vars = get_bb_vars(['DEPLOY_DIR_SRC']) | 287 | bb_vars = get_bb_vars(['DEPLOY_DIR_SRC']) |
| 288 | for target_file_name in ['ed-1.14.1.tar.lz', 'hello.c']: | 288 | for target_file_name in ['ed-1.21.1.tar.lz', 'hello.c']: |
| 289 | glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name) | 289 | glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name) |
| 290 | glob_result = glob.glob(glob_str) | 290 | glob_result = glob.glob(glob_str) |
| 291 | self.assertTrue(glob_result, 'Missing archive file %s' % (target_file_name)) | 291 | self.assertTrue(glob_result, 'Missing archive file %s' % (target_file_name)) |
diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py b/meta/lib/oeqa/selftest/cases/bbtests.py index 1cec77b72c..51934ef70d 100644 --- a/meta/lib/oeqa/selftest/cases/bbtests.py +++ b/meta/lib/oeqa/selftest/cases/bbtests.py | |||
| @@ -233,6 +233,7 @@ INHERIT:remove = \"report-error\" | |||
| 233 | 233 | ||
| 234 | def test_non_gplv3(self): | 234 | def test_non_gplv3(self): |
| 235 | self.write_config('''INCOMPATIBLE_LICENSE = "GPL-3.0-or-later" | 235 | self.write_config('''INCOMPATIBLE_LICENSE = "GPL-3.0-or-later" |
| 236 | OVERRIDES .= ":gplv3test" | ||
| 236 | require conf/distro/include/no-gplv3.inc | 237 | require conf/distro/include/no-gplv3.inc |
| 237 | ''') | 238 | ''') |
| 238 | result = bitbake('selftest-ed', ignore_status=True) | 239 | result = bitbake('selftest-ed', ignore_status=True) |
| @@ -241,7 +242,7 @@ require conf/distro/include/no-gplv3.inc | |||
| 241 | arch = get_bb_var('SSTATE_PKGARCH') | 242 | arch = get_bb_var('SSTATE_PKGARCH') |
| 242 | filename = os.path.join(lic_dir, arch, 'selftest-ed', 'generic_GPL-3.0-or-later') | 243 | filename = os.path.join(lic_dir, arch, 'selftest-ed', 'generic_GPL-3.0-or-later') |
| 243 | self.assertFalse(os.path.isfile(filename), msg="License file %s exists and shouldn't" % filename) | 244 | self.assertFalse(os.path.isfile(filename), msg="License file %s exists and shouldn't" % filename) |
| 244 | filename = os.path.join(lic_dir, arch, 'selftest-ed', 'generic_GPL-2.0-or-later') | 245 | filename = os.path.join(lic_dir, arch, 'selftest-ed', 'generic_GPL-2.0-only') |
| 245 | self.assertTrue(os.path.isfile(filename), msg="License file %s doesn't exist" % filename) | 246 | self.assertTrue(os.path.isfile(filename), msg="License file %s doesn't exist" % filename) |
| 246 | 247 | ||
| 247 | def test_setscene_only(self): | 248 | def test_setscene_only(self): |
