diff --git a/CHANGELOG.md b/CHANGELOG.md index 3581d8851e495ba9682050acd0ea0b83dfacb649..e4e276d61642a9c19f2ee9b9a7b89acba80579c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bugfixes +* Fixed an issue where .template and .substitutions files with the same name would build incorrectly + ### Other changes * Replaced `tclx` script to expand .dbd files with a python script diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile index d650d0f5391d371285530502a45907272d6dea94..25bd11eeb16bc054290cfcca645bca6be5b7233d 100644 --- a/require-ess/tools/driver.makefile +++ b/require-ess/tools/driver.makefile @@ -269,16 +269,16 @@ db_internal: $(COMMON_DIR) VPATH += $(dir $(TMPS)) VPATH += $(dir $(SUBS)) -$(COMMON_DIR)/%.db: %.template - @printf "Inflating database ... %44s >>> %40s \n" "$^" "$@" - $(QUIET)$(MSI) -D $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^ > $(COMMON_DIR)/$(notdir $(basename $@).db).d - $(QUIET)$(MSI) $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^ - $(COMMON_DIR)/%.db: %.substitutions @printf "Inflating database ... %44s >>> %40s \n" "$^" "$@" $(QUIET)$(MSI) -D $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) -S $^ > $(COMMON_DIR)/$(notdir $(basename $@).db).d $(QUIET)$(MSI) $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) -S $^ +$(COMMON_DIR)/%.db: %.template + @printf "Inflating database ... %44s >>> %40s \n" "$^" "$@" + $(QUIET)$(MSI) -D $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^ > $(COMMON_DIR)/$(notdir $(basename $@).db).d + $(QUIET)$(MSI) $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^ + install build debug:: @echo "MAKING EPICS VERSION ${EPICSVERSION}" diff --git a/tests/test_build.py b/tests/test_build.py index 8af46ae12817bd9a4e626bf5723bc1a304944827..bd1be0830a71475b41b62261ce686155ef7a1c92 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -539,6 +539,37 @@ def test_expand_db_files(wrapper: Wrapper): ) +def test_substitution_template_priority(wrapper: Wrapper): + """Test that the automated template/substitution file expansion works.""" + + wrapper.add_var_to_module_makefile("TMPS", "a.template") + wrapper.add_var_to_module_makefile("SUBS", "a.substitutions") + + template_file = wrapper.module_dir / "a.template" + template_file_contents = "record (ai, $(FOO)) {}" + template_file.write_text(template_file_contents) + + substitution_file = wrapper.module_dir / "a.substitutions" + substitution_file.write_text( + """file "a.template" +{ + pattern { FOO } + { "$(BAR)" } +} +""" + ) + + base_version = wrapper.get_env_var("EPICS_VERSION_NUMBER") + common_dir = wrapper.module_dir / f"O.{base_version}_Common" + + rc, *_ = wrapper.run_make("db_internal") + assert rc == 0 + + expanded_template_file = common_dir / "a.db" + assert "BAR" in expanded_template_file.read_text() + assert "FOO" not in expanded_template_file.read_text() + + @pytest.mark.parametrize( "installed_archs, param, expected", [