- Launch bar is usually expecting a LaunchConfigurationTargeted
Delegate which calculates the binary but Container build
uses the ContainerLaunchConfigurationDelegate which expects
the program name, working dir, connection, and image id
set up as ILaunchConfiguration attributes
- modify ContainerLaunchConfigurationDelegate to add
finalLaunchCheck method which can verify if the launch
config attributes are set up and if not, set them from
the build config (since this is post-build)
- fix getImageName() in CoreBuildContainerLaunchConfigProvider
to use toolchain attributes
Change-Id: Iad6cc26928c33e964650b99844e065df8653858f
- add check for network ports coming back empty for a Container
launch and if so, fall-back to use the ip address of the Container
for the remote host
Change-Id: I83d68a10e2dc92f7d0f27bb9dec304388594b4a3
- fix problem with launch targets not being set correctly
- for ContainerTargetTypeProvider, make init() and changeEvent()
synchronized
- move the test for ESTABLISHED connection after getImages()
in ContainerTargetTypeProvider.init() method so that we don't
see the connection as being UNKNOWN
- move addConnectionManagerListener() call in init() to be
just after we fetch the list of current connections
- in ContainerGCCToolChainProvider, make init() and changeEvent()
synchronized and move addConnectionManagerListener call to
just after connections list are acquired
Change-Id: I24880a77755d634e8bce85db4f3354cf5ad7671d
- fix CMakeBuildConfigurationProvider to not verify if a toolchain
file exists which doesn't occur for Container Build configurations
- add new ICBuildConfigurationManager2 interface that adds new
recheckConfigs() method, make CBuildConfigurationManager
implement this new interface
- add new recheckConfigs() method to CBuildConfigurationManager so
that if a Docker Connection is enabled, the list of invalid configs
can be rechecked and those that are now valid can be removed from
the noconfigs list
- have ContainerGCCToolChainProvider implement
IDockerConnectionManagerListener and register itself as a listener
during init
- add new changeEvent() method as part of a listener that will add
toolchains for connections that are added/enabled and similarly
will delete toolchains for connections that are removed/disabled
- do the same with ContainerTargetTypeProvider (making it be an
IDockerConnectionManagerListener and adding/deleting targets based
on whether a Docker Connection is added/enabled or deleted/disabled
- as well during the init process of ContainerTargetTypeProvider
remove any targets for Connections that aren't established
Change-Id: Id5e9415eaa770ef7f6ba1ddd11312ed003585391
Check all problem markers until one with severity Error or higher has
been found.
Change-Id: I7b44727eb1f323da75a7aa58bcea2ef307801adf
Signed-off-by: Samuel Hultgren <samuel.hultgren@st.com>
- add new getConsoleHeader() method to ICBuildCommandLauncher
interface and ContainerCommandLauncher class
- modify MakefileBuildConfigurationProvider to create build
configurations based on an Image name when building for Container
and as well support the linux-container os that is used for
Container targets
- add new IConsoleParser2 interface that extends IConsoleParser
and adds new processLine method that takes a List of Job as
a parameter
- make CBuildConfiguration implement IConsoleParser2 and add new
processLine method
- modify watchProcess to recognize an IConsoleParser2 and pass
a Job List then wait for all jobs to finish before calling
shutdown() and possibly reindex
- add new IToolChain2 interface with startBuildProcess() method
- add new startBuildProcess() method to CBuildConfiguration
to look for new IToolChain2 and use its startBuildProcess()
method to perform the build
- make ContainerGCCToolChain implement IToolChain2 and add
new startBuildProcess() method to build in Container
- change StandardBuildConfiguration to use startBuildProcess()
to do build and clean
Change-Id: Icae9a55ef6abfa1b7f611544ad591b6062c72585
- add new ICBuildConfiguration2 to keep API checks happy
- remove refreshScannerInfo method from ICBuildConfiguration and
put it in ICBuildConfiguration2
- make CBuildConfiguration implement ICBuildConfiguration2
- update ContainerPropertyVolumesModel to use new Docker plug-ins
using docker-client 8.9.2.
- fix MesonBuildConfiguration to use a job for each compile line being
processed, then wait until all jobs are done before causing
an reindex to occur (this will maximize parallelism when building
in Containers)
- fix ContainerCommandLauncherFactory to save the project so we
can exclude project directories when copying header files using
the new Docker Tooling interfaces
- fix CoreBuildLaunchBarTracker to use ICBuildConfiguration2
interface to make the call to refreshScannerInfo
Change-Id: I2138f5111614e7821e46c22731397a01035eac0a
The most significant change for CDT is the upgrade of
com.spotify.docker.client which has knock on effects
due to the API changes.
Includes:
- Updating target platform
- removing Neon and Oxygen as potential target platforms
in OOMPH setup
- Updating CDT standalone debugger
- Changes in API for docker changes
Change-Id: I68d4f93de3a0e6141c7a37a34f9e8fdb2313fbd8
- add new ContainerTargetTypeProvider to create a new target
for each usable Docker image from known connections
- add new ContainerGCCToolChain class which supports gcc in a
Container for projects with Container targets
- add new ContainerGCCToolChainProvider which creates a
ContainerGCCToolChain for each usable Docker image from
known connections
- add new CoreBuildContainerLaunchConfigProvider class
- add new CoreBuildContainerLaunchDescriptorType class
- add new ContainerTargetLabelProvider class to support adding
a new Container target
- add new NewContainerTargetWizard and NewContainerTargetWizardPage
to add/edit a new Container target
- add new IContainerLaunchTarget class
- add new refreshScannerInfo method to ICBuildConfiguration interface
to allow switching ScannerInfo when target is switched
- implement default refreshScannerInfo method in CBuildConfiguration
which currently does nothing
- add new fetchContainerDirs method to CommandLauncherManager to
fetch container directories for a project that is using
Core Model and CBuildConfigurations
- add new verifyIncludePaths method to ICommandLauncherFactory2 that
takes an ICBuildConfiguration and implement this for
ContainerCommandLauncherFactory
- fix ContainerCommandLauncher command handling to use a list
of Strings to preserve spaces in arguments and call new
runCommand interface in Docker UI...as well do not link
any args that are files if they are system directories (e.g.
/usr /bin)
- fix getCommandLauncher in ContainerCommandLauncherFactory when
passing an ICBuildConfiguration so that it uses the configuration's
toolchain properties to figure out if a Container build is asked for
- fix launch method of ContainerLaunchConfigurationDelegate to check
if working directory is null in which case use the project directory
- also add buildForLaunch method override and preLaunchCheck to
ContainerLaunchConfigurationDelegate so it can be used for
Core Build launching as well and ensure that the project name
and active configuration is set properly
- in CoreBuildLaunchBarTracker, use the lastTarget to set the
active target instead of the local field "target" as this will
end up setting a random target as the active target. Also
call the new refreshScannerInfo method of the build configuration
when the active target has changed
- add ICBuildConfiguration support to Docker LaunchShortcut such
that properties will be set appropriately and acquired from the
toolChain
- bump up Docker launcher version to 1.2.0
Change-Id: I074b02314f6ac6942fdf230b1dc8e154ced3088e
- fix ContainerLaunchConfigurationDelegate to look at whether the
daemon is running remotely or locally
- if running remotely, try to connect to gdbserver by using the
Container ip address and the gdbserver port directly
(will not work on Windows, but fixes Linux scenario)
Change-Id: I9a6188d90187e2ca6ab73c8042a02b6ff29d5f2f
- remove new exposed field from CommandLauncherManager and
add correct @since tags
- create new ICommandLauncherFactory2 interface so that no
additions are made to ICommandLauncherFactory
- add @since tag for ICBuildCommandLauncher interface
- make ContainerCommandLauncherFactory implement the new
ICommandLauncherFactory2 as well as ICommandLauncherFactory
Change-Id: I7bbacb59e284b43e6d142accf59b6ab9df274438
- add new ICBuildCommandLauncher interface
- add new defaulted method to ICommandLauncherFactory interface
- add code to look at Build Configuration properties in
ContainerCommandLauncherFactory
- add new methods to CommandLauncherManager and
ContainerCommandLauncher
- add an update dialog call in ContainerTab
- add calls to set and get CBuildConfiguration to
ContainerCommandLauncher
Change-Id: If95fafe592c7ea4580bae1a15d168d1163e132fd
- fix LaunchShortcut find launch config method so that if the
active configuration is not enabled for Container build, then
it will look for config with default connection and image
Change-Id: If11865dd43cd2a08a0565b3483523002b0a00613
- fix other way round, launching locally, then in Container
- add null check for connectionURI in Docker LaunchShort
when searching launch configs in case there is a local
configuration in the list
Change-Id: I08f89a9d1dccff3ace54667e86e9d3e8840f8694
- add new optional build property to run all Autotool
commands in Container
- for Autotool nature projects only, add a checkbox to the
ContainerPropertyTab to turn this new option on/off
- change the AbstractAutotoolsHandler class to look at the
optional build properties for the project to determine if
the fallback CommandLauncher used to run commands should come from
the CommandLauncherManager to run in Container or to a
local CommandLauncher
- change AutotoolsNewMakeGenerator the same way
- add new messages as needed (add a tooltip to warn user that
choosing new option may cause inconsistencies for files shared
among configurations)
Change-Id: Id828ec3015f32f320d2247bd0577944164c71df8
- modify ContainerTab to reset the error message when Docker
Connections/Image changes cause a listener notification and
then look to see if no connections or no images errors exist
- modify ContainerTab to reset the error message if the Docker
Connection selected gets changed
- bump org.eclipse.cdt.docker.launcher version to 1.1.1
Change-Id: Iad5051750a5dd53a0eb458d73570fffd9e3867c4
- move ContainerCommandLauncher to org.eclipse.cdt.docker
- update DockerLaunchUIPlugin to be noextend
- update users of ContainerCommandLauncher appropriately
Change-Id: I32ea6de3b3df12b6579249583303111bf6b7b957
The CMake toolchain file editor was not recording the correct
toolchain. The same was also true for the toolchain selection in
the build settings tab.
Change-Id: I62e4c7ae0175da7c1b5ffb7f89e321a371a6e8e0
Adds target, launch classes, and launch bar support for targets
intended to upload their code to flash using a Serial Port. The
port is co-ordinated with the Serial Terminal so that the terminal
is paused during the upload.
Also cleaned up the Generic Launch so it's not using the
External Tools launch which has a number of UX issues. This
simplifies the settings and gives us more control. And it's made
reusable for the Serial Flash launch.
Change-Id: I31e9970243fbf1cf22d027bbdb892fde104dbefe
- add IOptionalBuildObjectPropertiesContainer interface to use for
objects that supply optional build properties
- add new IOptionalBuildProperties interface that defines
optional build properties donated by external plug-ins
- add new
- change IConfiguration to an IOptionalBuildObjectPropertiesContainer
- change IManagedProject to be an
IOptionalBuildObjectPropertiesContainer
- fix ProcessClosure to ensure that readers are not null before
accessing them
- fix Container launch delegate to look at project optional
build properties for active configuration to fetch connection
and image info and use said info to find a matching
launch or create a new one
- have Container launch delegate use the image name as part of
the launch config name
- have Container launch short-cut also use the project's
optional build properties for the active config to get
connection and image information before any defaulting
- change AutotoolsNewMarkerGenerator to store the command
launcher as an ICommandLauncher
- add new CommandLauncherFactory extension to cdt.core that
allows plug-ins to specify a CommandLauncherFactory that
will return an ICommandLauncher based on the project
- add macros for new extension to CCorePlugin
- add new CommandLauncherManager class that loads
CommandLauncherFactory extensions and is used to give
an ICommandLauncher wrapper that will go through the list
of CommandLauncherFactory extensions until one returns
non-null ICommandLauncher
- add code to RemoteCommandLauncher so it will use the
CommandLauncherManager to get the local launcher
- also change RemoteCommandLauncher to check at execution
time whether the command is local and in that case use
the local command launcher
- add new ICommandLauncherFactory interface
- add new ContainerCommandLauncher to launch
- add new ContainerCommandLauncherFactory class for returning
a ContainerCommandLauncher instance to launch commands
in a Docker Container
- change MakeBuilder to use CommandLauncherManager to get
its ICommandLauncher
- change CommandBuilder to use CommandLauncherManager too
- ditto for Builder and AbstractBuiltinSpecsDetector and
ExternalToolInvoker
- change Configuration to load/store optional build properties
as well as return the properties to get/set
- ditto for MultiConfiguration
- change ManagedProject to implement IOptionalBuildOptionProperties
interface
- ditto for ProjectType
- create new OptionalBuildProperties class to store optional
build properties for a configuration
- bump cdt.docker.launcher to 1.1.0
- use CommandLauncherFactory extension to define
ContainerCommandLauncherFactory
- add optional ContainerPropertyTab which allows the end-user to
optionally choose to build a C/C++ project in a Container
and specify the connection/image to use
- in LanguageSettingsSerializableSettings class, call the
CommandLauncherManager getLanguageSettingEntries method
to get the massaged language setting entries based on the
current list
- in LanguageSettingsProviderSerializer, try and get the
pooled entries using the cfg description so that it will
have the project and can use the CommandLauncherManager
to get entries from image
- in ContainerCommandLauncherFactory move cached headers under
a HEADERS directory in the plug-in area
- create a sub-directory for the connection and a sub-directory
for the image based on cleansed names
- store the real names of the connection and image to use
later in the DockerHeaderPreferencePage
- modify LanguageSettingsEntriesTab to force the horizontal
scroll bar to appear (this is a bug in SWT SashForm support
and the fix here isn't quite correct, but is better)
- add new DockerHeaderPreferencePage that allows user to
remove cached headers from images
- change C/C++ Docker preferences to be titled: Docker Container
- fix LanguageSettingsWorkspaceProvider.getSettingEntries method
to use the CommandLauncherManager so entries will be transformed
to use cached headers
- add BaseDatabindingModel class
- add DataVolumeModel class to model a volume mount
- add ContainerPropertyVolumes model to model volume specification
and selected volumes
- add properties to ContainerCommandLauncher to represent
volumes and selected volumes for a configuration
- add ContainerDataVolumeDialog for specifying a volume
mount by the end-user
- add a null detector for cfgDescription in
LanguageSettingsSerializableProvider
- fix AutotoolsNewMakeGenerator.getWinOSType to not specify "." for
working dir
- fix GCCBuiltinSpecsDetectorCygwin to not map paths to Cygwin if
the current configuration is enabled for container build
- add logic to ContainerCommandLauncher to look for Windows
file formats and change them to unix format and map
any "." working dir to be /tmp
- fix ContainerLauncherConfigurationDelegate similarly
- fix AbstractBuiltinSpecsDetector to pass in the current
configuration description when getting the CommandLauncher
since the current configuration may not be the active
configuration
- change ContainerPropertyTab to add Elf and GNU Elf binary parsers
when build in Container is chosen so that output executables
are treated as Binaries by the CDT project
- add documentationl for the ContainerPropertyTab in Build Settings and
the Data Volume dialog pop-up it brings up
- change CommandBuilder to accept a project as an argument
to its constructor and to pass this as an argument to
the CommandLauncherManager
- have StepBuilder pass project when creating a CommandBuilder
Change-Id: Ia78488b93056e6ec7ca83a6c87b3a9d2b9424943
A number of changes that clean up how build configs are done. Now
build settings are stored with the build config instead of in launch
configs. That makes it less launch bar specific. Add build settings
UI to change the toolchain used for a given launch config.
Also changed CMake so it's IToolchain based instead of property which
doesn't work when multiple IToolchains match.
Change-Id: I958d90ede3c1f873ab1530c2b2880808e8f7abef
Also restructures the pom.xmls to put the modules in the top level
so we can order them to have the test plugins build after them.
Change-Id: I2f0e4ebd252791fb8844cdf0f635d574946207aa
- This commit is still needed to allow CDT Sonar job to run
so that features that have same name as plug-ins
will be distinguishable by Sonar job
Change-Id: I3eb3f3cf94d5f4338d72c5d19d0baf2f7506c388
- on Windows (possibly Mac as well), we can't use the ip of
the Container to contact the gdbserver as this address
may be hidden from the host behind a VM
- instead use the localhost port that the tcp/2345 is mapped
to which the Docker machine etc.. forwards back
- fix this in ContainerLaunchConfigurationDelegate
Change-Id: I9f85bf0d0d9dec183c504ba4fb7adc55d4a038bb
- current Docker daemons don't allow ptrace in the default
seccomp profile so specify "seccomp:unconfined" when
kicking off the gdbserver
Change-Id: I742a99221c897a553a46bc768e713d74b1fda22e
Those features have the exact same id and groupid than a plugin
which throws off SonarQube with:
"Two modules have the same id: 'org.eclipse.cdt:org.eclipse.cdt.util'.
Each module must have a unique id."
In the pom.xml, we can specify a different groupid which resolves the
problem. Alternatively, the feature id could have been changed but that
would break upgrades.
Change-Id: Ib2912ad854a3af431b96f89a6ead1bcb6d06ba60
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
This removes a lot of pom.xml from the source tree. This is using the
"POM-less" Tycho functionality.
See
https://wiki.eclipse.org/Tycho/Release_Notes/0.24#POM-less_Tycho_builds
One advantage of this is that you do not need to update the version in
the pom.xml when you change it in the MANIFEST.MF because the pom.xml is
automatically generated. This also reduces a lot of the duplicated
information and pom.xml repetition.
- Maven 3.3 and up is required.
- Only eclipse-plugins and eclipse-features can be pom-less.
Repositories, target and others still have pom.xml.
- New parent poms are added because a parent is necessary directly one
level above the plug-in/feature that will have its pom generated
- Some test plug-ins had to be renamed .test -> .tests because it's
required so that it detects that it's a test plug-in
- Some suites were renamed so that they all use the same consistent name
"AutomatedIntegrationSuite"
- Profiles were added for the more common test configurations. They are
activated by the presence of simple .properties files that only serve to
activate the correct profile. The profiles:
- One for UI tests (UI present and start in UI thread)
- One for SWTBot tests (UI present and do not start in UI thread)
Other test plug-ins that are too different are kept intact and still
have
a pom.xml
- Fragments are kept intact since they all have different target
platform configurations
Change-Id: I9d73380eb766f547830c552daf08053a30b1845c
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
The path to GDB is set in the launch dialog, under the Debugger tab. If
the path to GDB contains one or more spaces, and is not within double
quotes, GDB will not be found and the launch will fail.
This patch improves the use cases around the "Browse" button, to select
GDB's path.
1) if the user clicks on the "Browse" button, the browse dialog will
open in the correct place, no matter the presence of space(s).
2) When GDB's path is selected with the "Browse" button, it's then set
in the "GDB debugger" field. This patch looks at the selected path and
adds surrounding double quotes if there is any space within, and strips
any double quotes if there are no spaces.
Change-Id: I202f574772965af3a491d449b9e9a97e8c61e2b0
Commit 6fc6c3c671 mistakenly removed the
two strings that were being used for the Run launch delegate. We
haven't noticed because we only have one Run launch delegate and
therefore its name does not end up being shown in most cases.
However, by going to Preferences->Run/Debug->Perspectives and then
expanding the C/C++ Application launch configuration type, the Run
delegate is shown with a missing string.
Change-Id: I2435097b0a13efd21ef3da01e2d4969d231a6f97
This commit removes explicit source features and has tycho create them
automatically, along with all other source features that were not
previously defined. The logic to auto-generate is in the root pom.xml
For all pre-existing source feature, the name presented to the user has
been changed to use the default name used by Tycho, which is "Developer
Resources". This will provide a more standard user-experience with
respect to other source features built by Tycho.
Existing SDK features are kept for backwards compatibility.
All the names of the auto-generated source features that replace an
existing source feature have stayed the same except for the
'testsrunner' feature; for that one name change, a p2.inf file is added
to allow upgrading from the old named feature to the new named feature.
Change-Id: Ie632e798c93898fd828f88df4983fc43e2749d22
Make sure Core Build handles the properties set by these tabs
correctly. A bunch of string externalization too.
Change-Id: I54a61b4d2520a0952c43608169747e792826062e
Since delegate instances are cached and reused for subsequent launches,
we have to reset the buildFailed flag on subsequent builds (i.e., calls
of buildForLaunch). Otherwise, this flag will remain to be set to true
after a failed/cancelled build for the entire lifetime of this delegate,
even if a project has been re-launched and the build succeeded. If the
flag remains to be true, the dialog keeps popping up asking the user
whether to succeed with the launch with errors in the project, even if
the build succeeded and there are no errors any more.
Change-Id: I51aece90154f817542ed7548ec4c36591b19eaec
Signed-off-by: Philip Langer <planger@eclipsesource.com>
Unify launching for projects that use the new Core Build system.
Starts with CMake projects. We'll do Qt projects next.
Change-Id: I14af8e99decd54cc6548095b3ad3e054c550aea2
Splitting out the GDB console into its own Debugger Console view.
The goal of this patch is to allow the user to easily keep the full GDB
console in focus, without having to pin it, as the pin requirement was
not very user-friendly. Furthermore, the user can also use the GDB
console while looking at the output of the program being debugged,
which couldn't not be done without a dedicated gdb console view.
This patch also resolves two issues we had with re-using the platform
console view, which were:
- pin didn't work
- clone didn't work
With this new Debugger console view, there is no pin and no clone.
Change-Id: Ia19132704a2f6618f35ffe47ebb4b8f0028dc9ab