of just 4 environments for building all of the top 1000
“most popular” source packages. The work reported
here provides a clear way to think about the build
environment problem, and the experimental results
show that small sets of build environments are suffi-
cient, significantly improving on the ad hoc approach
to setting up build environments.
There are several directions for future work, and
we describe two immediate open problems here.
First, since dependencies can include disjunctions
(“or-lists”) that can be satisfied in multiple ways,
is there a way to do this that can reduce the num-
ber of build environments? More specifically, our
or-list resolution uses the same process as the stan-
dard Debian build tools, taking the package main-
tainer’s order of the or-list as the priority order for
satisfying the dependency. While this is certainly
a sound approach when making a single build envi-
ronment, when considering build environments sup-
porting multiple packages we may be able to reduce
the number of conflicts by making different choices.
For example, most source packages require either the
pkg-config or pkgconf package, but while pkgconf
is a drop-in replacement for the older pkg-config
some packages keep dependency specifications that
prioritize the older package. Since these two packages
conflict with each other, could forcing all packages to
use pkgconf, despite the package maintainer prior-
ity specification, reduce the number of conflicts and
hence the number of build environments required?
As a second open question, while we studied the
issue of coloring nested subgraphs, we were not able
to formulate a clear objective for this minimization.
Is there a metric for nested subgraph colorings that
makes sense in our setting? The metric may require
some additional information about the efficiency of
performing builds using these environments, or it
might depend on preferences of the users (i.e., priori-
tizing smaller overall number of environments or pri-
oritizing re-use of environments used for subgraphs),
so just determining the proper goal is a first step in
considering algorithms to solve this problem.
REFERENCES
Claes, M., Mens, T., Di Cosmo, R., and Vouillon, J. (2015).
A Historical Analysis of Debian Package Incompati-
bilities. In 2015 IEEE/ACM 12th Working Conference
on Mining Software Repositories, pages 212–223.
de Sousa, O. F., de Menezes M.A., and Penna, T.
(2009). Analysis of the package dependency on De-
bian GNU/Linux. Journal of Computational Interdis-
ciplinary Sciences, 1(2):127–133.
Decan, A., Mens, T., and Claes, M. (2016). On the topol-
ogy of package dependency networks: a comparison
of three programming language ecosystems. In Proc-
cedings of the 10th European Conference on Software
Architecture Workshops (ECSAW), pages 1–4.
Decan, A., Mens, T., and Grosjean, P. (2019). An empirical
comparison of dependency network evolution in seven
software packaging ecosystems. Empirical Software
Engineering, 24(1):381–416.
Di Cosmo, R., Treinen, R., and Zacchiroli, S. (2013). For-
mal Aspects of Free and Open Source Software Com-
ponents. In 11th International Symposium on Formal
Methods for Components and Objects (FMCO), pages
216–239.
Galindo, J., Benavides, D., and Segura, S. (2010). Debian
Packages Repositories as Software Product Line Mod-
els. Towards Automated Analysis. In Proceeding of
the First International Workshop on Automated Con-
figuration and Tailoring of Applications (ACOTA).
Garey, M. R. and Johnson, D. S. (1979). Computers and
intractability. W.H. Freeman, San Francisco.
Gonz
´
alez-Barahona, J. M., Robles, G., Ortu
˜
no-P
´
erez, M.,
Rodero-Merino, L., Centeno-Gonz
´
alez, J., Matell
´
an-
Olivera, V., and Castro-Barbero, E. (2003). Analyzing
the Anatomy of GNU/Linux Distributions: Method-
ology and Case Studies (Red Hat and Debian). In
Free/Open Source Software Development, Idea Group
Inc, pages 27–58.
Jackson, I., Schwarz, C., and Morris, D. A.
(2021). Debian policy manual (version 4.6.0.1).
https://www.debian.org/doc/debian-policy/.
Kikas, R., Gousios, G., Dumas, M., and Pfahl, D. (2017).
Structure and Evolution of Package Dependency Net-
works. In 2017 IEEE/ACM 14th International Confer-
ence on Mining Software Repositories (MSR), pages
102–112.
Mancinelli, F., Boender, J., di Cosmo, R., Vouillon,
J., Durak, B., Leroy, X., and Treinen, R. (2006).
Managing the Complexity of Large Free and Open
Source Package-Based Software Distributions. In 21st
IEEE/ACM International Conference on Automated
Software Engineering (ASE’06), pages 199–208.
Nussbaum, L. (2009). Rebuilding Debian using distributed
computing. In Proceedings of the 7th International
Workshop on Challenges of Large Applications in Dis-
tributed Environments (CLADE), pages 11–16.
The Ubuntu Web Team (2021). Ubuntu popularity contest.
https://popcon.ubuntu.com/.
Vouillon, J. and Cosmo, R. D. (2013). On software compo-
nent co-installability. ACM Transactions on Software
Engineering and Methodology, 22(4):34:1–34:35.
Wang, J., Wu, Q., Tan, Y., Xu, J., and Sun, X. (2015).
A graph method of package dependency analysis on
Linux Operating system. In 2015 4th International
Conference on Computer Science and Network Tech-
nology (ICCSNT), pages 412–415.
Minimum Size Build Environment Sets and Graph Coloring
67