Page MenuHomePhabricator

[builds-builder] Determine the least invasive/smallest extra output buildpack needed to pair with Apt
Open, LowPublicSpike

Description

To side step XY problem discussions, the currently imagined use case for this is migrating AnomieBOT to a build service image. AnomieBOT is a Perl project, and the author would ideally like to use apt packages for installing Perl and the bot's library dependencies. There is no official Perl buildpack upstream at Heroku. My past experience researching the space of Perl library management (T214343: Create a Perl Docker image for use on the Toolforge Kubernetes cluster) concluded that the TMTOWTDI philosophy of Perl itself makes finding converged solutions difficult. This is very likely a contributing factor to the lack of official upstream support.

The Aptfile solution supported by apt-buildpack will allow installing Perl and related packages from Ubuntu's apt repos. The last time I experimented with Aptfile however I also found that it would only work in our particular build stack if another language specific buildpack also fired for the repository.

Missing Perl buildpack support is assumed to be one of several such missing runtimes that will eventually be discovered. Tcl is another runtime known to be supported by the Toolforge pre-built images that currently has no buildpack replacement. Additional implementation languages would also be available via apt with or without more workflow specific buildpack support.

I would like to know which of the buildpacks that qualify for enabling apt-buildpack places the least number of bytes in the resulting image. Are there any that would actually produce no binary change from the base image if given a carefully crafted input?

Alternately, can apt-buildpack or it's connection to the builder stack be changed such that it works standalone?

Event Timeline

Adding @Anomie as a subscriber because my conversations with him about AnomieBOT led to this request as noted in the description.

I would like to know which of the buildpacks that qualify for enabling apt-buildpack places the least number of bytes in the resulting image. Are there any that would actually produce no binary change from the base image if given a carefully crafted input?

Probably python (creating an empty requirements.txt at the root of the repo), php being close too (creating a composer.json).

Alternately, can apt-buildpack or it's connection to the builder stack be changed such that it works standalone?

It should be able to do it, will require some changes in the way we inject the extra buildpacks and some extra testing (combinations are hard, and they need to be in the right order).

dcaro renamed this task from [buildservice] Determine the least invasive/smallest extra output buildpack needed to pair with Apt to [builds-builder] Determine the least invasive/smallest extra output buildpack needed to pair with Apt.Apr 8 2024, 9:33 AM
dcaro triaged this task as Low priority.
dcaro moved this task from Backlog to Ready to be worked on on the Toolforge board.