Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] Docker Container support for Core Build

regarding some changes I have made to get Container build working for the Core Build model using most of what is in place for Container building ManagedBuild projects.

There are 3 patches, 1 for Linux Tools, 1 for CDT general, and 1 patch to get Meson build to work.

The design dynamically creates a new target for each Docker Image that is usable at the time of start-up.  A corresponding ContainerGCCToolChain is created.  The CommandLauncherManager is used to execute commands and header files are copied over as they are for ManagedBuild projects (i.e. indexing works).  Choosing a Container target is all that is needed from the User's perspective.

Tools are run using "sh -c" so that the shell path will be used.  The OS for all containers is "container-linux".  At the moment I have hard-coded this, but I could change it to use a new Launchbar interface so that the release is still a minor one.

Local is still the default target.  I found a bug in the CoreBuildLaunchbarTracker where it was starting a job for each target and using a local variable to set the target.  When a target provider adds multiple targets, the result is a random final selection.  I changed it to use the lastTarget variable which meant the last thread running would set the active target to be the last set target which in this case is Local and is the desired behaviour.

With all 3 patches, Meson projects can be built locally or in a Container with indexing supported.  I added some code to refresh the scanner info when the target changes (e.g. local changing to a Docker Container or vice-versa).  Double-clicking on a header file just after switching doesn't seem to register right away, but clicking again, it works fine.  I think this is just a notification issue with the Outline View.

I have Run/Debug as "C/C++ Container application working with such projects, re-using the Docker launch short-cut and delegate code already in place for ManagedBuild projects.

I will commit the Linux Tools portion soon into our master.  I would appreciate reviews of the CDT code.  If/when people are happy, I can make changes to the CMake project and general CBuild project to support Containers as well if desired.  It should be very straight-forward.

-- Jeff J.

Back to the top