From 1845141809aa91b03718066a6f46863885a6a887 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 7 Mar 2019 09:06:37 +0200 Subject: Add support for alternative build file/directory naming scheme Now the build/*.build, buildfile, and .buildignore filesystem entries in a project can alternatively (but consistently) be called build2/*.build2, build2file, and .build2ignore. See a note at the beginning of the Project Structure section in the manual for details (motivation, restrictions, etc). --- build2/test/script/runner.cxx | 24 ++++++++++++++++-------- build2/test/script/script.cxx | 6 +++--- build2/test/script/script.hxx | 5 +++-- 3 files changed, 22 insertions(+), 13 deletions(-) (limited to 'build2/test/script') diff --git a/build2/test/script/runner.cxx b/build2/test/script/runner.cxx index c8810316..0d3716fd 100644 --- a/build2/test/script/runner.cxx +++ b/build2/test/script/runner.cxx @@ -719,9 +719,13 @@ namespace build2 // alike utility functions so the failure message can contain // location info? // - fs_status r (sp.parent == nullptr - ? mkdir_buildignore (sp.wd_path, 2) - : mkdir (sp.wd_path, 2)); + fs_status r ( + sp.parent == nullptr + ? mkdir_buildignore ( + sp.wd_path, + sp.root->target_scope.root_scope ()->root_extra->buildignore_file, + 2) + : mkdir (sp.wd_path, 2)); if (r == mkdir_status::already_exists) fail << "working directory " << sp.wd_path << " already exists" << @@ -914,11 +918,15 @@ namespace build2 // a file cleanup when try to rmfile() directory instead of // file. // - rmdir_status r (recursive - ? rmdir_r (d, !wd, static_cast (v)) - : wd && sp.parent == nullptr - ? rmdir_buildignore (d, v) - : rmdir (d, v)); + rmdir_status r ( + recursive + ? rmdir_r (d, !wd, static_cast (v)) + : (wd && sp.parent == nullptr + ? rmdir_buildignore ( + d, + sp.root->target_scope.root_scope ()->root_extra->buildignore_file, + v) + : rmdir (d, v))); if (r == rmdir_status::success || (r == rmdir_status::not_exist && t == cleanup_type::maybe)) diff --git a/build2/test/script/script.cxx b/build2/test/script/script.cxx index f2a8d03a..94d6d8b8 100644 --- a/build2/test/script/script.cxx +++ b/build2/test/script/script.cxx @@ -517,6 +517,7 @@ namespace build2 const dir_path& rwd) : group (st.name == "testscript" ? string () : st.name, this), test_target (tt), + target_scope (tt.base_scope ()), script_target (st) { // Set the script working dir ($~) to $out_base/test/ (id_path @@ -563,7 +564,7 @@ namespace build2 // // @@ OUT: what if this is a @-qualified pair of names? // - t = search_existing (*n, tt.base_scope ()); + t = search_existing (*n, target_scope); if (t == nullptr) fail << "unknown target '" << *n << "' in test variable"; @@ -653,8 +654,7 @@ namespace build2 if (p.first) { if (var.override != nullptr) - p = s.test_target.base_scope ().find_override ( - var, move (p), true); + p = s.target_scope.find_override (var, move (p), true); return p.first; } diff --git a/build2/test/script/script.hxx b/build2/test/script/script.hxx index 479001b4..4da9d977 100644 --- a/build2/test/script/script.hxx +++ b/build2/test/script/script.hxx @@ -536,8 +536,9 @@ namespace build2 script& operator= (const script&) = delete; public: - const target& test_target; // Target we are testing. - const testscript& script_target; // Target of the testscript file. + const target& test_target; // Target we are testing. + const build2::scope& target_scope; // Base scope of test target. + const testscript& script_target; // Target of the testscript file. // Pre-parse data. // -- cgit