Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

652 lines
32 KiB

2 years ago
----------------------------------------
ChangeLog for TriBITS
----------------------------------------
## 2023-02-24:
* **Changed:** Upgraded minimum required CMake version from 3.17 to 3.23.
Existing TriBITS projects that have already upgraded to require CMake 3.23+
should not notice any major changes due to this change.
## 2023-02-21:
* **Added:** Added support for pre-installed internal packages treated as
external packages. Now, any set of internally defined TriBITS packages for
a TriBITS project can be pre-built and pre-installed and the remaining
packages in the TriBITS project can be configured to point to those by
setting `-D TPL_ENABLE_<Package>=ON`. This allows great flexibility in how
a TriBITS project's packages can be and built, installed, and deployed.
This technically implements "Use Case 3: Configure/build pointing to a
subset of already installed TriBITS packages in same repo" in [TriBITS
#63](https://github.com/TriBITSPub/TriBITS/issues/63). See the section
"Building against pre-installed packages" in the updated build reference
documentation for details.
* **Fixed:** Setting `-D<Project>_ENABLE_<TplName>=ON` for an external
package/TPL `<TplName>` will not correctly enable and process the TPL.
## 2022-12-07:
* **Changed:** Setting `-D<Project>_ENABLE_<TplName>=ON` now triggers the
enable an external package/TPL `<TplName>` similar to the way that
`-DTPL_ENABLE_<TplName>` has always done. This is technically a change in
backward compatibility because setting `<Project>_ENABLE_<TplName>=ON` for
an external package/TPL used to be ignored. This change was done as part of
a general refactoring to unify the handling of internal and external
packages and is a side effect of that refactoring (see [TriBITS
#63](https://github.com/TriBITSPub/TriBITS/issues/63)). (Initially, setting
`-D<Project>_ENABLE_<TplName>=ON` resulted in a failed configure because the
refactoring was not complete for the handling of external packages/TPL. But
this was fixed in a latter update.)
## 2023-10-25:
* **Added:** New option `<Project>_SKIP_INSTALL_PROJECT_CMAKE_CONFIG_FILES`
skips the install of the project-level `<Project>Config.cmake` file. The
default value is ``FALSE`` so as to maintain backward compatibility. (The
project can change the default.)
* **Changed:** External packages/TPLs are now processed at the base project
scope level. This allows simple `set()` statements in package module files
or config files included by `find_package()` to have project-level scope for
the entire TriBITS project. This is more similar to how a raw CMake project
would usually behave that calls `find_package()` in the base
`CMakeLists.txt` file. Before, calls to `find_package()` were wrapped in a
CMake `function()` called from the base project directory scope. So while
IMPORTED targets created from a `find_package()` command where visible at
the base directory project-level scope, local variables were not. With this
change, now they are.
## 2023-01-10:
* **Added:** Added back support for deprecated variable
`<Project>_ASSERT_MISSING_PACKAGES` that was removed
[2022-10-11](#2022-10-11). When `<Project>_ASSERT_MISSING_PACKAGES` is set
to a non-null value, it overrides the default value for
`<Project>_ASSERT_DEFINED_DEPENDENCIES` (but setting
`<Project>_ASSERT_DEFINED_DEPENDENCIES` in the cache takes precedence).
## 2023-01-06:
* **Changed:** Changed all TPL dependencies back to 'Optional' so that
disabling an external package/TPL will **not** disable any downstream
external packages/TPLs that list a dependency on that external package/TPL.
This undoes the change on [2022-10-20](#2022-10-20) and restores backward
compatibility to the behavior before that change.
## 2022-12-20:
* **Deprecated:** The macro `set_and_inc_dirs()` is deprecated and replaced by
`tribits_set_and_inc_dirs()`. Use the script
`TriBITS/refactoring/replace_set_and_inc_dirs_r.sh` to update
`CMakeLists.txt` files.
## 2022-11-03:
* **Deprecated:** The long-deprecated TriBITS function override
`include_directories()` now emits a deprecated warning. To replace all
usages of `include_directories()` that should be
`tribits_include_directories()`, use the script
`TriBITS/refactoring/replace_include_directories_r.sh` (see documentation in
that script).
* **Deprecated:** Many previously deprecated TriBITS features now will trigger
a CMake DEPRECATION warning message by default (by calling
`message(DEPRECATION ...)`). The message printed to the CMake output will
typically describe how to remove the usage of the deprecated feature. To
remove deprecation warnings, change to use the non-deprecated features
mentioned in the deprecation warning message. To temporarily disable
deprecation warnings, configure with `-D
TRIBITS_HANDLE_TRIBITS_DEPRECATED_CODE=IGNORE` (see build reference entry
for `TRIBITS_HANDLE_TRIBITS_DEPRECATED_CODE` for more details).
## 2022-10-20:
* **Changed:** Disabling an external package/TPL will now disable any
downstream external packages/TPLs that list a dependency on that external
package/TPL through its
[`FindTPL<tplName>Dependencies.cmake`](https://tribitspub.github.io/TriBITS/users_guide/index.html#findtpl-tplname-dependencies-cmake)
file. Prior to this, disabling an external package/TPL would not disable
dependent downstream external packages/TPLs (it would only disable
downstream dependent required internal packages). To avoid this, simply
leave the enable status of the upstream external package/TPL empty "" and no
downstream propagation of disables will take place.
## 2022-10-16:
* **Removed:** Removed the variables `<Project>_LIBRARY_DIRS`,
`<Project>_TPL_LIST` and `<Project>_TPL_LIBRARIES` from the installed
`<Project>Config.cmake` file. These are not needed after the change to
modern CMake targets `<Package>::all_libs` (see `<Package>::all_libs`
below). To determine if a TPL is enabled, check `if (TARGET
<tplName>::all_libs)`. To get the libraries and include dirs for a TPL,
link against the IMPORTED target `<tplName>::all_libs` (see the updated
TriBITS example APP projects for details).
* **Removed:** Removed the variables `<Package>_PACKAGE_LIST`,
`<Package>_TPL_LIST`, `<Package>_INCLUDE_DIR`, `<Package>_LIBRARY_DIRS`,
`<Package>_TPL_INCLUDE_DIRS`, `<Package>_TPL_LIBRARIES` and
`<Package>_TPL_LIBRARY_DIRS` from the generated `<Package>Config.cmake`
files. These are not needed with the move to modern CMake targets (see
`<Package>::all_libs` below).
* **Changed:** Changed `<Package>_LIBRARIES` in generated
`<Package>Config.cmake` files from the full list of the package's library
targets to just `<Package>::all_libs`. (There is no need to list the
individual libraries after the move to modern CMake targets.)
## 2022-10-11:
* **Changed:** Added option `<Project>_ASSERT_DEFINED_DEPENDENCIES` to
determine if listed external package/TPL and internal package dependencies
are defined within the project or not. The initial default is `FATAL_ERROR`
for development mode and `IGNORE` for release mode. (Previously, undefined
external package/TPL dependencies where ignore.) To set a different
default, set `<Project>_ASSERT_DEFINED_DEPENDENCIES_DEFAULT` to `WARNING`,
for example, in the project's `ProjectName.cmake` file.
* **Removed:** `<Project>_ASSERT_MISSING_PACKAGES` has been removed and setting
it will result in a `FATAL_ERROR`. Instead, use
`<Project>_ASSERT_DEFINED_DEPENDENCIES` (and make sure all of your project's
listed TPL dependencies are all defined within the project).
## 2022-10-02:
* **Changed:** The TriBITS FindTPLCUDA.cmake module changed
`find_package(CUDA)` to `find_package(CUDAToolkit)` (the former is
deprecated as of CMake 3.17). This avoids imported target namespace
conflicts with downstream CMake projects that call
`find_package(CUDAToolkit)` (see [Trilinos
#10954](https://github.com/trilinos/Trilinos/issues/10954)).
## 2022-09-16:
* **Changed:** Changed nomenclature for packages and TPLs (see updated
"Maintainers Guide" section "TriBITS System Data Structures"): "TPLs" =>
"External Packages/TPLs"; "Packages" => "Internal Top-Level Packages"; "SE
Packages" => "Internal Packages". This impacted many internal variables as
well as printed qualities. Behavior should otherwise be identical
w.r.t. input state. The only observable change that users should see is the
text used to describe the different sets of packages and TPLs. (This is
working towards a uniform handling of packages and TPLs (see [TriBITS
#63](https://github.com/TriBITSPub/TriBITS/issues/63)).
* **Deprecated:** The rarely used input var
`<Project>_GENERATE_EXPORT_FILES_FOR_ONLY_LISTED_SE_PACKAGES` is deprecated
and the new var name
`<Project>_GENERATE_EXPORT_FILES_FOR_ONLY_LISTED_PACKAGES` should be used
instead.
## 2022-08-22:
* **Added:** Added support for exporting cache variables for packages in their
`<Package>Config.cmake` files using the new function
`tribits_pkg_export_cache_var()`.
## 2022-08-18:
* **Changed:** Made setting parent package tests/examples enable/disable
correctly propagate down to subpackages in a more intuitive way (see
[TriBITSPub/TriBITS#268](https://github.com/TriBITSPub/TriBITS/issues/268)).
This also results in not enabling tests for subpackages that are not
explicitly enabled or enabled as part of the forward sweep of packages
enables due to `<Project>_ENABLE_ALL_FORWARD_DEP_PACKAGES=ON`.
## 2022-08-11:
* **Changed:** Fix a bug where the test dependencies for an enabled
subpackage that resulted in a build error (see
[trilinos/Trilinos#10842](https://github.com/trilinos/Trilinos/issues/10842)
and
[TriBITSPub/TriBITS#510](https://github.com/TriBITSPub/TriBITS/issues/510)).
## 2022-07-20:
* **Changed:** Fixed TriBITS generated and installed `<tplName>Config.cmake`
files to not point into the build dir but instead point into relative dir
for upstream TPL's when calling find_dependency() (see
[TribitsPub/TriBITS#500](https://github.com/TriBITSPub/TriBITS/issues/500)).
This also makes these files relocatable.
## 2022-07-14:
* **Added:** Added support for `FindTPL<tplName>Dependencies.cmake` with new
macro `tribits_extpkg_define_dependencies()` that sets
`<tplName>_LIB_ALL_DEPENDENCIES`. Now `<tplName>_LIB_ENABLED_DEPENDENCIES`
is automatically set from `<tplName>_LIB_ALL_DEPENDENCIES` based on what
TPLs are actually enabled. This avoids the problem described below from
directly setting `<tplName>_LIB_ENABLED_DEPENDENCIES` without reguard to
what TPLs are actually enabled. This maintains backward compatibility for
existing configure scripts where an upstream TPL may not be enabled in some
strange configure scripts (see
[TriBITSPub/TriBITS#494](https://github.com/TriBITSPub/TriBITS/issues/494)).
## 2022-05-25:
* **Changed:** Dependencies between external packages (TPLs) must now be
specified in order for correct linkage. No longer will listing the external
packages (TPLs) in the correct order in the `<repoDir>/TPLsList.cmake` file
and listing all upstream external packages (TPLs) in
`<packageDir>/cmake/Dependencies.cmake` be sufficient. For now,
dependencies between external packages (TPLs) can be set in the
`<packageDir>/TPLsList.cmake` file by setting the cache var
`<tplName>_LIB_ENABLED_DEPENDENCIES` for each downstream external package
(TPL). (See
[`TribitsExampleProject2/TPLsList.cmake`](https://github.com/TriBITSPub/TriBITS/blob/master/tribits/examples/TribitsExampleProject2/TPLsList.cmake)
for an example.) Later, a more scalable approach for setting these vars
will be devised. However, this means it is no longer necessary for a
package to list all of its upstream external packages/TPLs, only its direct
dependencies.
* **Changed:** All compliant external packages (TPLs) must now set the
imported target `<tplName>::all_libs` in their `FindTPL<tplName>.cmake`
files instead of the variables `TPL_<tplName>_INCLUDE` and
`TPL_<tplName>_LIBRARIES`.
* **Changed:** The project-level variables `<Project>_INCLUDE_DIRS`,
`<Project>_TPL_INCLUDE_DIRS`, `<Project>_LIBRARY_DIRS` and
`<Project>_TPL_LIBRARY_DIRS` from the file `<Project>Config.cmake` and
package-level variables `<Package>_INCLUDE_DIRS`,
`<Package>_TPL_INCLUDE_DIRS`, `<Package>_LIBRARY_DIRS` and
`<Package>_TPL_LIBRARY_DIRS` from the installed files
`<Package>Config.cmake` are now set to empty. Downstream CMake projects
will need to link against the exported project-level target
`<Project>::all_libs` or `<Project>::all_selected_libs` or the package-level
targets `<Package>::all_libs` in order to get the list of include
directories that are propagated through those targets by CMake.
* **Changed:** The function `tribits_add_library()` no longer sets the
directory property `INCLUDE_DIRECTORIES` and instead passes include
directory information between targets directly using the
`INTERFACE_INCLUDE_DIRECTORIES` target property. This may result in
situations where include directories were getting set through the directory
property `INCLUDE_DIRECTORIES` and getting picked up in the builds of
targets that lacked the proper library dependencies. Therefore, this is
technically a break in backward compatibility, but not for well-formed
TriBITS projects.
* **Changed:** Variables `${PACKAGE_NAME}_ENABLE_<depPkg>` are now set to
`TRUE` for required upstream internal and external packages/TPLs `<depPkg>`
(in order to simplify internal TriBITS logic). However, a side-effect of
this change is that CMake code that was ifed out with an `if
(${PACKAGE_NAME}_ENABLE_<depPkg>)` statement (because that variable was not
defined and therefore defaults to `FLASE`) for a required upstream
dependency `<depPkg>` will now be enabled. (This mistake can happen when an
optional dependency `<depPkg>` is changed to a required dependency but the
`if()` statements based on `${PACKAGE_NAME}_ENABLE_<depPkg>` are not
removed. Well-formed TriBITS projects and packages should not experience
this problem or notice any change.)
## 2022-05-16:
* **Added:** The function `tribits_add_advanced_test(`) now correctly accepts
a list of regexes for `PASS_REGULAR_EXPRESSION` and
`FAIL_REGULAR_EXPRESSION` and behave the same as the raw CTest properties of
the same names.
## 2022-03-10:
* **Changed:** The `tribits_add_advanced_test()` command now correctly reports
unparsed/unrecognized arguments. This will break some sloppy usages. (One
TriBITS test had to be fixed.)
* **Changed:** The `tribits_add_test()` and `tribits_add_advanced_test()`
behave differently with data passed in with explicit colon arguments. For
example, before `PASS_REGULAR_EXPRESSION "<regex0>;<regex1>"` could be used
to pass in a list of regular expressions but with the new handling of
function arguments, this now gets set as a single regex
`"<regex0>\\;<regex1>"` which is not the same. The fix (that also works
with older versions of TriBITS) is to pass in multiple regexes as separate
arguments as `PASS_REGULAR_EXPRESSION "<regex0>" "<regex1>"`.
* **Added:** The `tribits_add_test()`, `tribits_add_advanced_test()`, and
`tribits_add_executable_and_test()` functions now allow handling semi-colons
';' in the quoted arguments to CMND/EXEC `ARGS` and `ENVIRONMENT` variable
values by adding a `LIST_SEPARATOR <sep>` argument (same as for
`ExternalProject_Add()`).
* **Changed:** The `tribits_add_test()` and `tribits_add_advanced_test()`
functions switched over from using `cmake_parse_arguments(... ${ARGN})` to
using `cmake_parse_arguments(PARSE_ARGV ...)` and, therefore, now will no
longer ignore empty arguments. This will break backward compatibility for
cases where empty quoted arguments like `"${SomeVar}"` are passed in where
the variable `SomeVar` is empty.
## 2022-03-02:
* **Added:** The project-level cache variable `<Project>_IMPORTED_NO_SYSTEM`
was added to set the `IMPORTED_NO_SYSTEM` property (CMake versions 3.23+
only) on the IMPORTED library targets in the installed
`<Package>Config.cmake` files (see updated TriBITS users guide and build
reference documentation for `<Project>_IMPORTED_NO_SYSTEM`). Setting this
to `ON` results in the include directories for this project's IMPORTED
library targets to be listed on the compile lines in downstream CMake
projects using `-I` instead of the default `-isystem` for IMPORTED library
targets. Setting this option to `ON` returns backward compatibility for the
move to modern CMake targets which involved setting the include directories
on the IMPORTED library targets using `target_include_directories()`
described below (which changed the include directories from being listed as
`-I` to `-isystem` by default).<br> **Workaround:** As a workaround for
CMake versions less than 3.23, downstream CMake projects can set
`CMAKE_NO_SYSTEM_FROM_IMPORTED=TRUE` in their CMake configure as described
below.<br> For more details, see
[TriBITSPub/TriBITS#443](https://github.com/TriBITSPub/TriBITS/issues/443).
## 2021-11-18:
* **Changed:** The default `<Project>_GENERATE_REPO_VERSION_FILE_DEFAULT` will
be overridden to `OFF` if the 'git' executable cannot be found at configure
time. See updated TriBITS Developer's Guide documentation.
* **Changed:** The default value for `<Project>_ENABLE_Fortran` is set to
`OFF` on WIN32 systems. (Getting a Fortran compiler for native Windows is
not typically very easy.)
## 2021-10-11
* **Changed:** The `<Package>Config.cmake` for each enabled package generated
in the build directory tree have been moved from
`<buildDir>/packages/<packageDir>/` to
`<buildDir>/cmake_packages/<PackageName>/`. (This makes it easy for
`find_package(<PackageName>)` to find these files by simply adding the
directory `<buildDir>/cmake_packages` to `CMAKE_PREFIX_PATH` and then
`<Package>Config.cmake` for any enabled package will be found automatically
found by CMake.)
* **Added/Changed:** Added the include directories for each library target
with `target_include_directories()`. This makes the usage of the variables
`<Package>_INCLUDE_DIRS`, `<Package>_TPL_INCLUDE_DIRS`,
`<Project>_INCLUDE_DIRS`, and `<Project>_TPL_INCLUDE_DIRS` unnecessary by
downstream CMake projects. (See the changes to the
`TribitsExampleApp/CmakeLists.txt` file that removed calls to
`include_directories()` involving these variables.) However, this change
will also cause downstream CMake projects to pull in include directories as
`SYSTEM` includes (e.g. using `-isystem` instead of `-I`) from IMPORTED
library targets. This changes how these include directories are searched
and could break some fragile build environments that have the same header
file names in multiple include directories searched by the compiler.
Changing to `-isystem` will also silence any regular compiler warnings from
headers found under these include directories.<br> ***Workarounds:*** One
workaround for this is for the downstream CMake project to set the cache
variable `CMAKE_NO_SYSTEM_FROM_IMPORTED=TRUE` which will restore the include
directories for the IMPORTED library targets for the TriBITS project as
non-SYSTEM include directories (i.e. `-I`) but it will also cause all
include directories for all IMPORTED library targets to be non-SYSTEM
(i.e. `-I`) even if they were being handled as SYSTEM include directories
using `-isystem` before. Therefore, that could still break the downstream
project as it might change what header files are found for these other
IMPORTED library targets and may expose many new warnings (which may have
been silenced by their include directories being pulled in using
`-isystem`). The other workaround would be to clean up the list of include
directories or delete some header files in those include directories so that
only the correct header files can be found (regardless of the include
directory search order). For more details, see
[TriBITSPub/TriBITS#443](https://github.com/TriBITSPub/TriBITS/issues/443).
## 2021-09-13
* **Removed:** Support for generation and installation of `Makefile.export.*`
files has been removed along with the cache variable
`<Project>_ENABLE_EXPORT_MAKEFILES`. This is to allow the refactoring of
TriBITS to use modern CMake targets that propagate all information and
removing complex dependency tracking information from TriBITS (see
TriBITSPub/TriBITS#63 and TriBITSPub/TriBITS#299).
## 2021-06-17
* **Added:** Added tool `tribits/python_utils/lower_case_cmake.py` and driver
`tribits/refactoring/lower-case-cmake-tree.sh` that can make CMake command
calls lower-case and make macro and function definition names lower case.
This was applied to the entire TriBITS repository (and then minor
modifications to fix a few issues). This should not impact users of TriBITS
but it does change the case of commands in the TriBITS error messages. (See
TriBITSPub/TriBITS#274)
## 2021-05-15
* **Changed/Fixed:** Changed so that all arguments passed to `ctest -S`
command in 'dashboard' target are passed if their value is non-empty instead
of `TRUE`. Also, `CTEST_BUILD_NAME`, `TRIBITS_2ND_CTEST_DROP_SITE` and
`TRIBITS_2ND_CTEST_DROP_LOCATION` can now be set and overridden in the CMake
configure and will get passed to the `ctest -S` command by the 'dashboard'
target. This now allows setting these latter vars to `OFF` or `FALSE` which
allows skipping a submit to a secondary CDash site if the underlying project
is set up to submit to a secondary CDash site by default (see
trilinos/Trilinos#9079). These changes technically break backward
compatibility because now setting some vars in the CMake configure will now
get passed on to `ctest -S` command in the 'dashboard' target and some vars
set in the env when calling 'make dashboard' will now be ignored if they
were set in the CMake cache. But many of these vars are only forwarded to
the ctest -S command in the env if they are set to non-empty in the
configure. So existing processes that set `CTEST_BUILD_NAME` in the env
when running `make dashboard` but not in the CMake configure will still
behave the same (which is why no existing TriBITS tests had to change). For
these reasons, the chance of these changes causing a problem for most users
should be very small and in fact it restores what most people would consider
to be logical and useful behavior.
## 2021-03-12
* **Changed:** Upgrade minimum required CMake version from 3.10 to 3.17. Existing
TriBITS projects that have already upgraded to require CMake 3.17+ should not
notice any major changes due to this change.
## 2020-11-12
* **Changed:** The default for `<Project>_ENABLE_EXPLICIT_INSTANTIATION` (ETI)
was changed from `OFF` to `ON`. This was turned on in practice for almost
all users of Trilinos so while this change technically breaks backward
compatibility of TriBITS, in practice, this will likely not impact any
important customers. (And new customers of Trilinos and related TriBITS
projects will enjoy the benefits of ETI by default. See
trilinos/Trilinos#8130.)
## 2020-10-08
* **Changed:** Tests defined with `TRIBITS_ADD_TEST()` and
`TRIBITS_ADD_ADVANCED_TEST()` with `NUM_MPI_PROCS > 1` will now not be
added for non-MPI (`TPL_ENABLE_MPI=OFF`) configurations. Before, the test
would get added and basically ignore the value of `NUM_MPI_PROCS`. This
change together with the change to move to using `add_test(NAME <name>
COMMAND <command>)` mostly restores backward compatibility for projects
using TriBITS. For more details, see trilinos/Trilinos#8110.
## 2020-09-28
* **Changed/Fixed:** Tests defined with `TRIBITS_ADD_TEST()` and
`TRIBITS_ADD_ADVANCED_TEST()` have been updated from using
`add_test(<name> <command>)` to using `add_test(NAME <name> COMMAND
<command>)`. This now causes CMake to error-out if there is more than one
test with the same name in the same directory. Before, CMake would allow
it (but the behavior in that case was undocumented and undefined). For
more details, see trilinos/Trilinos#8110.
## 2020-06-16
* **Added/Deprecated:** The variables `<Package>_FORTRAN_COMPILER` and
`<Package>_FORTRAN_FLAGS` in the `<Package>Config.cmake` files (in the build
dir and the install dir) are deprecated. Please use the new variables
`<Package>_Fortran_COMPILER` and `<Package>_Fortran_FLAGS`. (Justification:
In raw CMake, the compiler is called 'Fortran', not 'FORTRAN'. Also, the
name 'Fortran' is already used in the `<Project>Config.cmake` file.)
## 2020-04-16
* **Changed/Removed:** TriBITS Core: `CMAKE_CXX_STANDARD` is now always set to
at least `11` to enable C++11 support. The `${PROJECT_NAME}_ENABLE_CXX11`
option has been removed, but a variable of the same name is hard-coded to ON
for compatibility.
* **Changed/Removed:** TriBITS Core: `CMAKE_CXX_FLAGS` will no longer contain
an explicit C++ standard option like `-std=c++11`. TriBITS clients'
dependents using CMake will still compile with support for C++11 language
constructs because libraries come with `INTERFACE_COMPILE_FEATURES`
including `cxx_std_11`. However, those using `Makefile.export.<Package>`
files will no longer get a `-std=c++11` flag.
## 2018-10-10
* **Changed:** TriBITS Core: Changed minimum CMake version from 2.8.11 to
3.10.0.
## 2017-09-25
* **Added:** TriBITS CTest Driver: Added cache and env vars
`CTEST_SUBMIT_RETRY_COUNT` and `CTEST_SUBMIT_RETRY_DELAY` to allow the
number of `ctest_submit()` submit attempts to retry and how long to pause
between retries. Before, these were hard-coded to 25 and 120 respectively,
which means that something like a MySQL insertion error could consume as
much as 50 minutes before moving on! The new defaults are set at 5 retries
with a 3 sec delay (which appear to be the CTest defaults).
## 2017-09-30
* **Added:** TriBITS Core: Added `TEST_<IDX> COPY_FILES_TO_TEST_DIR` block for
`TRIBITS_ADD_ADVANCED_TEST()`. This was added in such a way so to avoid
clashing with existing usages of the script (since the new arguments
`SOURCE_DIR` and `DEST_DIR` are only parsed if `COPY_FILES_TO_TEST_DIR` is
listed in the `TEST_<IDX> block`.
## 2017-09-05
* **Changed:** TriBITS Core: Un-parsed and otherwise ignored arguments to many
TriBITS functions and macros are now flagged (see developers guide
documentation for `${PROJECT_NAME}_CHECK_FOR_UNPARSED_ARGUMENTS`). The
default value is `WARNING` which results in simply printing a warning but
allow configure to complete. This allows one to see the warnings but for
the project to continue to work as before. But this can be changed to
`SEND_ERROR` or `FATAL_ERROR` that will fail the configure.
## 2017-06-24
* **Added:** TriBITS CTest Driver: Add new all-at-once mode for `ctest -S`
driver scripts using `TRIBITS_CTEST_DRIVER()` by setting the variable
`${PROJECT_NAME}_CTEST_DO_ALL_AT_ONCE=TRUE`. This works with older versions
of CMake/CTest and CDash but, by default, will just return a single glob of
results, not breaking-out results on a package-by-package basis. Therefore,
this is disabled by default and package-by-package mode is used by default.
But if `${PROJECT_NAME}_CTEST_USE_NEW_AAO_FEATURES=TRUE` is set, then
TriBITS will take advantage of new CMake, CTest, and CDash features
(currently on a branch) to display the results on CDash broken down
package-by-package. Once these changes are merged to the CMake/CTest and
CDash 'master' branches, then the default for
`${PROJECT_NAME}_CTEST_USE_NEW_AAO_FEATURES` will be set to `TRUE`
automatically when it detects an updated version of CMake/CTest is present.
In the future, at some point, the TriBITS default for
`${PROJECT_NAME}_CTEST_DO_ALL_AT_ONCE` will change from `FALSE` to `TRUE`
since that is a much more efficient way to drive automated testing.
## 2017-05-25
* **Added/Deprecated:** TriBITS Core: The usage of `PARSE_ARGUMENTS()` has
been deprecated and replaced by `CMAKE_PARSE_ARGUMENTS()` everywhere in
TriBITS. Any call to `PARSE_ARGUMENTS()` will warn users and tell them to
use `CMAKE_PARSE_ARGUMENTS()` instead.
## 2017-05-17
* **Changed:** TriBITS Core: TriBITS now unconditionally sets
`${PROJECT_NAME}_ENABLE_Fortran_DEFAULT` to `ON`. Projects will now need to
put in special logic to set to `OFF` or `ON` for certain platforms.
## 2017-01-11
* **Changed/Fixed:** TriBITS Core: TriBITS now correctly sets the default
value for DART_TESTING_TIMEOUT to 1500 seconds and will scale it by
`<Project>_SCALE_TEST_TIMEOUT` even if `DART_TESTING_TIMEOUT` is not
explicitly set.
## 2016-12-07
* **Removed:** TriBITS Core: The long deprecated variable
`${PROJECT_NAME}_ENABLE_SECONDARY_STABLE_CODE` has been removed. Upgrading
existing TriBITS projects just requires a simple string replacement of
`_ENABLE_SECONDARY_STABLE_CODE` with `_ENABLE_SECONDARY_TESTED_CODE` in all
files. Since Trilinos has turned on ST code by default and many other
TriBITS projects don't differentiate between PT and ST code, this change
should not even break those projects, even if they don't update.
## 2016-11-02
* **Added/Changed/Removed:** TriBITS Python Utils: gitdist now accepts
`--dist-repos` and `--dist-not-repos` arguments and requires that the base
repo '.' be explicitly listed in the `.gitdist[.default]` files and in
`--dist-repos`. The arguments `--dist-extra-repos`,
`--dist-not-extra-repos` and `--dist-not-base-repo` are not longer
supported. See `gitdist --help` for more details.
* **Changed:** TriBITS projects now install with full RPATH set by default
(see "Setting install RPATH" in build reference guide).
## 2016-10-22
* **Changed:** TriBITS Core: `TRIBITS_ADD_TEST()` argument for
`FAIL_REGULAR_EXPRESSION` now works when circular RCP detection is enabled.
This is technically a break in backward compatibility since now that
argument will not be ignored and any tests that specified this may change
behavior.
* **Changed:** TriBITS Core: `TRIBITS_ADD_ADVANCED_TEST()` block `TEST_<IDX>`
argument `FAIL_REGULAR_EXPRESSION` now works. Before, it was just being
ignored. This is technically a break in backward compatibility since now
that argument will not be ignored and any tests that specified this may
change behavior.
* **Added/Changed:** TriBITS Core: Added `TRIBITS_ADD_ADVANCED_TEST()` block
`TEST_<IDX>` option `WILL_FAIL` that has the same behavior as the built-in
CTest option `WILL_FAIL`. Note that this technically can break backward
compatibility since `WILL_FAIL` may have been interpreted to be a value from
another argument and now will not.
## 2016-01-22
* **Added/Deprecated:** TriBITS Core: Change test category `WEEKLY` to `HEAVY`
and depreciate `WEEKLY`. You can still use `WEEKLY` but it will result in a
lot of warnings.
## 2015-12-03
* **Added:** TriBITS CI Support: `checkin-test.py`: Added support for tracking
branches for each repo independently and not assume 'origin' and not assume
that all of the repos are on the same branch or will be pulling and pushing
to the same remote branch. This will make it easier to use the
`checkin-test.py` script to set up various integration scenarios. See
TriBITSPub/TriBITS#15 for details.
## 2015-04-14
* MAJOR: TriBITS Core: When configuring with
${PROJECT_NAME}_ENABLE_CXX11=ON, if C++11 support cannot be verified, then
the configure will fail hard right away. Before, TriBITS would disable
C++11 support and continue.
## 2014-11-22
* **Added:** TriBITS Core: Added `${PROJECT_NAME}_TRACE_ADD_TEST`: Now you can
print a single line to STDOUT if a test got added (and its important
properties) or not and if not then why the test did not get added.
## 2014-09-22
* **Changed:** TriBITS Core: Changed minimum version of CMake from 2.7 to
2.8.11.
## 2014-09-21
* **Added:** TriBITS Dashboard Driver: Added support for the env var
`TRIBITS_TDD_USE_SYSTEM_CTEST` so that if equal to `1`, then the TriBITS
Dashboard Driver (TDD) system will use the CTest (and CMake) in the env will
be used instead of being downloaded using `download-cmake.py`. This not
only speeds up the automated builds, but it also ensures that the automated
testing uses exactly the install of CMake/CTest that is used by the
developers on the system. Also, it has been found that `download-cmake.py`
will download and install a 32bit version even on 64bit machines.
<!--
LocalWords: Fortran cmake CMake CMAKE ctest CTest CTEST CDash
LocalWords: MAKEFILES refactoring tribits TriBITS TriBITSPub trilinos Trilinos
LocalWords: INSTANTIATION STDOUT gitdist
-->