After a fair time of using the hook described in the
previous post I realized that it noticeably slows down the uninstalls of packages with lots of files like
sys-kernel/gentoo-sources
and hence I decided to rewrite it as a
Python hook to see how it performs:
UNINSTALL_PROTECT=["/lib64/modules/"]
def hook_run_unmerger_unlink_file_override(env, hook_env):
for path in UNINSTALL_PROTECT:
if hook_env["UNLINK_TARGET"].startswith(path):
return "skip"
else:
return ""
I was expecting a pretty big difference as for Python hooks an embedded interpreter is used and
.hook hooks need a separate bash interpreter each time they are run. Nonetheless I was still surprised to see how big the difference really was for
sys-kernel/gentoo-sources-2.6.23-rX
uninstallation:
.hook hook ~ 8m
python hook ~ 1m 15s
no hook ~ 1m
Python hook is not much slower than no hook at all and hence I didn't care to try and write it as a
.so hook, which probably would be even faster.
No comments:
Post a Comment