Search code examples
electronelectron-builder

Electron builder - Define linux version


Im using electron which has already a production env running. For the last months I've been publishing normally with Electron-builder in my ci.yml file:

release-linux:
  stage: release
  image: electronuserland/builder:14
  before_script:
     - export ARCH="x64"
     - export BUILD_SCRIPT="build:linux"
     - apt-get update && apt-get install -y build-essential cmake
     - apt install -y libusb-1.0-0-dev libudev-dev

After running the - apt-get update && apt-get install -y build-essential cmake line there is the libc6 package installed which installs with latest (2.35).

My production environment is running on Ubuntu 20.04 LTS. I assume the docker image in which the release is made, is running on a newer version (asuming latest).

The problem is that I have some hardware devices which works correctly with libc6=2.31-0ubuntu9.2 (which is the version that was automatically installed previously by the docker image). Now, for some reason I don't know, the image is pulling the latest version of libc6 and my hardware devices stoped working.

  • Is there any way to force electron-builder to use a specific Linux/Ubuntu version?
  • Or maybe use the latest version of ubuntu but downgrading the libc6 version (tried this one but failed). Any instructions on how to do this are apreciated.

Updating Ubuntu's version at production is not an option right now, so I think the solution should be working out with this package/library version.


Solution

  • The problem solved out on its own randomly, but after some research, it was a electron-builder change which was causing the problem.

    In this commit changes log we can see that buildpack-deps was changed from buildpack-deps:22.04-curl (not working) to buildpack-deps:focal-curl (working).

    That give us a clue to where to look at. Here the official supported tags for Dockerfiles. Here we can see that focal-curl points to 20.04-curl which I suppose have a different output than 20.04 by its own.

    Then, looking at the gitlab jobs running with this ci configs, the libc6 dependency worked with different versions in each case. Our hardware works correctly with libc6=2.31 which is used when focal-curl is set by electron-builder dockerfile, but not with libc6=2.35 which is used by 20.04.

    This is not a solution, but it's the cause of the problem. Now working on how to setup the project to use only the correct configuration of electron-builder. Currently accepted to work with same config but being careful when releasing by watching which libc6 version is working with.