When a commit goes wrong

Yesterday, an incident with a commit wound up taking up a lot of time to process on FreshPorts. The purpose of this post includes:

  1. document how the commit was handled on different nodes
  2. document the fixes for some nodes
  3. 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:

Screen shot of production website, the commit history for the port editors/ghostwriter is shown.
What’s wrong here? The commit at 21:05 does not show PORTVERSION and the refresh icon is displayed (that means commit processing did not conclude).

This was the case for two other nodes.

However, for dev, test, and stage, those nodes display this:

Screen shot of production website, the commit history for the port editors/ghostwriter is shown.
Sample screen shot from dev showing PORTVERSION 2.2.0 and there is no refresh icon – this commit appears to have completed processing.

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.

  1. Commit processing would start at about the same time on all nodes.
  2. Commit processing is automated and run from periodic scripts.
  3. Production was recovered first. dev was recovered last.
  4. Prod was rebooted.
  5. On dev, the retry queue is empty.
  6. 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
Website Pin Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google StumbleUpon Premium Responsive

Leave a Comment

Scroll to Top