-
-
Notifications
You must be signed in to change notification settings - Fork 384
docker: compile core Ubuntu 24.04 dependencies from source #6481
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
Conversation
echoix
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I took a look, and the reasoning for using source builds and versions we decide make sense for Docker images.
I'm just not too sure the caching won't bust our caching allowance as is now, (because every change of the layers here might be too big for the cache, so our real layers we need cached will be thrashed-out (see: cache thrashing))
activate renovate Co-authored-by: Edouard Choinière <[email protected]>
…docker_ubuntu_compile
…docker_ubuntu_compile
|
The last remaining thing here is that the third argument of the build script is unused. It is for the numthreads. Ninja will always use the most. But we might not always use this one (but for now it is hardcoded in the cmake Otherwise, I read a bit the linked GDAL dockerfile. Seems useful only to see the dependencies they use? If it works for this CI run, we could merge as is. |
|
Quick question: Should we be building unit tests if we are not executing them? For example, right now the build is waiting on GEOS to finish building its unit tests in order to continue building more layers in the Dockerfile. |
echoix
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple of suggestions, probably not complete
Co-authored-by: Edouard Choinière <[email protected]>
…in order to be able to ask buildkit to only build up to a certain stage and export it as an image
|
(I'll remove the commits changing the docker.yml script and do another PR, I have an opportunity to see new failures on @ninsbl's fork that I can't set up myself on my account as I already have tags and branches correctly defined) |
|
Currently, the last commit works on a fork, let's see on a PR to this repo if it fails or not. If it doesn't, these last two commits could be made to another PR and removed here. |
|
For now, the unit tests removed (we forgot to remove GEOS) saved 2.5 on two separate runs (probably different hardware too) |
|
Nice! Thanks for your effort @echoix ! |
8392eba to
53b7b2e
Compare
|
I removed the commits fixing the workflow in forks and created #6506 instead |
|
@ninsbl Here you go |
|
What is the purpose of the |
If they were there, they have a signification on what the base image is. It's kinda impossible now to keep updated, even in this PR. They wouldn't be updated by renovate, unless more work is made to create a custom regex for it. |
|
Do you have an idea in mind to solve #6384 following what we just merged here? Would using the same Dockerfile for the gui be the good move? |
Yes, I think that would be a good solution as it would reduce the number of dockerfiles to maintain... Also, the compile script could be used in Ubuntu 24.04 CI where we now use PDAL from UbuntuGIS... |
I filed issues for both these ideas |
In the current Ubuntu 24.04 docker image we have both NumPy 2 (from pip) and NumPy 1.26 (from Ubuntu). This PR is an attempt for a cleaner solution. It:
Main advantage is that we ship more recent Python packagages compared to the distro-based python3-x giving more flexibility to downstream usage of the docker image (in my case actinia). Esp. NumPy > 2.0 requires to build GDAL from source and PDAL is build from source in other images as well...
Also we get more control about version of important direct dependencies...
Still, this is just a suggestion for a possible improvement. An alternative I considered was to use just system packages (and no pip install at all), but I found the alternative here significantly more useful downstreams. A question is how much additional maintenance it may cause. As mentioned we compile PDAL and the GDAL-GRASS plugin other places as well...