summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/bbconfigbuild/configfragments.py7
-rw-r--r--meta/lib/oeqa/selftest/cases/bblayers.py15
2 files changed, 15 insertions, 7 deletions
diff --git a/meta/lib/bbconfigbuild/configfragments.py b/meta/lib/bbconfigbuild/configfragments.py
index 452e418c38..fec985b442 100644
--- a/meta/lib/bbconfigbuild/configfragments.py
+++ b/meta/lib/bbconfigbuild/configfragments.py
@@ -104,8 +104,11 @@ class ConfigFragmentsPlugin(LayerPlugin):
104 return True 104 return True
105 return False 105 return False
106 106
107 def fragment_prefix(self, fragmentname):
108 return fragmentname.split("/",1)[0]
109
107 def builtin_fragment_exists(self, fragmentname): 110 def builtin_fragment_exists(self, fragmentname):
108 fragment_prefix = fragmentname.split("/",1)[0] 111 fragment_prefix = self.fragment_prefix(fragmentname)
109 fragment_prefix_defs = set([f.split(':')[0] for f in self.tinfoil.config_data.getVar('OE_FRAGMENTS_BUILTIN').split()]) 112 fragment_prefix_defs = set([f.split(':')[0] for f in self.tinfoil.config_data.getVar('OE_FRAGMENTS_BUILTIN').split()])
110 return fragment_prefix in fragment_prefix_defs 113 return fragment_prefix in fragment_prefix_defs
111 114
@@ -128,6 +131,8 @@ class ConfigFragmentsPlugin(LayerPlugin):
128 if f in enabled_fragments: 131 if f in enabled_fragments:
129 print("Fragment {} already included in {}".format(f, args.confpath)) 132 print("Fragment {} already included in {}".format(f, args.confpath))
130 else: 133 else:
134 # first filter out all built-in fragments with the same prefix as the one that is being enabled
135 enabled_fragments = [fragment for fragment in enabled_fragments if not(self.builtin_fragment_exists(fragment) and self.fragment_prefix(fragment) == self.fragment_prefix(f))]
131 enabled_fragments.append(f) 136 enabled_fragments.append(f)
132 return " ".join(enabled_fragments), None, 0, True 137 return " ".join(enabled_fragments), None, 0, True
133 138
diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py b/meta/lib/oeqa/selftest/cases/bblayers.py
index d82c5aaf37..7eb176aa04 100644
--- a/meta/lib/oeqa/selftest/cases/bblayers.py
+++ b/meta/lib/oeqa/selftest/cases/bblayers.py
@@ -281,11 +281,11 @@ class BitbakeConfigBuild(OESelftestTestCase):
281 2. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting 281 2. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting
282 the fragment. 282 the fragment.
283 3. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting 283 3. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set after setting
284 the fragment with another value that overrides the first one. 284 the fragment with another value that replaces the first one.
285 4. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is set to the previous 285 4. Repeat steps 2 and 3 to verify that going back and forth between values
286 value after removing the second assignment (from step 3). 286 works.
287 5. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is not set after 287 5. Verify that SELFTEST_BUILTIN_FRAGMENT_VARIABLE is not set after
288 removing the original assignment. 288 removing the final assignment.
289 """ 289 """
290 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None) 290 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None)
291 291
@@ -295,10 +295,13 @@ class BitbakeConfigBuild(OESelftestTestCase):
295 runCmd('bitbake-config-build enable-fragment selftest-fragment/someothervalue') 295 runCmd('bitbake-config-build enable-fragment selftest-fragment/someothervalue')
296 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'someothervalue') 296 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'someothervalue')
297 297
298 runCmd('bitbake-config-build disable-fragment selftest-fragment/someothervalue') 298 runCmd('bitbake-config-build enable-fragment selftest-fragment/somevalue')
299 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'somevalue') 299 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'somevalue')
300 300
301 runCmd('bitbake-config-build disable-fragment selftest-fragment/somevalue') 301 runCmd('bitbake-config-build enable-fragment selftest-fragment/someothervalue')
302 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), 'someothervalue')
303
304 runCmd('bitbake-config-build disable-fragment selftest-fragment/someothervalue')
302 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None) 305 self.assertEqual(get_bb_var('SELFTEST_BUILTIN_FRAGMENT_VARIABLE'), None)
303 306
304 def test_show_fragment(self): 307 def test_show_fragment(self):