Make the base image for Linux AppImage builds configurable #947
Labels
enhancement
New features, or improvements to existing features.
linux
The issue relates Linux support.
Linux AppImage builds currently use an Ubuntu 18.04 base image. This has already been changed from Ubuntu 16.04 (which was the default when Briefcase 0.3.0 was released); at some point in the future, it is inevitable that we'll need to change this base image again.
There have already been bugs reported (e.g., #945) that would be easier to avoid if the base image was Ubuntu 20.04, Ubuntu 22.04, or something else.
Describe the solution you'd like
It should be possible, as an end-user, to specify which base image you wish to use; e.g.,
base_image = "ubuntu:22.04"
This would effectively be a proxy for replacing the
template
andsupport_package
URLs to a different pair. This would also necessitate the publication of an updated template that recognised different base images, and support packages for all supported base images.Describe alternatives you've considered
template
andsupport_package
so that people can opt into 20.04 or 22.04 as a base image, but retain the default as 18.04; and modify thebriefcase-template
to be explicit about thetemplate
/template_branch
/support_package
for AppImage projects. This way, we encourage users to be explicit about their base image, and don't require an additional setting (which would have ambiguities if you specified bothtemplate
/support_package
andbase_image
)Additional context
The use of Ubuntu base images is somewhat arbitrary, and mildly in conflict with Python packaging. If/when we make this change, it may also make sense to adopt
manylinux
as a base - that way, the base image being specified would match the binary compatibility tags used by Python binary packages. This would be much easier to explain than the current situation of establishing whether Ubuntu 18.04 is compatible with manylinux2_28.Making this switch has it's own complications; we've investigated this option in the past, and gave up for reasons related to GUI libraries packaging.
The text was updated successfully, but these errors were encountered: