We weren't checking the case where the size of the toolchains array
was zero. Return a null config in that case and fix up the
CommonBuildTab to deal with that.
Change-Id: Ibd8f659988f1463570bdb2654d6ea2b4a45866c2
The previous alignment of all the warnings/ignores
led to too many warnings that weren't there before. This
commit relaxes them a bit.
The core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs
is still the "master" copy, with
releng/scripts/check_code_cleanliness.sh containing the
exceptions that apply to test plug-ins.
Change-Id: Ibd4e31ade0b42b31e7cbe5a94f06c6fc15183a56
Command used:
# Remove space at eol in comments
find . ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/^(#.*)[ \t]+$/\1/' {} +
# Remove space at eol in blank lines
find . ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/^[ \t]+$//' {} +
# Replace escaped spaces at eol with unicode
find . ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\])\\ $/\1\\u0020/' {} +
# Replace unescaped spaces at eol with unicode
find . ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\]) $/\1\\u0020/' {} +
# Replace escaped tabs at eol with unicode
find . ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\])\\\t$/\1\\u0009/' {} +
# Replace unescaped tabs at eol with unicode
find . ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\])\t$/\1\\u0009/' {} +
# Stage all changes
git add -A .
# trim any remaining whitespace and then identify and fixup
# manually
# Only dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/MessagesForDebugVM.properties
# needed this due to missing newline at end of the file
find . ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/[ \t]+$//' {} +
Change-Id: I858f16891fe001f4f7e62d5a4f904146e891cd39
Some Java files were missed, or other cleanups introduced
trailing whitespace. So clean it up with this commit.
Command used:
find . ! -path "./.git/*" -type f -name *.java -exec sed -i -E 's/[ \t]+$//' {} +
Change-Id: I18f5e3a3eb5352443c9e753d427bb8d06107b8a4
These were inserted in the past automatically by Eclipse but
newer tooling makes them redundant.
These were removed by doing a global find/replace on *.java files
using the following regular expression:
\t/\*\n\t \* \(non-Javadoc\)[^/]*/\n
Change-Id: I59d3248020f10934fde1dda5b5a31e20bb188e19
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Remove redundant semicolons
and completing the wizard
Change-Id: I3d3175cfdfadec4f815c551d486e42c9f57b80ce
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Remove redundant type arguments
and completing the wizard
Change-Id: Iaecc7010f097b4b1fabd29ccaa34ccb23a716fbf
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Remove unnecessary casts
and completing the wizard
Change-Id: I287d4066b12fc19d7f73a016e11c9405abb4ceb9
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Add missing Annotations - and selecting all three types:
- @Override
- @Override on interface methods
- @Deprecated
and completing the wizard
Change-Id: I5d367dacb04327107f25e147edc08efc4eb1c2fe
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Format source code
- Remove trailing white spaces on all lines
and completing the wizard
Change-Id: I63685372c6bcc67719bcf145123bcb72e5b00394
The releng/scripts/apply_jdt_prefs_to_all_projects.sh was run to
copy standard settings to all other projects.
Change-Id: I4436c947d7f0142f56b709e661379c3eb54f666b
There is also a new script to verify completeness of .gitattributes:
releng/scripts/verify_gitattributes.sh
Change-Id: I2ce270852ab54b66b6c474a6ec94203fe5bba78b
- add new ContainerPortDialog class to allow user to specify
ports in the launch configuration Container tab
- add new ContainerTabModel and ExposedPortModel classes to
support new functionality
- add new Ports group to ContainerTab and have a table
where a user can add, edit, remove, and select ports
for publishing to the host
- add new attribute ATTR_EXPOSED_PORTS to ILaunchConstants for
saving and restoring user selected ports in C launch
configuration
- add needed internal messages to support new port settings
functionality
- bump up org.eclipse.cdt.docker.launcher version
Change-Id: I93b7503bdc141e3077418800352507ef38e65ab1
- bump up minimum org.eclipse.cdt.core needed for
org.eclipse.cdt.docker.launcher plug-in so that
ICBuildConfigurationManager2 interface is available
Change-Id: I5e77e7b43bdea1f0b59c79fcdfced7c162b64e9a
- modify ContainerGCCToolChainProvider.init so that the
CBuildConfigurationManager.recheckConfigs() call is done
within a separate job so the init() call will return
without causing deadlock
- do the same for ContainerTargetTypeProvider
- modify CBuildConfigurationManager initProviders() method to
be synchronized
Change-Id: I4ca9371fb340887233872b6d315621a24450fb2b
- add synchronized keyword to the various scanner info collecting
methods in ContainerGCCToolChain
Change-Id: I476e0c191379621d5ca8ef266c8590a0954ab4a5
(cherry picked from commit 55569e158c)
- add a new IToolChain property "cdt.needScannerRefresh" that is
set if scanner info needs to be refreshed
- for a Container build, turn the property on in ContainerGCCToolChain
startBuildProcess() if the Container headers for the toolchain's
have been deleted
- in CBuildConfiguration processLine(), look for the toolchain
property when looking to see if scannerinfo should be calculated
- in CBuildConfiguration, turn the toolchain property off in
shutdown()
Change-Id: I67a3537d1e2967dc15b66a1c37abda1ae8f78bff
- it seems that fetching the active configuration for a project
using an ICConfigurationDescription is time-consuming
- the active configuration is sought in ContainerCommandLauncherFactory
to get the optional build properties and thus we can figure out
if the active configuration has enabled container build or not
- see if we are given a CConfigurationDescriptionCache and it
contains a BuildConfigurationData element which allows us to
get an IConfiguration without creating a new one, serializing
it etc.. which is adding to the time taken
Change-Id: I8973f1707a602a73fc5ac751f12a1e8dbd549aab
- fix GCCToolChain and ContainerGCCToolChain to not blindly
take the first token in the command string when processing
scannerinfo; if it is "ccache", take the second token instead
Change-Id: I4b2b7dfaccae6f3ec968bbe4217c57994ad71963
- fix ContainerTargetTypeProvider changeEvent() to start a Job and
return immediately so it will not cause a DockerConnection
to be held in multi-threading
- move the DockerConnectionManager addConnectionListener call
to end of init() method so the fetching of images won't cause
a notification event to occur
- at end of init(), call CBuildConfigurationManager.recheckConfigs()
to make sure any disabled configuration due to a missing
IDockerConnection is now put in the configs master list and
removed from the noconfigs list
- make similar changes to ContainerGCCToolChainProvider
Change-Id: Idc120d613b99ec365522f5e7bf5da82d1b362425
- 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