On Thu, 21 May 2020 11:20:18 +0100, Neil Bothwick wrote: > On Thu, 21 May 2020 06:44:35 +0200, Andreas Fink wrote: > > > recently emerge started to get stuck after an upgrade of dovecot, and > > it is somehow related to my /etc/portage/bashrc, which has the > > following content: function post_pkg_postinst() { > > if test "$CATEGORY/$PN" = "dev-db/mariadb"; then > > /etc/init.d/mysql status && /etc/init.d/mysql restart > > elif test "$CATEGORY/$PN" = "www-servers/apache"; then > > /etc/init.d/apache2 status && /etc/init.d/apache2 restart > > elif test "$CATEGORY/$PN" = "net-mail/dovecot"; then > > /etc/init.d/dovecot status && /etc/init.d/dovecot restart > > echo 'going to sleep' > > sleep 5 > > echo 'finished sleeping' > > elif test "$CATEGORY/$PN" = "mail-mta/postfix"; then > > /etc/init.d/postfix status && /etc/init.d/postfix restart > > elif test "$CATEGORY/$PN" = "net-misc/openssh"; then > > /etc/init.d/sshd status && /etc/init.d/sshd restart > > fi > > } > > > > > > I restart dovecot after an upgrade, in the same way as I restart e.g. > > postfix. However for dovecot emerge gets stuck and does not continue > > and is sitting there quietly (killable only via `pkill -9 emerge`). > > I can confirm this. I tried your bashrc (nice idea by the way, I > normally manually run needrestart after an update) and the dovecot > install completed but then hung. The next step is to add set +x to > bashrc to see where the hang occurs.
It seems the final echo is executed, but then the function doesn't exit for some reason. I tried rewriting it using case, which looks cleaner to me but fails in the same way. function post_pkg_postinst() { set +x case "$CATEGORY/$PN" in "net-mail/dovecot") /etc/init.d/dovecot status && /etc/init.d/dovecot restart echo 'going to sleep' sleep 5 echo 'finished sleeping' ;; "mail-mta/postfix") /etc/init.d/postfix status && /etc/init.d/postfix restart ;; esac } -- Neil Bothwick Vuja De: the feeling that you've never been here before.
pgpFKANg_kzi0.pgp
Description: OpenPGP digital signature