8413 Missing build dependencies when generating message catalogs

Review Request #593 — Created June 20, 2017 and submitted

jbk
illumos-gate
8413
general

Fixes a number of build issues that are easier to hit with earlier makefile fixes. Almost all of them are for generated files from things such as yacc or rpcgen that are then included in .c files. When producing message catalogs the make target will eventually run $(CC) -E file.c which can fail if the generated file hasn't been built yet. The only one that's a bit different is the usr/src/cmd/sgs/Makefile as it builds some 'native' binaries for subsequent use (though also for message catalogs), but can try to use those native tools in parallel with building them.

Built illumos-joyent (after getting it to fail on these dependencies). illumos-gate build is successful.

  • 1
  • 0
  • 2
  • 1
  • 4
Description From Last Updated
I would rather we didn't introduce more ".WAIT". Try: $(MSGDIR): native-add andy_js andy_js
andy_js
  1. Just a few nits. Other than that, LGTM.

  2. usr/src/cmd/iconv/Makefile (Diff revision 1)
     
     
     

    You could put these dependencies on a single line:

    $(OBJS) $(PIFILES): parser.tab.h

    1. For some reason my replies got added as new issues, so I'll paste them back (just so they're easier to follow hopefully):

      It seems like most of the existing make files tend to list things out this way (with a few exceptions, like the parser.tab.[ch] dependencies just below it -- though those should probably be a + dependency)

    2. Doing it on a single line allows you to specify a common dependency without having to spell it out each time. It's mostly cosmetic, so I'll drop the issue.

  3. usr/src/cmd/sgs/Makefile (Diff revision 1)
     
     

    I would rather we didn't introduce more ".WAIT". Try:

    $(MSGDIR): native-add

    1. I don't think that will work because native-add doesn't produce any artifacts (as far as this make file is concerned), so it could still try to build native-add in parallel with $(MSGSUBDIRS) which overlaps quite a bit with the content of $(SUBDIRS) which is defined as parallel.

    2. If you specify a dependency make ensures that it will run to completion before processing dependants. This happens regardless of whether the target is PHONEY (doesn't produce anything) or not.

  4. 
      
jbk
  1. 
      
  2. usr/src/cmd/iconv/Makefile (Diff revision 1)
     
     
     

    Yeah, though it seems like most of the existing make files tend to list things out this way (with a few exceptions, like the parser.tab.[ch] dependencies just below it -- though those should probably be a + dependency)

  3. usr/src/cmd/sgs/Makefile (Diff revision 1)
     
     

    I don't think that will work because native-add doesn't produce any artifacts (as far as this make file is concerned), so it could still try to build native-add in parallel with $(MSGSUBDIRS) which overlaps quite a bit with the content of $(SUBDIRS) which is defined as parallel.

  4. 
      
jbk
jbk
yuripv
  1. Ship It!
  2. 
      
andy_js
  1. Ship It!
  2. 
      
jbk
Review request changed

Status: Closed (submitted)

Loading...