Reputation: 11
I am wrapping my library into an executable using PyInstaller, automating it with GitHub Actions and using their runners to create the binaries.
For Linux, PyInstaller needs the app to be forward compatible (link), that means that I need the lowest possible version of Glibc in the machine that is creating the binary so that it will be able to work for that version and all above.
But Github decided to have all their runners with Node20 (link), which have in their requirements a minimum version of Glibc of 2.28 (link). I would like to get lower than that to be able to distribute to older versions of linux.
I'm currently trying to run the GitHub Actions inside containers from Docker, but what I have seen is that even there the version of Glibc seems way to new for me...
Part of the GitHub action is:
jobs:
container-test-job:
runs-on: ubuntu-18.04
container: node:16
timeout-minutes: 20
steps:
- name: Install dependencies into minimal dockerfile
run: |
# ubuntu dockerfile is very minimal (only 122 packages are installed)
# need to install updated git (from official git ppa)
apt update
apt install -y software-properties-common
apt-get install python3-launchpadlib -y
add-apt-repository ppa:git-core/ppa -y
# install dependencies expected by other steps
apt update
apt install -y git \
curl \
ca-certificates \
wget \
bzip2 \
zip \
unzip \
xz-utils \
maven \
ant sudo locales
# set Locale to en_US.UTF-8 (avoids hang during compilation)
locale-gen en_US.UTF-8
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US.UTF-8" >> $GITHUB_ENV
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: mamba-org/setup-micromamba@v1
with:
micromamba-version: '1.5.6-0'
micromamba-binary-path: ${{ runner.temp }}/bin/micromamba
environment-file: conda_environment_binary-old-linux.yaml
environment-name: copernicusmarine-binary-old-linux
condarc-file: .condarc
cache-environment: true
post-cleanup: 'all'
But still, setting to an older ubuntu and older node doesn't seem to make it.
Is there a way to fix the GLIBC version into the docker image to the one that I want?
Is there any other way to automate the creation of the binaries? (I already tried self-hosted but the current ones that I have seem to be newer also)
Upvotes: 1
Views: 271