506 Commits

Author SHA1 Message Date
Fabio Erculiani
2d65d5b7bf [entropy.client] fix conflicts removal handling during upgrade.
In certain extreme situations, that are more likely if the install
state is old (e.g. 9 months +), Entropy may decide to remove packages
due to conflicts with the version being installed and shoot itself
in the foot, if this is the case of dev-lang/python :-).

So, this commit tries to avoid the scenario by filtering out package
removals for those that are being installed anyway as part of the
transaction (e.g. a system upgrade).

This should fix the very specific case, but increase uncertainty
and thus entropy in other cases where once a package that lists
conflicts is installed, it may not expect to find that package
installed. However, this case should be handled by the dependency
graph generator (and it currently does not), which would need to
reorder the execution of the queue to comply with conflicts.

Perhaps, someone in the future will improve that too, for now,
let's enjoy one more snowflake.

Current improvement:
- foo-1 and bar-2 are set to be installed
- foo-1 conflicts with <bar-2
- bar-1 is installed
- foo-1 wanted to remove bar-1 as part of foo-1 install transaction.
  (now fixed, it won't...)
- bar-2 is then installed

Better improvement:
- foo-1 and bar-2 are set to be installed
- foo-1 conflicts with <bar-2 (but bar-2 itself can be installed
  and does not conflict with foo-1)
- bar-2 is set to be installed before foo-1
- when entropy gets to foo-1 there is nothing to remove
2017-10-08 21:51:07 +02:00
Fabio Erculiani
18fa7ebf5d [RigoDaemon] fix typo in debug string name 2017-10-08 21:14:51 +02:00
Fabio Erculiani
98cd2b2b9f [rigo] Force terminal expansion, fixes bug #5305 2016-11-19 21:14:41 +01:00
Sławomir Nizio
e96db09ad7 [solo.commands,lib] display packages that pull in conflicting ones 2016-08-05 20:00:21 +02:00
Fabio Erculiani
91ed0f744d Update translations 2016-03-20 19:32:01 +01:00
Fabio Erculiani
edcd57c9de [Rigo] Gtk 3.14 fixes 2015-01-13 10:18:46 +00:00
Fabio Erculiani
265eb182f8 [Rigo] fix various deprecation warnings 2015-01-04 16:13:12 +00:00
Fabio Erculiani
788e54ced3 [Rigo] update translations 2014-04-04 11:35:27 +02:00
Fabio Erculiani
a04e6381bb [Rigo] update translations 2014-03-16 17:03:48 +01:00
Fabio Erculiani
7bc1306d28 [Rigo] require Gtk+ 3.10 and solve all deprecation warnings related to Gtk*Box 2014-03-02 12:13:14 +01:00
Fabio Erculiani
e4411da049 [Rigo] update translations 2014-02-14 16:14:59 +01:00
Fabio Erculiani
03ef3991bd [entropy.client] refactor NoticeBoard Entropy Client API 2014-02-14 13:10:16 +01:00
Fabio Erculiani
eb64e4156a [Rigo] do not show app management buttons during upgrade 2014-01-14 09:09:19 +01:00
Fabio Erculiani
0b1b213730 [Rigo] translate IDLE DaemonAppAction as well 2014-01-14 01:01:21 +01:00
Fabio Erculiani
14cff214c6 [Rigo] Always execute _entropy_bus() from the main thread, avoids deadlocks 2014-01-14 01:00:18 +01:00
Fabio Erculiani
f9a80d7bd0 [Rigo] add IDLE to AppActions enum 2014-01-14 00:58:45 +01:00
Fabio Erculiani
7c8bfe8303 [Rigo] emit application-abort when busy() fails with BusyError 2014-01-14 00:14:09 +01:00
Fabio Erculiani
6b7e4f96c3 [Rigo] add UPGRADE to AppActions to match DaemonAppActions 2014-01-14 00:13:41 +01:00
Dušan
a03296d92d Slovak translation update
finally translated to 100%
2014-01-05 11:27:54 +01:00
Dušan
1152e6e6f0 Slovak translation update 2014-01-05 10:11:47 +01:00
Dušan
95a37ca2a2 Slovak translation update
Fixed strings with plurals
2014-01-04 22:27:40 +01:00
Fabio Erculiani
de156b083b [Rigo] change the EntropyRepository default cache policy to NONE
This saves a huge quantity of RAM, as happened with RigoDaemon
2014-01-04 11:16:00 +01:00
Fabio Erculiani
289add075b [Rigo] Update the Slovak translation, thanks to Dušan Kazik 2014-01-03 20:24:27 +01:00
Fabio Erculiani
c65d713c91 [Rigo] fix NotificationBox message_type keyword argument 2014-01-03 15:12:12 +01:00
Fabio Erculiani
cbe42edee9 [RigoDaemon] set the cache policy to EntropyRepositoryCachePolicies.NONE
This greatly reduces the memory consumption of RigoDaemon
2014-01-03 07:36:44 +01:00
Fabio Erculiani
f446b8d05b [RigoDaemon] reimplement Entropy.get_repository()
We need to monkey patch isMainThread in order to return True for
the ActionQueueWorkerThread as well. This avoids EntropySQLRepository
to initialize an infinite number of cleanup monitor threads for a
thread that will never go away (the ActionQueueWorkerThread one).
2013-12-31 17:53:22 +01:00
Fabio Erculiani
5ccde22103 [RigoDaemon] clear resources at the end of the action queue 2013-12-31 16:54:34 +01:00
Fabio Erculiani
711db81d41 [Rigo] disable recent searches for now, since the feature doesn't respect the use cases 2013-12-31 16:02:09 +01:00
Fabio Erculiani
be063dca57 [Rigo] emit application-abort when Application action is cancelled by the user 2013-12-31 15:59:13 +01:00
Fabio Erculiani
0c09a2f7ca [RigoDaemon] wrap TextInterface.output in order to catch all the messages 2013-12-31 15:16:56 +01:00
Fabio Erculiani
f4591d642f [Rigo] use nice unicode headers 2013-12-31 15:11:52 +01:00
Fabio Erculiani
f30efd3a8d [Rigo] MANAGING_APPLICATIONS, UPGRADING_SYSTEM no longer use the exclusive lock 2013-12-31 15:01:57 +01:00
Fabio Erculiani
7ec49e5c99 [Rigo] make sure to operate on EntropyResourcesLock from the main thread 2013-12-31 15:01:24 +01:00
Fabio Erculiani
d6aa579522 [Rigo] add comment about EntropyResourcesLock requirements 2013-12-31 14:59:11 +01:00
Fabio Erculiani
cc9c663954 [Rigo] update translations 2013-12-26 22:55:25 +01:00
Fabio Erculiani
57b672043c [Rigo] update rigo.pot 2013-12-26 22:54:59 +01:00
Fabio Erculiani
f5efd44cc2 [RigoDaemon] acquire UpdatesNotificationResourceLock in non blocking mode
We cannot sleep with the activity mutex held without affecting
parallelism so badly. Otoh, we cannot wleep on UpdatesNotificationResourceLock
without affecting 3rd party clients in a way that we would starve them
for a while. So, try to acquire the file lock in non blocking mode
and if it fails, reschedule a new call as soon as the same lock is
freed (exclusive acquire succeeds). This assumes that if the lock
is held back, we will just re-do the whole trick again and again.
2013-12-26 22:52:12 +01:00
Fabio Erculiani
f1a925c220 [solo.commands.install] acquire the notification lock in shared NB mode
This should avoid starvation in the scenario outlined in code comments.
2013-12-26 22:52:12 +01:00
Fabio Erculiani
ec198d632b [RigoDaemon] make sure that the serializer is always released
Even in case of exceptions.
2013-12-26 22:52:12 +01:00
Fabio Erculiani
bccbce4a34 [RigoDaemon] use UpdatesNotificationResourceLock to avoid signal spam
If this resource lock is acquired, block until the lock is released
so that we will not keep sending status updates to the connected clients
2013-12-26 22:52:12 +01:00
Fabio Erculiani
934a7ce14b [RigoDaemon] drop sleep()
With the new locking strategy, this is no longer necessary
2013-12-26 22:52:12 +01:00
Fabio Erculiani
c22f4121f6 [RigoDaemon] use ClientSettings() rather than SystemSettings()[id] 2013-12-12 19:22:42 +01:00
Fabio Erculiani
29c1eba9a6 [Rigo] expand NotificationBox content area horizontally. This fix is needed by Gtk+ 3.10 2013-12-11 16:37:53 +01:00
Fabio Erculiani
cc9c35fd81 [Rigo] update translations 2013-12-11 16:23:45 +01:00
Fabio Erculiani
fa786cce39 [Rigo] update translations 2013-12-11 15:21:42 +01:00
Fabio Erculiani
ebf63e6060 [entropy.locks] fix shared/exclusive locking mix due to reentrancy, add tests 2013-12-08 16:15:39 +01:00
Fabio Erculiani
358c6cc80c [entropy.client.repository] drop unlocked_sync(), locking happens externally nowadays 2013-12-08 14:42:23 +01:00
Fabio Erculiani
1917771b54 [entropy.locks] move Entropy Resources Lock code to a separate module 2013-12-08 14:37:57 +01:00
Fabio Erculiani
99bb796952 [Rigo] initialize the CSS provider as soon as possible, fixes a glitch with GTK 3.10 2013-12-08 07:37:20 +01:00
Fabio Erculiani
c0776b07bd [RigoDaemon] import the threading module directly 2013-12-08 06:17:15 +01:00