<div dir="ltr"><div>Hi Tom,</div><div><br></div><div>here is my setup for building with QT6 (QT5 also works):</div><div><br></div><div>Ubuntu 25.10</div><div>all dependencies installed from the system except for GDAL (which I build by myself to have full control and because I am also co-maintainer of GDAL and I occasionally do some development work on that library).</div><div><br></div><div><div>If you are in doubt about how/what to install, you can get inspired
by
<a href="https://github.com/qgis/QGIS/blob/master/.docker/qgis3-ubuntu-qt6-build-deps.dockerfile">https://github.com/qgis/QGIS/blob/master/.docker/qgis3-ubuntu-qt6-build-deps.dockerfile</a> (or use the docker directly if you decide to go that way).</div></div><br><div>The environment is configured by setting environment variables in QT-Creator and by setting the environment variables in a bash wrapper script when I run the python tests from VS-Codium (I use QT-Creator for C++ but I prefer VS-Codium for python).</div><div><br></div><div>A docker also works just fine, I've used that in the past. <br></div><div>IMHO a VM is probably overkill (I've also used that mainly to reduce the entry barriers for newcomers: see now abandoned <a href="https://github.com/elpaso/qgis-dev-vagrant">https://github.com/elpaso/qgis-dev-vagrant</a>).</div><div><br></div><div>Hope this helps.</div><div><br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, Nov 7, 2025 at 2:45 AM Tom Christian via QGIS-Developer <<a href="mailto:qgis-developer@lists.osgeo.org">qgis-developer@lists.osgeo.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Hi All,<div><br></div><div>I am interested in learning more about how QGIS developers configure their development environments, and I would like to get some feedback on an alternate approach.<div><br><div>I recently contributed my first changes to QGIS and I found the development environment quite challenging. While the <a href="https://docs.qgis.org/3.40/en/docs/developers_guide/index.html" target="_blank">QGIS Developers Guide</a> contains lots of information I found most of it to be high-level, e.g. how to work with Git, and there was limited information on gathering required dependencies and setting build configurations.<div><br></div><div>Given the number of dependencies, the risk of conflicts with existing packages, and my strong preference to avoid VMs, I thought a containerised build environment was ideal. My work requires frequently switching between projects and environments. I generally cannot let any one project's dependencies pollute the system outside of a Conda environment, a container, or a VM.</div><div><br></div><div>I found the <a href="https://github.com/qgis/QGIS/tree/master/.docker" target="_blank">CI Docker configuration</a> and thought I could use this to build and test QGIS. <span style="color:rgb(0,0,0)">These Dockerfiles should guarantee all required dependencies AND this is the environment that passes or fails CI checks on my changes.</span> Building QGIS using the CI Docker configuration was OK, but CI is not setup for running the build product in a container - meaning changes cannot quickly be manually / visually tested in this way. The project would have to be compiled (with the benefit of mounted ccache) and installed every time the container was started before the application could run. The long Docker commands are not currently scripted outside of GitHub Actions Workflows, and build configurations are provided via matrices, so replicating these processes locally is non-trivial.</div></div><div><br></div><div>I created <a href="https://github.com/sparkgeo/QGIS-Container-Development" target="_blank">this repo</a> to better automate container-based development and testing of QGIS. It contains build / run / test scripts, .env configurations, and Docker Compose overrides to work with the QGIS CI Docker configuration with as few changes as possible. It currently requires a <a href="https://github.com/sparkgeo/QGIS-EOPF/commit/64b6f6568ec24f9a064a24869b3d1fb95a6ae0b1" target="_blank">single small commit</a> in the active QGIS branch to support this approach, which I removed before creating PRs for the main QGIS repo.</div><div><br></div><div>With this approach, building and running a containerised QGIS development build is (in theory) as simple as <font face="Courier New">scripts/run.sh</font>. Tests can be executed with <font face="Courier New">scripts/test.sh</font>.</div><div><br></div></div><div><br></div><div>I have some questions:</div><div><br></div><div>1) are you installing QGIS build dependencies on "bare metal", or perhaps using a VM?</div><div>2) is there a simpler approach than this for containerised builds, runs, and tests?</div><div> 2a) if not, is there any interest in pursuing this or a similar approach to simplify containerised development environments?</div><div><br></div><div><br></div><div>Ultimately I suspect the QGIS project would benefit from lower barriers to entry and the ability to better isolate build dependencies.</div><div><br></div></div></div>_______________________________________________<br>
QGIS-Developer mailing list<br>
<a href="mailto:QGIS-Developer@lists.osgeo.org" target="_blank">QGIS-Developer@lists.osgeo.org</a><br>
List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
</blockquote></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Alessandro Pasotti</div><div>QCooperative: <a href="https://www.qcooperative.net" target="_blank">www.qcooperative.net</a><br></div>ItOpen: <a href="http://www.itopen.it" target="_blank">www.itopen.it</a></div></div>