The Tribal Build, Integration, and Test System (TriBITS) was first developed as a scalable CMake package-based architecture for the Trilinos project in 2008. TriBITS was later extracted from Trilinos and extended to support large multi-team/multi-repository projects like the DOE Consortium for Advanced Simulation of Light-Water Reactors (CASL) and its VERA codebase. TriBITS implemented a scalable package-based architecture for CMake projects eight years before there was native support for such an approach (i.e. using modern target-centric CMake features). However, some newer features in modern CMake were challenging to leverage in existing TriBITS projects using the original TriBITS implementation, and a refactoring and extension of TriBITS to conform to modern CMake was required.
This talk provides some background on TriBITS and recent work to modernize TriBITS to take advantage of modern target-based CMake. In addition to greatly simplifying the TriBITS implementation, this modernization of TriBITS has enabled more flexible and productive approaches to co-develop and deploy arbitrary subgraphs of dependent packages. It also better supports the integration of packages written in raw CMake (with minimal extra requirements beyond using modern CMake). Modern TriBITS continues to support existing productive package co-development and deployment workflows with Trilinos but also enables partitioned builds and deployments through the Spack system. Some possible future work will also be described, as well as the impact that work would have on various developer and user communities.
This talk provides some background on TriBITS and recent work to modernize TriBITS to take advantage of modern target-based CMake. In addition to greatly simplifying the TriBITS implementation, this modernization of TriBITS has enabled more flexible and productive approaches to co-develop and deploy arbitrary subgraphs of dependent packages. It also better supports the integration of packages written in raw CMake (with minimal extra requirements beyond using modern CMake). Modern TriBITS continues to support existing productive package co-development and deployment workflows with Trilinos but also enables partitioned builds and deployments through the Spack system. Some possible future work will also be described, as well as the impact that work would have on various developer and user communities.