Skip to content

Make the Linux base image configurable #717

@freakboy3742

Description

@freakboy3742

Linux AppImages are currently built on an Ubuntu 18.04 Docker image. This was selected as a version Linux that was "old enough" to ensure glibc compatibility with most versions of Linux likely to be seen in the wild.

However:

  1. The Python wheel ecosystem is based on the manylinux standard, which is based on various versions of Centos
  2. Although Ubuntu 18.04 is a "reasonable default", some modern libraries can't be deployed (or can't be deployed easily) on that operating system due to other binary dependencies.
  3. Old enough for most is not guaranteed to be old enough for all

Describe the solution you'd like

A solution in three parts:

  1. Move to using the manylinux Docker base images to support Linux AppImage builds
  2. Support multiple manylinux base image variants (at least manylinux2014; and possibly at least one manylinux_x_y variant)
  3. Make the selection of the base image a configurable option in Briefcase

Point (3) provides a way to provide backwards compatibility - if the base image isn't explicitly provided, use the current Ubuntu 18.04 default; otherwise, use the explicitly referenced base image. The briefcase project template can then specify one of these base images as a 'new' default. That update can change over time as new manylinux variants are formalised.

Describe alternatives you've considered

There isn't really an alternative here, other than making a project-level decision as to what "current" should mean for Linux support. There's no answer we can provide that will be old enough to support all users, while being current enough to support all users. Providing this as a user choice is the only real option - and also gives us more flexibility in the long term.

Additional context

beeware/Python-Linux-support#2 exists tracking the move at the support package level.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew features, or improvements to existing features.linuxThe issue relates Linux support.
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions