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



## gessel (Jun 20, 2020)

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:


```
===>>> 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?


----------



## Mjölnir (Jun 21, 2020)

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 ...`)


----------



## gessel (Jun 21, 2020)

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.


----------

