diff --git a/alibuild_helpers/utilities.py b/alibuild_helpers/utilities.py index 45abd99e..33973001 100644 --- a/alibuild_helpers/utilities.py +++ b/alibuild_helpers/utilities.py @@ -21,7 +21,7 @@ from alibuild_helpers.cmd import decode_with_fallback, getoutput from alibuild_helpers.git import git -from alibuild_helpers.log import dieOnError +from alibuild_helpers.log import warning, dieOnError class SpecError(Exception): @@ -383,10 +383,18 @@ def getPackageList(packages, specs, configDir, preferSystem, noSystem, dieOnError(spec["package"].lower() != pkg_filename, "%s.sh has different package field: %s" % (p, spec["package"])) - # Re-rewrite the defaults' name to "defaults-release". Everything auto- - # depends on "defaults-release", so we need something with that name. if p == "defaults-release": + # Re-rewrite the defaults' name to "defaults-release". Everything auto- + # depends on "defaults-release", so we need something with that name. spec["package"] = "defaults-release" + + # Never run the defaults' recipe, to match previous behaviour. + # Warn if a non-trivial recipe is found (i.e., one with any non-comment lines). + for line in map(str.strip, recipe.splitlines()): + if line and not line.startswith("#"): + warning("%s.sh contains a recipe, which will be ignored", pkg_filename) + recipe = "" + dieOnError(spec["package"] != p, "%s should be spelt %s." % (p, spec["package"])) diff --git a/tests/test_build.py b/tests/test_build.py index da46f0d0..2b0fef4d 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -26,6 +26,7 @@ package: defaults-release version: v1 --- +: this line should trigger a warning """ TEST_DEFAULT_RELEASE_BUILD_HASH = "27ce49698e818e8efb56b6eff6dd785e503df341" @@ -206,6 +207,7 @@ class BuildTestCase(unittest.TestCase): @patch("alibuild_helpers.build.sys") @patch("alibuild_helpers.build.dieOnError", new=MagicMock()) @patch("alibuild_helpers.utilities.dieOnError", new=MagicMock()) + @patch("alibuild_helpers.utilities.warning") @patch("alibuild_helpers.build.readDefaults", new=MagicMock(return_value=(OrderedDict({"package": "defaults-release", "disable": []}), ""))) @patch("alibuild_helpers.build.makedirs", new=MagicMock(return_value=None)) @@ -225,9 +227,10 @@ class BuildTestCase(unittest.TestCase): @patch("alibuild_helpers.workarea.is_writeable", new=MagicMock(return_value=True)) @patch("alibuild_helpers.build.basename", new=MagicMock(return_value="aliBuild")) @patch("alibuild_helpers.build.install_wrapper_script", new=MagicMock()) - def test_coverDoBuild(self, mock_debug, mock_glob, mock_sys, mock_git_git): + def test_coverDoBuild(self, mock_debug, mock_glob, mock_warning, mock_sys, mock_git_git): mock_git_git.side_effect = dummy_git mock_debug.side_effect = lambda *args: None + mock_warning.side_effect = lambda *args: None mock_glob.side_effect = lambda x: { "*": ["zlib"], "/sw/TARS/osx_x86-64/defaults-release/defaults-release-v1-*.osx_x86-64.tar.gz": ["/sw/TARS/osx_x86-64/defaults-release/defaults-release-v1-1.osx_x86-64.tar.gz"], @@ -286,8 +289,10 @@ def test_coverDoBuild(self, mock_debug, mock_glob, mock_sys, mock_git_git): mock_git_git.reset_mock() mock_debug.reset_mock() + mock_warning.reset_mock() exit_code = doBuild(args, mock_parser) self.assertEqual(exit_code, 0) + mock_warning.assert_called_with("%s.sh contains a recipe, which will be ignored", "defaults-release") mock_debug.assert_called_with("Everything done") self.assertEqual(mock_git_git.call_count, len(common_calls)) mock_git_git.assert_has_calls(common_calls, any_order=True) @@ -295,9 +300,11 @@ def test_coverDoBuild(self, mock_debug, mock_glob, mock_sys, mock_git_git): # Force fetching repos mock_git_git.reset_mock() mock_debug.reset_mock() + mock_warning.reset_mock() args.fetchRepos = True exit_code = doBuild(args, mock_parser) self.assertEqual(exit_code, 0) + mock_warning.assert_called_with("%s.sh contains a recipe, which will be ignored", "defaults-release") mock_debug.assert_called_with("Everything done") mock_glob.assert_called_with("/sw/TARS/osx_x86-64/ROOT/ROOT-v6-08-30-*.osx_x86-64.tar.gz") # We can't compare directly against the list of calls here as they @@ -311,7 +318,7 @@ def setup_spec(self, script): """Parse the alidist recipe in SCRIPT and return its spec.""" err, spec, recipe = parseRecipe(lambda: script) self.assertIsNone(err) - spec["recipe"] = recipe.strip("\n") + spec["recipe"] = "" if spec["package"].startswith("defaults-") else recipe.strip("\n") spec.setdefault("tag", spec["version"]) spec["tag"] = resolve_tag(spec) return spec