[PLUG] Case-insensitivity and GNU make

Max Murphy max.murphy at gmail.com
Thu May 11 21:45:18 UTC 2006


Paul,

I saw your post and have another possible solution for your mac  
issues with case insensitivity.

Use Disk Utility to create a blank disk image, then format it with  
"UNIX Filesystem" under the erase tab. You could then use that disk  
image which will mount under /Volumes/[disk image name]/ to house  
your repository on your mac. I had to do this quite a few times  
before just having a dedicated partition with this filesystem.

Hope this might help.

Max Murphy


On May 11, 2006, at 2:33 PM, Paul Heinlein wrote:

> My personal web site contains a few technical articles, the sources  
> for which are marked up in DocBook.
>
> The top level directory looks like this:
>
>   CVS/               index.html              sendmail-auth/
>   Makefile           index.xml               sendmail-genericstable/
>   apache-fp/         ldap-aliases/           soho-bind/
>   apache-google/     open-letter-microsoft/  sort-addr/
>   dhcp-failover/     openssl/                specs/
>   dig/               pine-macosx/            trac-centos/
>   exim4-ssl-client/  pine-ssl/               utf8/
>   gpg-quickstart/    rcs/
>
> Revision control is provided by CVS -- hence the CVS directory --  
> but I have an article stored in a directory called "rcs"; it  
> contains a Makefile and an XML source doc (and current, an HTML  
> target doc):
>
>   CVS/   Makefile   index.html   index.xml
>
> I recently moved my main workstation to an Intel-based Mac mini, so  
> I rsync-ed my projects tree from my Linux box to the Mac. I've had  
> occasion to build files in the subdirectories of the source tree  
> listed above, but until today I hadn't had to run make in the top- 
> level directory. Oops:
>
>   [heinlein]$ make
>   co  RCS/index.html index.html
>   co: RCS/index.html:1: missing 'head' keyword
>   co aborted
>   make: *** [index.html] Error 1
>
> To make a long story short, GNU make has an implicit rule that  
> looks for %,v or RCS/% or RCS/%,v. If it finds one of those, it  
> will try to checkout the file before executing the target commands.  
> You can get a list of all the implicit rules by asking nicely:
>
>   make -p -f/dev/null 2>&1 | less
>
> The Mac's filesystem is case-insensitive, so it interpreted the  
> presence of the "rcs" directory just the same as "RCS" -- so it  
> tried to checkout rcs/index.html. Since that's not a real RCS file,  
> it failed.
>
> Ugh. Silly Macintosh.
>
> There are a couple solutions:
>
> 1. Turn off all explicit rules from the command line:
>
>    make -r
>
> 2. In the Makefile redefine the offending rule(s) as no-ops. This
>    is the tack I chose:
>
>    # override gnu make's auto-checkout feature. bad mojo here...
>    %:: %,v
>    %:: RCS/%,v
>    %:: RCS/%
>
>    # rest of makefile ...
>
> -- 
> Paul Heinlein <> heinlein at madboa.com <> www.madboa.com
>
>
>
> _______________________________________________
> PLUG mailing list
> PLUG at lists.pdxlinux.org
> http://lists.pdxlinux.org/mailman/listinfo/plug




More information about the PLUG mailing list