Re: [gentoo-user] emerge stuck after dovecot upgrade

2020-05-21 Thread Andreas Fink
On Thu, 21 May 2020 12:54:49 +0100
Neil Bothwick  wrote:

> 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
> }
>
>

I do not think that it is stuck in the bashrc itself, but something that 
happens in the
bashrc makes the emerge python process not realizing that everything finished. 
These are
the interesting running processes after the command
`ebuild /usr/portage/net-mail/dovecot/dovecot-2.3.10.1.ebuild qmerge`
gets stuck (I cannot see any bash still running, that's why I assume that the 
bashrc itself finishes):
root  5281  2.0  0.7  71060 63412 pts/0SN+  16:19   0:01 
/usr/bin/python3.7 -b /usr/lib/python-exec/python3.7/ebuild 
/usr/portage/net-mail/dovecot/dovecot-2.3.10.1.ebuild qmerge
root  5286  8.5  0.0  0 0 pts/0ZN+  16:19   0:06 [ebuild] 

root  5869  0.0  0.0   4284  2388 ?SNs  16:19   0:00 
/usr/sbin/dovecot -c /etc/dovecot/dovecot.conf
root  5876  0.0  0.0   4152  2620 ?SN   16:19   0:00 dovecot/log
root  5879  0.0  0.0   6236  4568 ?SN   16:19   0:00 dovecot/config
root  5883  0.0  0.0  19632  8048 ?SN   16:19   0:00 dovecot/auth

Cheers
Andreas



Re: [gentoo-user] emerge stuck after dovecot upgrade

2020-05-21 Thread Neil Bothwick
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


Re: [gentoo-user] emerge stuck after dovecot upgrade

2020-05-21 Thread Neil Bothwick
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.


-- 
Neil Bothwick

Walking on water and writing software to specification is easy if they're
frozen.


pgphrGwrD4ROL.pgp
Description: OpenPGP digital signature