[jamming] Cygwin MkDir rule is broken in 5.2 Jam
evans_mark at yahoo.com
Thu Jan 12 05:04:17 PST 2006
I am evaluating Jam 5.2 for usage in PC/Cygwin and HP NonStop/OSS environments. (The latter is not supported by Jam 5.2 but I don't anticipate major porting problems.) On Cygwin, I tried setting up a simple multi-architecture build demo where C++ objects are generated in a tree outside of a read-only source tree. The target directory path assigned to LOCATE_TARGET does not exist before the first build. The MkDir rule fires to create the target directory path, but fails when the path is absolute, containing a leading "c:/" or "/cygdrive/c/" . In searching the mail archives it is apparent that other users have run into this problem. Niklaus Giger suggested a patch Tue, 18 Nov 2003 that addresses the problem with "c:/" but does not address the problem with "/cygdrive/c/". (The suggested patch below addresses both cases.) Nevertheless Giger's suggestion was not incorporated in 5.2 which leads me to some (newbie) questions:
Is Perforce Jam still being maintained?
Is it reasonable to expect problems such as the one I encountered on Cygwin to be fixed in a forthcoming release?
What is the proper way to report problems and suggest patches?
Is there a roadmap for future releases?
Should I evaluate variants of Perforce Jam such as Boost Jam?
If so which variant would you experts recommend?
Here is my patch to Jambase that fixes the MkDir/MkDir1 problem for Cygwin.
--- Jambase.orig 2003-04-22 22:45:50.000000000 -0500
+++ Jambase 2006-01-12 04:46:36.781250000 -0600
@@ -1002,6 +1002,16 @@
case *:\\ : s = ;
+ if $(UNIX) && $(OS) = CYGWIN
+ switch $(s)
+ case *: : s = ;
+ case *:/ : s = ;
+ case <dir>/cygdrive : s = ;
+ case <dir>/cygdrive/ : s = ;
if $(s) = $(<)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the jamming