Infinite build loop with # portmaster -df -r postgresql11-client

I executed # portmaster -df -r postgresql11-client and got a build loop on 3 jails. One had devel/ccache disabled, the other two were using it. All three looped until ctrl-c. At the end of lengthy post build, I see variations of:

Code:
===>>> The following actions were performed:
        Re-installation of pkg-1.14.4
        Re-installation of ccache-3.7.1_1
        Re-installation of libiconv-1.16
        Re-installation of indexinfo-0.3.1
        Re-installation of gettext-runtime-0.20.2
        Re-installation of libtextstyle-0.20.2
        Re-installation of gettext-tools-0.20.2
        Re-installation of gmake-4.3_2
        Re-installation of pkgconf-1.6.3,1
        Re-installation of libressl-3.1.3
        Re-installation of postgresql11-client-11.8
        Re-installation of pkg-1.14.4
        Re-installation of ccache-3.7.1_1
        Re-installation of pkg-1.14.4
        Re-installation of ccache-3.7.1_1
        Re-installation of pkg-1.14.4
        Re-installation of libiconv-1.16
        Re-installation of pkg-1.14.4

(after an hour or two, ~770 lines worth each, clearly not productive.)

seems related to bug 241940 but as of the last comment, there appears to be no clear solution.

Any better answer than ctrl-c then restart with remaining ports?
 
if portmaster is still a shell script (which is not suitable for complex tasks), I'd say you better not use it... e.g. bug 199572 (looks very similar). portmaster has grown over time, and being a very complex shell script, it is hard to impossible to maintain. There a broken-by-design (strictly speaking: by-implementation) issues like the one you ran into or the above I filed in (199572).

IMHO the root cause of the problem is that portmaster does not use make(1) in a proper way where it is appropiate to do so. See also the well known Recursive Make Considered Harmful, and my comments in bug 199572.
  • A fix is in the works: a volunteer started a rewrite in LUA.
  • Instead, use sysutils/poudriere (or sysutils/synth)
  • or go-by-feet in /usr/ports ( make fetch-recursive ...)
 
  • Thanks
Reactions: a6h
ports-mgmt/portmaster is still the most convenient, least resource intensive method for me. I'm pleased it continues to be functional despite the occasional quirk, such as this one.

If anyone else encounters this error, escaping the loop with ctrl-c and then executing portmaster -Rd <list of ports left to go provided by portmaster> completed correctly.
 
Back
Top