During my testing of the ksh93 Userland putback, I've come across a probable gmake bug that breaks the openssl compile, but only when my new prep.mk file is used.
I've spent quite a bit of time tracing this, and have reached a couple of conclusions: The bug is triggered by extra-long target-specific variable assignments containing at least one semicolon - in particular this occurs in the openssl-1.0.0 makefile, but only on SPARC (it is conditionally compiled) where paths are used in the target-specific variable assignment for COMPONENT_POST_INSTALL. In the openssl case, having a long path to the workspace you are working in will trigger this bug *in the normal clean userland build*, but it is exposed more by the changes I have made to the prep.mk file. The bug is this: on a target-specific variable, if the assignment of the variable a semicolon(s) and is over 150 characters in length, then the assignment is truncated at the first semicolon or an error is thrown (this occurs with line continuation slashes as well). Test makefile: (also attached) (note that a; eeee etc is all on the same line) a : SOME_VAR = "a; eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" # 'e' x 130+ characters a : @echo $(SOME_VAR) bash $ gmake -f test.makefile a test.makefile:1: *** Malformed target-specific variable definition. Stop. bash-4.1$ gmake --version GNU Make 3.82 Remove one 'e' or a semicolon from the above and it suddenly works. A similar bug was meant to have been fixed in an earlier version of gmake, but the test suite for gmake claims that it passes the bug test fix - I'm currently investigating this, but I believe that the test only checks using plain characters, and does not introduce any semicolons. It is my best guess that the introduction of the semicolon trips the gmake recipe parsing code, and it hits the 150 command line character limit (originally imposed by DOS(!)), even though this is a target-specfic variable (not a recipe), and on UNIX, not DOS. I have yet to fully trace this in the code. I have filed a bug for this: http://monaco.us.oracle.com/detail.jsf?cr=7159246
test.makefile
Description: Binary data
_______________________________________________ userland-discuss mailing list userland-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/userland-discuss