Skip to content

chore: bump Ubuntu, Qt and supporting versions #24

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

pfeerick
Copy link
Member

@pfeerick pfeerick commented Jul 9, 2024

Bump to Ubuntu 24.04 LTS (Noble Numbat) 22.04 (Jammy Jellyfish)

Testing the waters... waiting until 24.04.1 before going any further with this.

 E: Unable to locate package python3-clang-10

@pfeerick pfeerick force-pushed the pfeerick/ubuntu-2404 branch from ae85f5c to f15de3a Compare December 31, 2024 03:31
@elecpower
Copy link
Collaborator

Version not supported for Qt 5.15

@pfeerick
Copy link
Member Author

Thanks, but no need to worry about that yet I don't think... this is only a placeholder for when 22.04 is no longer an option (or we move onto a version QT that is supported) ;)

@pfeerick pfeerick marked this pull request as draft January 1, 2025 01:49
@pfeerick pfeerick force-pushed the pfeerick/ubuntu-2404 branch from f15de3a to 13f6d4a Compare February 7, 2025 00:52
@elecpower
Copy link
Collaborator

Once 2.11 is out the door I will start working on Qt 6.x

@elecpower elecpower changed the title chore: bump ubuntu version chore: bump ubuntu, Qt and supporting versions Feb 11, 2025
@elecpower elecpower changed the title chore: bump ubuntu, Qt and supporting versions chore: bump Ubuntu, Qt and supporting versions Feb 11, 2025
@@ -22,13 +22,15 @@ RUN apt-get update && \
RUN wget --quiet https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz -O - \
| tar -xJ -C /opt

RUN python3 -m pip install -U pip setuptools \
&& python3 -m pip install \
# Python 3.11 introduced the managed environment breakage aka PEP 668.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't disagree with this at all (I suggested exactly this myself in the MSYS build scripts), but I have since come across uv thanks to Raphael, and it makes package management and venv effortless... . Worth considering at a future time, if not now.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your solution is implemented in multiple files. If not too challenging I vote for changing now,

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay so I've had a play with uv and replaced you magic with this hack

RUN wget -qO- https://astral.sh/uv/install.sh | sh && \
    . $HOME/.local/bin/env && \
    uv venv && \
    uv pip install -U pip setuptools && \
    uv pip install \
    asciitree \
    jinja2 \
    pillow \
    aqtinstall \
    lz4 \
    pyelftools

RUN . $HOME/.local/bin/env && \
    uv run aqt install-qt --outputdir ${QT_INSTALL_DIR} ${QT_HOST} ${QT_TARGET} ${QT_VERS_STR} ${QT_ARCH} ${QT_MODULES}

It works but does not save any coding in fact means every python script run needs to be amended. However I stand to be duly corrected on matters such as these.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using uv, we might want to make things differently:

  • install uv into the dev/builder image into /usr/bin
  • run aqt install as a "tool" (see uvx)
  • move the Python dependencies definitions to a pyproject.toml file in EdgeTx repo
  • pull dependencies when preparing build environment with uv sync --frozen
  • activate venv with source .venv/bin/activate
  • run everything else as usual

We might want to integrate the last 3 steps proper with CMake, so it is done automatically for the user.

@elecpower
Copy link
Collaborator

CMake 4.0 breaks things

cmake_policy(SET CMP0023 OLD) has been removed. From Discord I see @gagarinlg has also found and implemented a fix for radio firmware though I cannot see the fix.

miniz has an invalid cmake_minimum_required version. I have bugged with maintainer richgel999/miniz#337

@elecpower
Copy link
Collaborator

The change to Qt 6.5 multimedia is frustrating the begeebers out of me. So I'm taking the "throw the sink at it" methodology. When I have sound I'll work backwards to narrow the final list of extras.

@pfeerick
Copy link
Member Author

pfeerick commented Apr 1, 2025

I cannot see the fix.

He just commented out the policy line in cmake/GenericDefinitions.cmake 🤭

@gagarinlg
Copy link
Member

Yes, quick fix for me without any testing except, the radio I was working on still compiles

@pfeerick
Copy link
Member Author

pfeerick commented Apr 2, 2025

Looks like CMake 4.x is a happy wrecking ball... it breaks the builds for miniz, yaml-cpp AND maxlibqt, plus edgetx 🤪

For miniz, I have a PR pending: richgel999/miniz#339
For yaml-cpp, this PR is already waiting: jbeder/yaml-cpp#1351
For maxlibqt, since we have our own fork, I can bump it via https://github.com/EdgeTX/maxLibQt/tree/pfeerick/bump-cmake-min

These, plus Malte's quick fix at least get the MSYS2 build container up and running again, which is the only one using CMake 4.0 at present.

i.e. This branch has successfully built on my fork... pfeerick/edgetx#18

@elecpower
Copy link
Collaborator

AppImages appear to not be backward compatible (could just be me) e.g. noble will not run on jammy lots of errors like this on launching:

/tmp/.mount_EdgeTXfeiGJn/AppRun.wrapped: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_EdgeTXfeiGJn/usr/bin/../lib/libglib-2.0.so.0)

jammy AppImage will run on jammy and noble

If this is the case then the question is, what is the oldest version we want to support keeping in mind the different Linux flavours?

@pfeerick
Copy link
Member Author

Well, since jammy (22.04) is a LTS as well, so we could increment to that rather than jump to noble (24.04). We're currently using focal (20.04) for dev and jammy for cloudbuild, so at minimum need to correct that discrepancy 🤪 Ubuntu 22.04 (jammy) is a supported platform for QT6.5, so that isn't a problem...

It doesn't surprise me that an AppImage built on Noble would/could have problems when running on Jammy, given mention to build on the oldest platform intended to support...

@pfeerick
Copy link
Member Author

pfeerick commented Apr 29, 2025

Want me to change it to jammy while rebasing (and we can start again from there)?

Oh, wait, you're trying to confuse me... 6.5, 6.8.2, 6.9.0? 🤣 Ok, 6.9 still lists Ubuntu 22.04 (jammy) as supported platform...

@elecpower
Copy link
Collaborator

My aim in life is to confuse as many as possible ;-)

@elecpower
Copy link
Collaborator

Jammy

@pfeerick pfeerick force-pushed the pfeerick/ubuntu-2404 branch 3 times, most recently from 1308ade to 918b528 Compare April 29, 2025 10:55
Bump to Ubuntu 22.04 LTS
@pfeerick pfeerick force-pushed the pfeerick/ubuntu-2404 branch from 707c350 to 13cc77b Compare April 29, 2025 11:06
@pfeerick pfeerick force-pushed the pfeerick/ubuntu-2404 branch from 13cc77b to 91f7297 Compare April 29, 2025 11:20
@pfeerick
Copy link
Member Author

pfeerick commented Apr 29, 2025

A few rebase goofs later (combination of should not be working on this just before bed + github builds way faster than locally 🤭 ), and it should be right now. We can skip the --break-system-packages flag for python since jammy doesn't have that issue. i.e. allowing this to merge, and then I'll start working in the successor / uv. So if I didn't break anything, this is ready to play with again. QT version is still 6.8.2 btw ;) I'm hoping unpinning pillow won't bite us, as tests-radio target is only run using the dev image, and that has been a pain before. Only one way to check! 🤭

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants