Entropy preserved libs handling code did not check all the followed symlink
before removing them. This causes the deletion of unexpected libraries during the
removal of packages. For example, app-emulation/vmware-workstation contains
the following symlink:
(A) /opt/vmware/lib/vmware/lib/libssl.so.1.0.1/libssl.so.1.0.1 -> (B) /usr/lib64/libssl.so.1.0.1
Upon removal of vmware-workstation, A is garbage collected and deleted,
if it's a symlink, the link is followed and (B) is removed as well, without
validating the action (i.e. checking if a package is still owning (B).)
This commit fixes this. See Sabayon bug #5812.
Traceback (most recent call last):
File "/usr/lib64/python3.4/base64.py", line 519, in _input_type_check
m = memoryview(s)
TypeError: memoryview: str object does not have the buffer interface
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/bin/equo", line 15, in <module>
main()
File "/usr/lib/entropy/client/solo/main.py", line 332, in main
exit_st = func(*func_args)
File "/usr/lib/entropy/client/solo/commands/command.py", line 406, in _call_exclusive
return func(client)
File "/usr/lib/entropy/client/solo/commands/update.py", line 115, in _update
rc = self._normal_update(entropy_client)
File "/usr/lib/entropy/client/solo/commands/update.py", line 236, in _normal_update
rc = repo_intf.sync()
File "/usr/lib/entropy/lib/entropy/client/interfaces/repository.py", line 327, in sync
rc = self._run_sync()
File "/usr/lib/entropy/lib/entropy/client/interfaces/repository.py", line 146, in _run_sync
self._entropy, repo, self.force, self._gpg_feature)
File "/usr/lib/entropy/lib/entropy/client/interfaces/db.py", line 2764, in update
return updater.update()
File "/usr/lib/entropy/lib/entropy/client/interfaces/db.py", line 2029, in update
selected = self._select_database_mirror()
File "/usr/lib/entropy/lib/entropy/client/interfaces/db.py", line 428, in _select_database_mirror
https_validate_cert = https_validate_cert)
File "/usr/lib/entropy/lib/entropy/client/interfaces/db.py", line 1992, in _remote_revision
fetch_rc = fetcher.download()
File "/usr/lib/entropy/lib/entropy/fetchers.py", line 391, in download
status = downloader()
File "/usr/lib/entropy/lib/entropy/fetchers.py", line 600, in _urllib_download
self.__http_basic_user, self.__http_basic_pwd)).replace('\n', '')
File "/usr/lib64/python3.4/base64.py", line 548, in encodestring
return encodebytes(s)
File "/usr/lib64/python3.4/base64.py", line 536, in encodebytes
_input_type_check(s)
File "/usr/lib64/python3.4/base64.py", line 522, in _input_type_check
raise TypeError(msg) from err
TypeError: expected bytes-like object, not str
Don't show the package itself. If there are no revdeps, nothing would be
shown so a custom "(no reverse dependencies)" message will appear, which
is clearer.
Fixed bug introduced in: a2315b1 [entropy.core] _system_parser: drop access() usage
This ensures that /etc/entropy/entropy.conf is read, instead of being
ignored.