Yesterday, an incident with a commit wound up taking up a lot of time to process on FreshPorts. The purpose of this post includes:
- document how the commit was handled on different nodes
- document the fixes for some nodes
- investigate how the code can be improved to detect such situations and abort
See also How to limit a jail.
The commit
The commit modified editors/ghostwriter/Makefile. It seemed straight forward. However, when processing the port, issues are found. I have a checked out copy of the ports tree on this host:
[empty dan /usr/ports/editors/ghostwriter] % sudo make -V PORTVERSION make: "/usr/ports/Mk/bsd.port.mk" line 3406: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 4479: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here 2.2.0 [empty dan /usr/ports/editors/ghostwriter] %
In this test, 17 iterations are repeated, then it returns to the command line. This doesn’t happen for all situation however. Case in point, make generate-plist:
[empty dan /usr/ports/editors/ghostwriter] % sudo make generate-plist make: "/usr/ports/Mk/bsd.port.mk" line 3406: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 4479: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: Graph cycles through /var/ports/usr/ports/editors/ghostwriter/work-qt5 make[1]: "/usr/ports/Mk/bsd.port.mk" line 3406: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 4479: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: Graph cycles through /var/ports/usr/ports/editors/ghostwriter/work-qt5 make[2]: "/usr/ports/Mk/bsd.port.mk" line 3406: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 4479: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: Graph cycles through /var/ports/usr/ports/editors/ghostwriter/work-qt5 ^C*** Signal 2 *** Signal 2 *** Signal 2 [empty dan /usr/ports/editors/ghostwriter] % sudo make generate-plist
In this case, I stopped the process via ^C early in the process. If I let it run, I find many instances of generate-plist as demonstrated by this partial paste of the output.
[empty dan /usr/ports/editors/ghostwriter] % sudo make generate-plist make: "/usr/ports/Mk/bsd.port.mk" line 3406: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 4479: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make: Graph cycles through /var/ports/usr/ports/editors/ghostwriter/work-qt5 make[1]: "/usr/ports/Mk/bsd.port.mk" line 3406: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 4479: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[1]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[1]: Graph cycles through /var/ports/usr/ports/editors/ghostwriter/work-qt5 make[2]: "/usr/ports/Mk/bsd.port.mk" line 3406: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 4479: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5193: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[2]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[2]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored ... make[115]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[115]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[115]: Graph cycles through /var/ports/usr/ports/editors/ghostwriter/work-qt5
At this point, I detach from that tmux session to check how many make generate-plist processes are running.
[detached (from session 0)] [empty dan /usr/ports/editors/ghostwriter] % ps auwwx | grep generate root 72821 3.9 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72739 3.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72780 3.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72698 3.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72903 3.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72575 3.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72616 3.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72657 3.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72862 3.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72493 3.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72534 3.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72411 3.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72452 3.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72370 3.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72329 3.1 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72288 3.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72206 2.9 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72247 2.9 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72134 2.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72081 2.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72040 2.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71875 2.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71917 2.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71958 2.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71999 2.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71792 2.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71833 2.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71710 2.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71751 2.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71628 2.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71669 2.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71577 2.1 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71495 2.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71536 2.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71413 1.9 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71454 1.9 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71372 1.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71290 1.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71331 1.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71208 1.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71249 1.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71085 1.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71126 1.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71167 1.5 0.0 12944 3304 2 S+J 14:26 0:00.01 make generate-plist root 71003 1.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 71044 1.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70880 1.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70921 1.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70962 1.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70716 1.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70757 1.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70798 1.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70839 1.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70634 1.1 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70675 1.1 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70511 1.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70552 1.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70593 1.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70429 0.9 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70470 0.9 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70224 0.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70265 0.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70306 0.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70347 0.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70388 0.8 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70019 0.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70060 0.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70101 0.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70142 0.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 70183 0.7 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69855 0.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69896 0.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69937 0.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69978 0.6 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69731 0.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69773 0.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69814 0.5 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69526 0.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69567 0.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69608 0.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69649 0.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69690 0.4 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69362 0.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69403 0.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69444 0.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69485 0.3 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69198 0.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69239 0.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69280 0.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69321 0.2 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69075 0.1 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69116 0.1 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69157 0.1 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist dan 73150 0.0 0.0 12840 2328 0 S+J 14:26 0:00.00 grep generate root 67091 0.0 0.0 18712 8204 2 I+J 14:26 0:00.01 sudo make generate-plist root 67092 0.0 0.0 12944 3296 2 I+J 14:26 0:00.01 make generate-plist root 67146 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67187 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67228 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67269 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67310 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67351 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67392 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67433 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67474 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67515 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67556 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67597 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67638 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67679 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67720 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67761 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67802 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67843 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67884 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67925 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 67966 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 68007 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 68048 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 68089 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 68130 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 68171 0.0 0.0 12944 3300 2 I+J 14:26 0:00.01 make generate-plist root 68212 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68253 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68294 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68335 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68376 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68417 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68458 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68499 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68541 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68582 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68623 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68664 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68705 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68747 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68788 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68829 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68870 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68911 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68952 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 68993 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 69034 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72944 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 72985 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 73026 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 73067 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 73108 0.0 0.0 12944 3300 2 S+J 14:26 0:00.01 make generate-plist root 73151 0.0 0.0 12944 2828 2 S+J 14:26 0:00.00 make generate-plist [empty dan /usr/ports/editors/ghostwriter] %
About 150 instances… what’s going on here? Recursion?
I rejoin my tmux session and stop the command:
make[195]: "/usr/ports/Mk/bsd.port.mk" line 5365: warning: duplicate script for target "/var/ports/usr/ports/editors/ghostwriter/work-qt5" ignored make[195]: "/usr/ports/Mk/bsd.licenses.mk" line 769: warning: using previous script for "/var/ports/usr/ports/editors/ghostwriter/work-qt5" defined here make[195]: Graph cycles through /var/ports/usr/ports/editors/ghostwriter/work-qt5 ^C*** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2 *** Signal 2
That’s about 190 Signal 2, I’m guessing one for every make generate-plist invocation.
The different nodes
Production was fixed first. The commit was never fully processed as you can see in this screenshot:
This was the case for two other nodes.
However, for dev, test, and stage, those nodes display this:
My question is: why the difference?
Why?
Unless otherwise mentioned, in this section:
- when I mention dev, I mean dev, test, and stage; the nodes which completed commit processing.
- when I mention prod, I mean prod and the two other nodes which did not complete the commit processing.
This is what I know.
- Commit processing would start at about the same time on all nodes.
- Commit processing is automated and run from periodic scripts.
- Production was recovered first. dev was recovered last.
- Prod was rebooted.
- On dev, the retry queue is empty.
- On prod, there was an entry in the retry queue, but not on any other node, nor on dev
The last entry on prod for this commit was (I’ve split the line into two for easier reading).
generate_plist_command = /usr/local/bin/sudo /usr/sbin/jexec freshports /make-generate-plist.sh \ /usr/ports editors/ghostwriter 2>/tmp/FreshPorts.editors.ghostwriter.make-error.2023.1.15.21.6.17.30483
On dev, the jail was restarted. That also appears to have restarted processing the partially completed commit. The processing of each commit is logged to a file for that particular commit. The logs are overwritten when a commit is processed. Yeah, that sounds bad now. Those commits finished like this:
xml_munge_git.pm::SaveUpdateToDB --- start GetExistingMessageID => sql=select id from commit_log where message_id = '6d8e63c53f121527898f3228fdecdc72a57022e3' message 6d8e63c53f121527898f3228fdecdc72a57022e3 has already been added to the database no commit id returned. we'll just exit now shall we?
The date:
[dev-ingress01 dan ~freshports/message-queues/archive/2023_01/2023_01_15] % ls -l 2023.01.15.21.05.21.000000.6d8e63c53f121527898f3228fdecdc72a57022e3.log -rw-r--r-- 1 freshports freshports 2731 2023.01.16 00:32 2023.01.15.21.05.21.000000.6d8e63c53f121527898f3228fdecdc72a57022e3.log [dev-ingress01 dan ~freshports/message-queues/archive/2023_01/2023_01_15] %
That time stamp is 00:32
Let’s check the database:
freshports.devgit=# select date_added from commit_log where message_id = '6d8e63c53f121527898f3228fdecdc72a57022e3'; date_added ------------------------------- 2023-01-15 21:06:06.165977+00 (1 row) freshports.devgit=#
Checking all nodes, they all have similar log entries for this commit: message 6d8e63c53f121527898f3228fdecdc72a57022e3 has already been added to the database.
The commit was added to the database at 21:06, the commit was at 21:05 – therefore, this is the original commit processing, which someone got completely processed. That log is now completely gone. I checked snapshots; they’ve rolled over by now:
[slocum dan ~] % zfs list -r -t snapshot nvd/freshports/dev/message-queues NAME USED AVAIL REFER MOUNTPOINT nvd/freshports/dev/message-queues@autosnap_2023-01-16_10:01:30_hourly 161K - 15.0M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_11:00:40_hourly 68K - 15.7M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_12:01:12_hourly 66K - 16.2M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_13:02:25_hourly 104K - 16.7M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_14:01:00_hourly 78K - 20.7M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_14:45:49_frequently 67K - 21.0M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_15:00:40_hourly 0B - 21.2M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_15:00:40_frequently 0B - 21.2M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_15:15:39_frequently 0B - 21.2M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_15:30:43_frequently 0B - 21.2M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_15:45:34_frequently 0B - 21.2M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_16:00:30_hourly 0B - 21.4M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_16:00:30_frequently 0B - 21.4M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_16:15:40_frequently 0B - 21.3M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_16:30:57_frequently 0B - 21.3M - nvd/freshports/dev/message-queues@autosnap_2023-01-16_16:45:27_frequently 0B - 21.4M -
Why processed twice
Why would the commit get processed twice? I suspect commit processing had not completely finished on any node. That would leave the commit in the incoming queue. The commit is not removed from that queue until processing is complete.
Why do we not just reprocess the commit in full? That is a decision made long ago. Commit processing can be system intensive, especially if it involves many ports. Usually, if a commit needs to be reprocessed, the existing commit is manually delete first, then manually injected back into the incoming queue. The fact that these are manual steps show how rare they occur.
Why no PORTVERSION
I don’t know why there is no PORTVERSION set on prod.
Fixing prod
This is how I fixed prod.
Let’s find the entry which needs fixing.
freshports.org=# select * from commit_log_ports where commit_log_id = (select id from commit_log where message_id = '6d8e63c53f121527898f3228fdecdc72a57022e3'); commit_log_id | port_id | needs_refresh | port_version | port_revision | port_epoch | port_name_revision ---------------+---------+---------------+--------------+---------------+------------+-------------------- 941999 | 49603 | 7 | | | | (1 row) freshports.org=#
Here is the same entry from dev:
freshports.devgit=# select * from commit_log_ports where commit_log_id = (select id from commit_log where message_id = '6d8e63c53f121527898f3228fdecdc72a57022e3'); commit_log_id | port_id | needs_refresh | port_version | port_revision | port_epoch | port_name_revision ---------------+---------+---------------+--------------+---------------+------------+-------------------- 944770 | 49603 | 0 | 2.2.0 | 0 | 0 | ghostwriter-2.2.0 (1 row) freshports.devgit=#
This is the fix I ran:
freshports.org=# begin; BEGIN freshports.org=*# update commit_log_ports set needs_refresh = 0, port_version = '2.2.0', port_revision = 0, port_epoch = 0, port_name_revision = 'ghostwriter-2.2.0' where commit_log_id = 941999 and port_id = 49603; UPDATE 1 freshports.org=*# select * from commit_log_ports where commit_log_id = (select id from commit_log where message_id = '6d8e63c53f121527898f3228fdecdc72a57022e3'); commit_log_id | port_id | needs_refresh | port_version | port_revision | port_epoch | port_name_revision ---------------+---------+---------------+--------------+---------------+------------+-------------------- 941999 | 49603 | 0 | 2.2.0 | 0 | 0 | ghostwriter-2.2.0 (1 row) freshports.org=*# \d commit_log_ports Table "public.commit_log_ports" Column | Type | Collation | Nullable | Default --------------------+----------+-----------+----------+--------- commit_log_id | integer | | not null | port_id | integer | | not null | needs_refresh | smallint | | not null | port_version | text | | | port_revision | text | | | port_epoch | text | | | port_name_revision | text | | | Indexes: "commit_log_ports_pkey" PRIMARY KEY, btree (commit_log_id, port_id) "commit_log_ports_needs_refresh_idx" btree (needs_refresh) WHERE needs_refresh <> 0 "commit_log_ports_port_id" btree (port_id) "commit_log_ports_port_name_revision" btree (port_name_revision) "needs_refresh" btree (needs_refresh) Foreign-key constraints: "$1" FOREIGN KEY (commit_log_id) REFERENCES commit_log(id) ON UPDATE CASCADE ON DELETE CASCADE "$2" FOREIGN KEY (port_id) REFERENCES ports(id) ON UPDATE CASCADE ON DELETE CASCADE Triggers: commit_log_ports_insert AFTER INSERT ON commit_log_ports FOR EACH ROW EXECUTE FUNCTION commit_log_ports_insert() freshports.org=*# commit; COMMIT freshports.org=#
Then, to invalidate the cache, I touch the port:
freshports.org=# update ports set id = id where id = 49603; UPDATE 1
That command should have been done within a commit. See above for where I grabbed 49603.
How does that invalidate the cache? A trigger invokes NOTIFY and processing LISTENing on the front end (website) removed the relevant cached items.
Possible improvements
There are things to consider:
- Longer snapshot retention
- Not overwriting logs, instead, only append. Before clowns start jumping on that: each commit has it’s own uniquely named log file.
- Some kind of limits on the jobs I run within the jails – which would terminate the processing early, avoiding resource depletion