Towards Incremental Build of Software Configurations
Building software is a crucial task to compile, test, and deploy software systems while continuously ensuring quality. As software become more and more configurable, building multiple configurations is a pressing need, yet, costly and challenging to instrument. The common practice is to independently build (a.k.a. clean build) a software for a subset of configurations. While incremental build has been considered for software evolution and relatively small modifications of the source code, it has surprisingly not been considered for software configurations.
In this vision paper, we formulate the hypothesis that incremental build can reduce the cost of testing and exploring the configuration space of software systems. To investigate this hypothesis, we detail how we apply incremental build for two real-world application scenarios and conduct a preliminary evaluation on two case studies, namely x264 and Linux kernel. For x264, we found that an optimal ordering of random software configurations exists and reduces the overall build time. For Linux the incremental build does not bring benefits for random configurations because the distance between configurations is too strong. However, rather than operating on a random set, we show it is possible to control the process of generating configurations to ensure that local diversity is explored – in this case incremental build can reuse commonality and with a gain of 66%.