Build scripts with perfect dependencies

@article{Spall2020BuildSW,
  title={Build scripts with perfect dependencies},
  author={Sarah Spall and Neil Mitchell and Sam Tobin-Hochstadt},
  journal={Proceedings of the ACM on Programming Languages},
  year={2020},
  volume={4},
  pages={1 - 28}
}
Build scripts for most build systems describe the actions to run, and the dependencies between those actions - but often build scripts get those dependencies wrong. Most build scripts have both too few dependencies (leading to incorrect build outputs) and too many dependencies (leading to excessive rebuilds and reduced parallelism). Any programmer who has wondered why a small change led to excess compilation, or who resorted to a clean step, has suffered the ill effects of incorrect dependency… Expand
LaForge: Always-Correct and Fast Incremental Builds from Simple Specifications
TLDR
This work introduces LAFORGE, a novel build tool that eliminates the need to specify dependencies or incremental build steps, and shows that build specifications can be both simple and fast. Expand

References

SHOWING 1-10 OF 54 REFERENCES
Shake before building: replacing make with haskell
TLDR
This work shows how to eliminate the dependency restriction in build tools, allowing additional dependencies to be specified while building, and has implemented the ideas in the Haskell library Shake, and used Shake to write a complex build system which compiles millions of lines of code. Expand
Scalable Incremental Building with Dynamic Task Dependencies
TLDR
A new incremental build algorithm is presented 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 and is independent of the size of the software project being built. Expand
A sound and optimal incremental build system with dynamic dependencies
TLDR
This work presents a build system called pluto that supports the definition of reusable, parameterized, interconnected builders and generalizes the traditional notion of time stamps to allow builders to declare their actual requirements on a file's content. Expand
Detecting Incorrect Build Rules
  • N. Licker, A. Rice
  • Computer Science
  • 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)
  • 2019
TLDR
The method is evaluated by exhaustively testing build rules of open-source projects, uncovering issues leading to race conditions and faulty builds in 31 of them, and provides a discussion of the bugs it detects, identifying anti-patterns in the use of the macro languages. Expand
Detecting incorrect build rules
TLDR
The method is evaluated by exhaustively testing build rules of open-source projects, uncovering issues leading to race conditions and faulty builds in 30 of them, and provides a discussion of the bugs it detects, identifying anti-patterns in the use of the macro languages. Expand
Non-recursive make considered harmful: build systems at scale
TLDR
Functional programming is used to design abstractions for build systems, and implemented on top of the Shake library, which allows them to describe build rules and dependencies, which is more scalable, faster, and spectacularly more maintainable than its Make-based predecessor. Expand
Non-recursive make considered harmful: build systems at scale
Most build systems start small and simple, but over time grow into hairy monsters that few dare to touch. As we demonstrate in this paper, there are a few issues that cause build systems majorExpand
An empirical study of unspecified dependencies in make-based build systems
TLDR
A case study on unspecified dependencies in the make-based build systems of the glib, openldap, linux and qt open source projects is presented and it is found that unspecified dependencies are common. Expand
Non-recursive Make Considered Harmful
TLDR
Functional programming is used to design abstractions for build systems, and implemented on top of the Shake library, which allows them to describe build rules and dependencies, which is more scalable, faster, and spectacularly more maintainable than its Make-based predecessor. Expand
PIE: A Domain-Specific Language for Interactive Software Development Pipelines
TLDR
PIE is developed, a Domain-Specific Language (DSL), API, and runtime for developing interactive software development pipelines, that enables direct and concise expression of pipelines without boilerplate, reducing the development and maintenance effort of pipelines. Expand
...
1
2
3
4
5
...