FreeBSD Bugzilla – Bug 189398
ports-mgmt/portmaster: portmaster -g does not always build intermediate ports
Last modified: 2014-06-19 00:37:48 UTC
When using portmaster -g to build new ports and create packages for them, in many cases it does not create packages for the required ports. As an example, if one starts without any KDE ports installed and issues
portmaster -g x11/kde4
in fact at the end only a tiny kde-4.12.4.txz package will have been created, but nothing for any of the ports pulled in by x11/kde4. This behavior has started a few weeks ago; before that point, portmaster -g would build packages for all the required sub-ports.
It seems that portmaster does not correctly hook into the building of subports any more; rather, they seem to be built directly as if one had just issued
cd x11/kde4 ; make
This is also reflected by the fact that the xterm window title does not reflect any more which sub-port is currently being built, but just stubbornly shows "portmaster: x11/kde4" all the time.
The same thing happens with many other bigger metaports. There are some ports, however, where portmaster will still correctly build each sub-port separately, and will also build packages for each of them.
This behavior seems to have originated with one of the latest great reshufflings of the port infrastructure not too long ago. Most likely, portmaster has to be adapted to take these changes into account and again hook correctly into the build process for sub-ports.
How-To-Repeat: Start with no KDE ports installed, issue "portmaster -g x11/kde4", and observe that at the end of the process, only the package kde-4.12.4.txz has been created (although all sub-ports have been built).
Over to maintainer (via the GNATS Auto Assign Tool)
I have confirmed it is a recent portmaster regression (not the Ports framework). I am working on a fix.
Actually it is a subtle framework bug. Still working on a fix.
The problem is that the default for 'make' (meaning 'make all') in Ports changed from 'make build' to 'make stage'. Portmaster uses the default.
'make stage' calls run-depends, which makes the ports framework start building all of the required run dependencies, never giving portmaster a chance to manage them itself.
This introduced the issue:
r351399 | bdrewery | 2014-04-16 11:29:38 -0500 (Wed, 16 Apr 2014) | 8 lines
- Make default target "make stage" if staging supported.
This is so that 'make' followed by 'make deinstall install' will, by default,
have a much shorter period of files missing on the system as it is without
I will update portmaster to handle this better.
Fixed in 3.17.6 release: http://svnweb.freebsd.org/ports?view=revision&revision=358332