Closed AptiviCEO closed 6 months ago
hi @AptiviCEO , kindly provide minimal repro steps to understand
@vidyasagarnimmagaddi This is a minimal workflow that simply queries dpkg for information about the build-essential package. You can find it here: https://github.com/AptiviCEO/GhActionsBuildEssential.
Create a GitHub repository with this content in the .github/workflows/test.yml
file:
name: Test build-essential
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
strategy:
matrix:
runs-on: [ubuntu-latest, ubuntu-24.04]
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Testing build-essential
run: |
which make
dpkg -l build-essential
The Ubuntu 22.04 runner reports that the package is installed (ii), according to this output:
/usr/bin/make
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============-============-============-==============================================
ii build-essential 12.9ubuntu3 amd64 Informational list of build-essential packages
However, the Ubuntu 24.04 runner reports that the package is not installed (un):
/usr/bin/make
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============-============-============-=================================
un build-essential <none> <none> (no description available)
So, every job that explicitly checks for this package to be installed, such as the packaging process that I've linked earlier, will fail.
Hi @AptiviCEO ,
below are the some build-essential, we have already installed them.
[dpkg-dev] [g++]( [gcc] [make]
Could you please confirm once.
referral link: https://packages.ubuntu.com/noble/build-essential
I've confirmed that these packages are installed.
As a side note, I've made a minimal reproducible Debian packaging step by adding all the necessary Debian files and changing the workflow to look like this:
name: Test build-essential
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
strategy:
matrix:
runs-on: [ubuntu-latest, ubuntu-24.04]
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Testing build-essential
run: |
which make
dpkg -l build-essential dpkg-dev g++ gcc make
- name: Testing build-essential with Debian packaging
run: |
sudo apt install devscripts debhelper-compat dput
mv debian ..
mv .github ..
tar cfv ../testpkg_1.0.orig.tar .
xz ../testpkg_1.0.orig.tar
mv ../debian .
debuild -us -uc
The debuild -us -uc
command does explicitly check for the build-essential
package, and will fail if it's not installed as seen earlier:
un build-essential <none> <none> (no description available)
This failed on the Ubuntu 24.04 runner: (e-mails are redacted)
(...)
dpkg-buildpackage: info: source package testpkg
dpkg-buildpackage: info: source version 1.0-1
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by Aptivi CEO <...>
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
dpkg-checkbuilddeps: error: Unmet build dependencies: build-essential:native
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
(...)
...while it went successful (but I've set up all the jobs to stop when one of them fails so it appears to be "failing") with the Ubuntu 22.04 runner:
(...)
dpkg-buildpackage: info: source package testpkg
dpkg-buildpackage: info: source version 1.0-1
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by Aptivi CEO <...>
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
fakeroot debian/rules clean
dh clean
(...)
You can see the debian folder in this repo.
This package is the meta one, we do not need to install it as all the dependencies are provided in the image.
Description
In the Ubuntu 22.04 GitHub Actions runner, build-essential is installed. However, the Ubuntu 24.04 beta GH Actions runner, build-essential is missing. Therefore, my jobs that depend on it failed to run.
Notice the "build-essential" message. This means that it isn't installed in the Ubuntu 24.04 beta worker at all! This package is so important for building apps, because it has G++, Make, and others.
This means that any project that requires Make to build will fail to run.
Platforms affected
Runner images affected
Image version and build link
Ubuntu 24.04 https://github.com/Aptivi/NitrocidKS/actions/runs/9254542094/job/25456543655
Is it regression?
Yes, Ubuntu 22.04. https://github.com/Aptivi/NitrocidKS/actions/runs/9241701729
Expected behavior
I expect that the build completes successfully without having to install build-essential myself.
Actual behavior
build-essential is missing, causing build failures. Therefore, I have to install build-essential as part of the job build process.
Repro steps
Just make a job that depends on one of the build-essential's deps, such as make, g++, etc.