Abstract
Build systems are used in all but the smallest software projects to invoke the right build tools on the right files in the right order. A build system must be sound (after a build, generated files consistently reflect the latest source files) and efficient (recheck and rebuild as few build units as possible). Contemporary build systems provide limited efficiency because they lack support for expressing fine-grained file dependencies. We present a build system called pluto that supports the definition of reusable, parameterized, interconnected builders. When run, a builder notifies the build system about dynamically required and produced files as well as about other builders whose results are needed. To support fine-grained file dependencies, we generalize the traditional notion of time stamps to allow builders to declare their actual requirements on a file's content. pluto collects the requirements and products of a builder with their stamps in a build summary. This enables pluto to provides provably sound and optimal incremental rebuilding. To support dynamic dependencies, our rebuild algorithm interleaves dependency analysis and builder execution and enforces invariants on the dependency graph through a dynamic analysis. We have developed pluto as a Java API and used it to implement more than 25 builders. We describe our experience with migrating a larger Ant build script to pluto and compare the respective build times.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
13 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Does using Bazel help speed up continuous integration builds?;Empirical Software Engineering;2024-07-19
2. Options Matter: Documenting and Fixing Non-Reproducible Builds in Highly-Configurable Systems;Proceedings of the 21st International Conference on Mining Software Repositories;2024-04-15
3. Towards incremental build of software configurations;Proceedings of the ACM/IEEE 44th International Conference on Software Engineering: New Ideas and Emerging Results;2022-05-21
4. On the benefits and limits of incremental build of software configurations;Proceedings of the 44th International Conference on Software Engineering;2022-05-21
5. Towards Incremental Build of Software Configurations;2022 IEEE/ACM 44th International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER);2022-05