Hi, it appears that sometimes, the textproc/groff build can fail during the fake stage because make(1) thinks that some directories it has to enter to install to the fake area are already "up to date", which of course makes no sense during fake. Jerome Ibanes <jibanes at gmail dot com> has seen this on 6.0-release:
===> Faking installation for groff-1.22.3p2 [...] test -z "R I B BI DESC" || for f in ""R I B BI DESC; do rm -f /usr/ports/pobj/groff-1.22.3/fake-sparc64/usr/local/share/groff/1.22.3/font/devutf8/$f; if test - f $f; then /usr/ports/pobj/groff-1.22.3/bin/install -c -m 644 $f /usr/ports/pobj/groff-1.22.3/fake-sparc64/usr/local/share/groff/1.22.3/font/devutf8/$f; else /usr/ports/pobj/groff-1.22.3/bin/install -c -m 644 ./$f /usr/ports/pobj/groff-1.22.3/fake-sparc64/usr/local/share/groff/1.22.3/font/devutf8/$f; fi; done [...] `src/utils/afmtodit' is up to date. `font/devpdf' is up to date. [...] ===> Building package for groff-1.22.3p2 Create /usr/ports/packages/sparc64/all/groff-1.22.3p2.tgz [...] Error: /usr/ports/pobj/groff-1.22.3/fake-sparc64/usr/local/bin/afmtodit does not exist Error: /usr/ports/pobj/groff-1.22.3/fake-sparc64/usr/local/bin/chem does not exist [...] Even though i did not manage to reproduce, from code inspection, it is obvious that this may in principle happen: $(ALLDIRS) are marked .PHONY, but $(OTHERDIRS) are not. So i'd like to commit the following patch. Jerome confirmed that it resolves the issue for him. Where this patch is needed, the package did not build at all, and where it isn't, it doesn't change package content, so no bump is needed. The patch was regenerated with update-patches, so it contains some trivial changes, too. OK to commit? Reporting upstream is not needed because in the -current version, which will be the basis of the next upstream release, upstream completely changed the build system, switching to automake. Yours, Ingo Index: patches/patch-Makefile_in =================================================================== RCS file: /cvs/ports/textproc/groff/patches/patch-Makefile_in,v retrieving revision 1.6 diff -u -p -r1.6 patch-Makefile_in --- patches/patch-Makefile_in 7 Nov 2014 17:10:36 -0000 1.6 +++ patches/patch-Makefile_in 9 Sep 2016 09:31:25 -0000 @@ -1,8 +1,10 @@ $OpenBSD: patch-Makefile_in,v 1.6 2014/11/07 17:10:36 schwarze Exp $ chunk 1: Install preformatted manuals, not source pages (local change). -chunk 2: src/devices/gropdf depends on arch/misc (to be submitted upstream). +chunk 2: src/devices/gropdf depends on arch/misc. +chunk 3: avoid bogus "is up to date" during fake. +Regarding chunks 2 & 3, current upstream code is completely different now. --- Makefile.in.orig Tue Nov 4 09:38:35 2014 -+++ Makefile.in Fri Nov 7 17:30:00 2014 ++++ Makefile.in Thu Sep 8 22:27:19 2016 @@ -253,15 +253,15 @@ manroot=$(mandir) # `man1ext' is the man section for user commands. @@ -22,12 +24,21 @@ chunk 2: src/devices/gropdf depends on a # `dist' target is disallowed in some `configure' combinations. doc_dist_target_ok=@doc_dist_target_ok@ -@@ -895,6 +895,8 @@ $(GNULIBDIRS): FORCE - || eval $$srcdir/configure "$$args" --srcdir=$$srcdir; \ +@@ -896,6 +896,8 @@ $(GNULIBDIRS): FORCE $(MAKE) ACLOCAL=: AUTOCONF=: AUTOHEADER=: AUTOMAKE=: $(do) ;; \ esac -+ -+$(SHPROGDIRS): $(PROGDEPDIRS) ++$(SHPROGDIRS): $(PROGDEPDIRS) ++ $(OTHERDIRS): $(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS) $(SHPROGDIRS) + $(INCDIRS) $(PROGDEPDIRS) $(SHPROGDIRS) $(OTHERDIRS): FORCE +@@ -964,7 +966,7 @@ dist: + # refer lookbib indxbib lkbib: libbib + # $(LIBDIRS) $(PROGDIRS): include + +-.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE ++.PHONY: $(ALLDIRS) $(OTHERDIRS) dot $(TARGETS) FORCE + + # Create a Makefile in $(subdir). This is useful for development since it + # avoids running make recursively.