Scalable Incremental Building with Dynamic Task Dependencies

Conference Paper (2018)
Author(s)

G.D.P. Konat (TU Delft - Programming Languages)

S.T. Erdweg (TU Delft - Programming Languages)

Eelco Visser (TU Delft - Programming Languages)

Research Group
Programming Languages
Copyright
© 2018 G.D.P. Konat, S.T. Erdweg, Eelco Visser
DOI related publication
https://doi.org/10.1145/3238147.3238196
More Info
expand_more
Publication Year
2018
Language
English
Copyright
© 2018 G.D.P. Konat, S.T. Erdweg, Eelco Visser
Research Group
Programming Languages
Pages (from-to)
76-86
ISBN (print)
978-1-4503-5937-5
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Incremental build systems are essential for fast, reproducible software builds. Incremental build systems enable short feedback cycles when they capture dependencies precisely and selectively execute build tasks efficiently. A much overlooked feature of build systems is the expressiveness of the scripting language, which directly influences the maintainability of build scripts. In this paper, we present a new incremental build algorithm that allows build engineers to use a full-fledged programming language with explicit task invocation, value and file inspection facilities, and conditional and iterative language constructs. In contrast to prior work on incrementality for such programmable builds, our algorithm scales with the number of tasks affected by a change and is independent of the size of the software project being built. Specifically, our algorithm accepts a set of changed files, transitively detects and re-executes affected build tasks, but also accounts for new task dependencies discovered during building. We have evaluated the performance of our algorithm in a real-world case study and confirm its scalability.