1. Add an explicit 'make stage' phase 2. Set DEVELOPER=yes for ports in environment so that 'make stage' runs 'stage-qa'. - DEVELOPER=yes needed at least for 'check-sanity' and 'stage' phases. - Non-zero exit status is fatal but failure may be delayed until all other checks are done. - DEVELOPER=yes should only be set for listed ports, NOT DEPENDENCIES. This may be be difficult, but without doing this than Tinderbox is less useful as it will tell the user that gettext fails QA tests when they only care about their own port. 3. Call 'make check-plist' after 'make stage'. This will check for most plist issues. - Non-zero exit status is fatal but failure may be delayed until all other checks are done. 4. Replace deinstall leftover whitelist with in-ports mechanism added in ports r351446. See commit log. Checking if Mk/Scripts/check_leftovers.sh exists and using it, otherwise using the old built-in mechanism is fine for supporting older trees. 5. stage-qa and check-plist failures need to be recognized as a build failure reason 6. Checking leftovers needs to happen after uninstalling only the port being tested, not after uninstalling *everything* including deps. Checking after deps leads to false-positives if the deps are broken. As for explicitly calling 'make check-plist', if DEVELOPER is properly only set for non-deps then we can make bsd.port.mk automatically call check-plist after stage-qa. -- This may have been skipped in bsd.port.mk for another reason, still trying to remember...