Commit Graph

82 Commits

Author SHA1 Message Date
hjk 1c4f973365 ProjectExplorer: Replace the fromMap error return value
... by some out-of-band mechanism, keeping previous functionality.

The driving reason is to get the same fromMap signature as in the
AspectContainer base, however, the whole mechanism seems rather useless:
There are only a few places that actually ever could report errors,
in those places "moving on" looks ok, too, and these few places
are not conceptually different than a lot others.

Removal of this (new) mechanism is left for later.

Change-Id: Ibe7a0456bc3b84a84e942231f14446e783372d76
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2023-07-24 06:31:51 +00:00
hjk 53d06feecd ProjectExplorer: Change ProjectConfiguration::toMap signature
To match better with the rest, especially the base AspectContainer.

Change-Id: Ide0966cab3219800aa6b7b9e6012731a3fbe7a6f
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2023-07-21 16:12:15 +00:00
Jarek Kobus 87dcd7ce34 TarPackageCreationStep: Employ task tree for running
Task-number: QTCREATORBUG-29168
Change-Id: Ic37e7047e063ff9e024e2d53a81f6bd310d545c1
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2023-07-14 09:07:09 +00:00
hjk ecd524f12b RemoteLinux: Use aspects directly in TarPackageCreationStep
Change-Id: If9cdc95184cbf6ec72b326b41fafdd0240c5b060
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2023-07-13 14:20:53 +00:00
Jarek Kobus a3a5b8f806 Utils: Rename asynctask.{cpp,h} -> async.{cpp,h}
Follows AsyncTask -> Async rename.

Change-Id: I37f18368ab826c9960a24087b52f6691bb33f225
Reviewed-by: hjk <hjk@qt.io>
2023-05-03 13:24:20 +00:00
Jarek Kobus 070bfe9387 FutureSynchronizer: Change the default value of cancelOnWait to true
The "false" default wasn't really useful.

This changes the default value to the following usages:

1. AndroidDeployQtStep
   Introduced in 91f136ef3a
   The synchronizer was used to cancel the running tasks inside
   the doCancel(), so the similar behavior should be expected
   when destructing the AndroidDeployQtStep.

2. GitClient
   Introduced in f3106ebafe
   Is used only inside the last line of
   GitSubmitEditor::updateFileModel(). The running function
   (CommitDataFetchResult::fetch) doesn't take QPromise<>,
   so it can't detect if the future was canceled or not.
   In this case this change is no-op.

3. ExtraCompiler
   Introduced in c99ce1f455
   The intention was to make it cancellable and finish
   early on cancel.

4. PluginManager global future synchronizer
   Introduced in 72bddf9f51
   The intention was to make it cancellable and finish
   early on cancel.

The relevant places in code are marked explicitly for
points: 1, 2 and 3.

Change-Id: I1a52deb8d1f81d355950c8772bbaa6d0a202fd7e
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2023-04-26 08:17:27 +00:00
Jarek Kobus c2d6501e64 RemoteLinux: Use QtConcurrent invocation for async run
Change-Id: Ibf69ab82a1f1664d5290ad4a1dc14de7a15d9c3a
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-03-10 15:23:27 +00:00
Kai Köhne 56baf8c058 Remove GPL-3.0+ from license identifiers
Since we also license under GPL-3.0 WITH Qt-GPL-exception-1.0,
this applies only to a hypothetical newer version of GPL, that doesn't
exist yet. If such a version emerges, we can still decide to relicense...

While at it, replace (deprecated) GPL-3.0 with more explicit GPL-3.0-only

Change was done by running

  find . -type f -exec perl -pi -e "s/LicenseRef-Qt-Commercial OR GPL-3.0\+ OR GPL-3.0 WITH Qt-GPL-exception-1.0/LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0/g" {} \;

Change-Id: I5097e6ce8d10233993ee30d7e25120e2659eb10b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2023-01-06 11:15:13 +00:00
Jarek Kobus 643d205364 TarPackageCreationStep: Make it cancelable
Change-Id: I7130ec6039383c3abb8c1266c4473205bded382e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-11-10 14:46:13 +00:00
Jarek Kobus 4e9eef339c TarPackageCreationStep: Secure data access
Don't read or modify private data from worker thread.
Move Preparation of the deploy file list into the caller
thread, as it is using e.g. pointer to Kit object, what
doesn't look to be safe when used from non-main thread.

Change-Id: I6523e8f46541f5f96d46fa98f0ba941c2ec46e74
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2022-11-09 13:36:10 +00:00
Marcus Tillmanns 06838e3e5e ProjectExplorer: Fix potential race condition
When using BuildStep::runImpl() it was possible for the async part
to still be running while the BuildStep is already deleted.

This change returns the Future so that users can wait for it to finish.

Change-Id: I27c0fc8741c59851c5ab8f5cb858fbcda923c14d
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-11-09 08:33:37 +00:00
Marc Mutz 8eb4d52342 Port from qAsConst() to std::as_const()
We've been requiring C++17 since Qt 6.0, and our qAsConst use finally
starts to bother us (QTBUG-99313), so time to port away from it
now.

Since qAsConst has exactly the same semantics as std::as_const (down
to rvalue treatment, constexpr'ness and noexcept'ness), there's really
nothing more to it than a global search-and-replace.

Task-number: QTBUG-99313
Change-Id: I88edd91395849574436299b8badda21bb93bea39
Reviewed-by: hjk <hjk@qt.io>
2022-10-07 13:47:53 +00:00
Jarek Kobus c4e6493ff1 RemoteLinux: Replace foreach with ranged for loop
Change-Id: Iee251639c20131c8fc2fd2e182b131a9786411c7
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2022-10-05 15:05:29 +00:00
hjk 0df4d22d35 RemoteLinux: Rework TarPackage related build steps
Change-Id: I13c27e89186ab5451e1f11cf3cf28cfd9ed10a9d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2022-08-31 16:40:58 +00:00
Lucie Gérard a7956df3ca Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.

Task-number: QTBUG-67283
Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-08-26 12:27:18 +00:00
Jarek Kobus 40b0feba8d Drop Qt5: RemoteLinux: Remove code below Qt 6.0.0
Change-Id: Ibf455d7bfc6d788d779a6065593a4384425e7778
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2022-07-25 11:34:01 +00:00
hjk 23d9ef1adb RemoteLinux: Convert to Tr::tr
Change-Id: I1c541d392992fb37acecbb98f331e01d7b73fbc7
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-07-22 11:11:48 +00:00
Jarek Kobus 57e705b616 Merge AbstractPackaginsStep with TarPackageCreationStep
Change-Id: I754d46df144fa4cc4d9715a22b85b12e38828ff6
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-06-01 13:06:18 +00:00
Jarek Kobus 87f3e7563c Ssh: Rename SshConnectionParameters into SshParameters
Move it to its own header.
Get rid of SshConnection and SshConnectionManager,
as they are not used anymore.

Change-Id: I52fe20d7816ea57e7a7158ab2ae9565d50a76e21
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-05-23 12:03:39 +00:00
hjk b153aa5459 RemoteLinux: Use more FilePath in AbstractPackagingStep
Change-Id: I66533efd39f58f9bcc4a57334d427aa225bc73d8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-10-27 11:57:13 +00:00
hjk cb4f75426d ProjectExplorer: Remove one constructor overload of DeployableFile
Change-Id: I87e444349129e9370b5fec505444723d36e21448
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-09-14 03:28:48 +00:00
hjk 591e93316d Consolidate build/deploystep default display name handling
Use the display name from the factory as default, override if needed.

Change-Id: I03519c998432fea4120b0de8b2fc2686644635f2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-02 13:18:45 +00:00
hjk cec468d78a Utils/ProjectExplorer: Move re-usabled bits of aspects to Utils
Classes involved are BaseAspect and some derived classes,
LayoutBuilder and VariableChooser.

This is mostly mechanical, with various include/using changes
to make it compile.

Change-Id: I624a457f3555f102e541c4c71e33a9423af32250
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-09-23 07:44:42 +00:00
hjk 9f378d41e4 RemoteLinux: Make build/deploysteps constructible by id only
Will help to remove some of the remaining hard dependencies of Qnx and
Boot2Qt on RemoteLinux.

Change-Id: I1a327249a9b2903b5b9d869cb9cd60bb50250a5c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-09-16 15:32:44 +00:00
hjk 61bfd32438 ProjectExplorer: Introduce a ProjectConfiguration::kit() function
For convenience, and use it in some places.

Change-Id: I8f7cb502b37b2fbf4cf2d17cac9c6299558332dc
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-09-09 06:27:21 +00:00
hjk 919dc86c37 RemoteLinux: Compile fix with Qt6
QMap::unite() is gone, the replacement insert() came late, so ask
the preprocessor for help.

Task-number: QTCREATORBUG-24098
Change-Id: I2f596f9a998fa795fe0df378a39c4f1267f4e6e7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-08-20 10:23:26 +00:00
hjk 51e7bce109 ProjectExplorer: Rename Base*Aspect to *Aspect
In most cases they are used directly, so there's not much Base* in that.

Added the old name as alias as porting help for a while.

Change-Id: I494a8a560b8996bcf74915ea3570b504df6a6b4c
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-08-14 07:35:43 +00:00
hjk 430a33dcd9 Core/Utils: Migrate further to Utils::Id
The coreplugin/id.h header is kept for downstream for now.

Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-07-06 06:07:13 +00:00
hjk c95bde6f6a ProjectExplorer: Pass Id to BuildStep constructor
Allows to use constants in fewer places, similar to what e.g.
RunConfiguration does.

Change-Id: I9d049128206c4acf0ce14b06b66d6c090a7c5242
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-01-09 11:26:01 +00:00
Christian Kandeler 221d356210 Qmake: Make proper use of BuildDirectoryAspect
Change-Id: I439496c85f7e0f402ab038de6a8171dd2f7d2ffd
Reviewed-by: hjk <hjk@qt.io>
2019-11-28 12:30:52 +00:00
Eike Ziller 8201d49ea0 Merge remote-tracking branch 'origin/4.10'
Change-Id: I4d24269ef040c45e2143dfa86d1be3f7e8008521
2019-08-15 08:57:27 +02:00
Christian Kandeler 1f4176275e RemoteLinux: Fix tar packaging for long file paths
Contrary to what we assumed, long file paths cannot be split up
arbitrarily, but only at separators.

Fixes: QTCREATORBUG-22815
Change-Id: Id13036f3d73cc5d6b272066c0f8a26d9748ce6b8
Reviewed-by: hjk <hjk@qt.io>
2019-08-13 11:44:58 +00:00
hjk 6dcdacb10e RemoteLinux: Remove more unneeded qtsupport include
Change-Id: I7cdfd0a4cfa58424ddf1105c144acaba07f204b3
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-08-09 12:35:02 +00:00
hjk c39f2866c7 RemoteLinux: Simplify AbstractPackaging and derived step
Change-Id: I1a9fc0947fcca358ce3e8ca24c6430bc973f131f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-06-25 16:24:18 +00:00
hjk f4c9e5e5c4 More FileName::appendPath() -> .pathAppended()
Change-Id: I403d34e4f52f758339c158efc7a11fd329e3e043
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-05-17 11:55:04 +00:00
Christian Kandeler 966f4ea6a9 ProjectExplorer: Rework the build step run interface
Originally, the build manager used to run all build steps in a dedicated
thread. Communication between the step and the manager happened via a
QFutureInterface that was passed into the step's run() function.
Later, new steps were added that operated asynchronously, so the build
manager had to differentiate between the different kinds of steps for
starting and stopping.
These days, almost all build and deploy steps work asynchronously, which
made the QFuture-based interface look increasingly odd.
With this patch, all build steps are expected to work asynchronously, so
the build manager no longer needs to differentiate. Steps are started
and requested to stop via the run() and cancel() functions,
respectively, and emit the finished() signal when they are done. Build
step implementors no longer have to deal with a QFutureInterface. For
steps whose implementation is inherently synchronous, the BuildStep base
class offers a runInThread() function.

Change-Id: If905c68b234c5a669f6e19f43142eaa57d594803
Reviewed-by: hjk <hjk@qt.io>
2019-01-31 16:10:01 +00:00
hjk f007bc7593 ProjectExplorer: Simplify BuildStep::init() signature
The extra parameter was always computed but used only in one place,
and that use got removed lately.

Change-Id: Ie10c0107ca70ee97ce03f83294992aab8d1a3ffe
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-01-18 09:11:37 +00:00
hjk dcd0faf4c4 RemoteLinux: Use aspects in TarPackageCreationStep
Less code.

Change-Id: I0cd0e6ff04c71c1a2a514388032521152f715094
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-10-17 13:39:05 +00:00
Ulf Hermann f4a12d488c RemoteLinux: Check remote files when deploying
We discern between local and remote timestamps, and if the local
timestamp matches, we still query the remote file via SSH to see if that
one differs. If so, we still upload the file. After uploading a file we
always query its remote timestamp and save it along with the local one.

Fixes: QTCREATORBUG-21225
Change-Id: Ieeae1c3e61907beb7ad0fe9b03772af6ae351be7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-10-17 13:13:32 +00:00
hjk cbb98bedcf ProjectExplorer: Merge SimpleBuildStepWidget into BuildStepWidget
The extra m_step member is not worth the abstraction, especially
since almost all non-SimpleBuildStepWidget have something similar,
too. Also, as several derived classes needed to correct
SimpleBuildStepWidget's setShowWidget(false).

Change-Id: I6e80d8c84c363b90dc27c70abd7fa6cefa1ed91e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-10-12 16:01:46 +00:00
Orgad Shaneh 25f3fe145d RemoteLinux: Remove usage of deprecated QDateTime::toTime_t
Change-Id: I84708eea3f7a24400776169ffaea122e50100d8e
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2018-09-28 11:51:30 +00:00
hjk d05e906bac ProjectExplorer: Replace virtual BuildStepConfigWidget::showWidget
... by a bool member.

One reason less for the need of custom derived classes, i.e. one
step forward to a setup where the then-generic config widget can be
created in BuildStepListWidget::init() and filled with aspect-
created subwidget, reducing the need of per-BuildStep boilerplate
similar to what was done in RunConfiguration recently.

Task-number: QTCREATORBUG-19985
Change-Id: I85d26bdb6b35d0d6715782214328a40eef87286e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2018-09-19 13:25:06 +00:00
Robert Loehning 34b8ed1484 RemoteLinux: Initialize members
Change-Id: I0c5cd52747373be0d50ac818dbbeaf39c34fd5fd
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-12-12 13:35:03 +00:00
hjk 53a151074a ProjectExplorer/all: Re-organize BuildSteps/{Deploy,Build}Config setup
This follow the rough pattern of recent *RunConfigurationFactory changes
for build and deploy configurations.

- Collapse the two lines of constructors similar to what
  890c1906e6 did for RunConfigurations
  * Deploy* was purely mechanical
  * Build* ctors are split in connects() in the ctor body
    to create "empty shell for clone" etc
    and build step additions in initialize() functions which
    are only used in the create() case.
  -- Allows to collapse the shared 'ctor()' functions, too.

- Move FooBuildConfigurationFactory::create() implementations
  to FooBuildConfiguration() constructor. That was a strange
  and unneeded ping-pong between factories and objects, and
  furthermore allows one level less of indirection (and for a
  later, left out here, some reduction of the
  FooBuildConfiguration interfaces that were only used to
  accommodate the *Factory::create() functions.

- Most {Build,Deploy}Configuration{,Factory} classes had a canHandle(),
  but there wasn't one in the base classses. Have one there.

- Most canHandle() functions were checking simple restrictions on
  e.g. project or target types, specify those by setters in the
  constructors instead and check them in the base canHandle()

- clone() is generally replaced by a creation of a "shell object"
  and a fromMap(source->toMap()), implemented in the base, there
  are two cases left for Android and Qbs that needed(?) some extra
  polish

- generally use canHandle() in base implementation, instead
  of doing that in all Derived::canFoo()

- as a result, canCreate/create/canClone/clone reimplementations
  are not needed anymore, keep the base implementation for
  now (could be inlined into their only users later), but
  de-virtualize them.

- Combine Ios{Preset,DSym}BuildStepFactory. There was only one
  'dsym' build step they could create.

- Split the 'mangled' id into the ProjectConfiguration subtype
  specific constant identifier, and a QString extraId() bit.
  Only maintain the mangled id in saved settings.

- Make ProjectConfiguration::m_id a constant member, adapt
  all constructors of derived classe.

Not done in this patch:

- Finish possible cosmetic changes on top

- Add a way to specify restrictions to supported Qt versions
  (used in Android/Ios), as the base implementation does not
  depend on the qtsupport plugin

- Combine the QList<X> availableFoo() + createFoo(X) function
  pairs to somthing like a direct
   QList<struct { X; std::function<X()>; }> fooCreators()
  to avoid e.g. the baseId.withSuffix() <-> id.suffixAfter(base)
  pingpong

- Remove the *Factories from the global object pool

- Do something about priority(). Falling back to plain
  qmake in android+qmake setup is not helpful.

Change-Id: I2be7d88d554c5aa8b7db8edf5b93278e1ae0112a
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-12-08 11:17:55 +00:00
Christian Kandeler c05a3fdb3d Give the values of BuildStep::OutputFormat better names
The old ones did not convey their meaning very well. In particular,
NormalOutput and MessageOutput were easily confused.

Change-Id: Ia0a8c1b1c366ab3f5c59f751b37b8b1f68f6831d
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-19 16:08:57 +00:00
Christian Kandeler 696a7903ae RemoteLinux: Fix incomplete serialization in TarPackageCreationStep
Serialization of the "incremental deployment" setting was forgotten in
a8854b680e.

Change-Id: I0da294e50faf52a9473c682263ee299da675cb8c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-01-17 14:08:02 +00:00
Daniel Trevitz a8854b680e RemoteLinux: Add incremental deployment to the TarPackageCreationStep
Patch adds incremental deployment to the tar ball creation. Allows for
only changed files to be deployed in a single tar ball.

Change-Id: I28a0bd1220503125b75a664323b72906b479b821
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-01-02 23:21:41 +00:00
Orgad Shaneh e3b1c9b912 RemoteLinux: Use Qt5-style connects
The heavy lifting was done by clazy.

Change-Id: I1a03435bbb4281bad4ff64baba0182e0050170d6
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2016-07-01 11:29:27 +00:00
Tobias Hunger 2e5102f45e BuildStep: Remove finished() signal and use FutureInterface to report
Remove the finished() signal that is (sometimes) used to report that
a buildstep is done and use the FutureInterface for that purpose
consistently.

Change-Id: Ibe5520b562b91f1a7f4fc73ee898b33b930029ec
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2016-04-25 11:23:42 +00:00
Tobias Hunger 397e7f4843 Update License according to agreement with Free Qt Foundation
* Update files in src/plugins

Change-Id: Ia5d77fad7d19d4bb3498e78661982f68729adb22
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-01-19 15:57:01 +00:00