[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/40100: devel/doxygen/Makefile mishandles Darwin case sensitivity
The following reply was made to PR pkg/40100; it has been noted by GNATS.
From: Tom Yu <tlyu%MIT.EDU@localhost>
To: Thomas Klausner <wiz%NetBSD.org@localhost>
Subject: Re: pkg/40100: devel/doxygen/Makefile mishandles Darwin case
Date: Thu, 04 Dec 2008 11:25:00 -0500
Thomas Klausner <wiz%NetBSD.org@localhost> writes:
> On Thu, Dec 04, 2008 at 08:36:47AM -0500, Tom Yu wrote:
>> I was building pkgsrc in a UFS, therefore case-sensitive, filesystem
>> on Mac OS and experiencing this problem. The build generates some
>> documentation files, some of which would have uppercase letters on
>> case-sensitive filesystems. Whether Doxygen defaults to generating
>> mixed-case files depends on the operating system, not the underlying
>> case-sensitivity of the destination filesystem.
> I tried to find the code that does this decision, but I couldn't; I
> found some code that checks for the case sensitivity of the file
> system though.
> I also found the CASE_SENSE_NAMES configuration setting, which can be
> set to yes and no.
>> The previous check was looking for lowercase "descr" in the directory,
>> which would be false when building in a UFS filesystem, and the PLIST
>> was therefore expecting files with uppercase letters. However,
>> Doxygen was generating lowercase-only filenames because it was built
>> on Mac OS and defaults to doing that regardless of the
>> case-sensitivity of the target filesystem. This caused the packaging
>> to fail due to a filename case mismatch with the PLIST.
> I understand the failure case that you're seeing, I don't understand
> how it comes to pass though yet.
> Have you looked at the doxygen source, or why are you sure that it
> tests for the platform and not the file system?
> Perhaps it checks the wrong file system.
In src/portable.cpp, there are preprocessor conditionals including
__MACOSX__ on the implementation of the function
portable_fileSystemIsCaseSensitive(). The function returns FALSE if
__MACOSX__ (among others) is defined. src/config.cpp (generated from
src/config.l) then sets the default setting of CASE_SENSE_NAMES
depending on the result of portable_fileSystemIsCaseSensitive().
There appears to be no explicit runtime test in the source code for
the case sensitivity of the destination filesystem.
Main Index |
Thread Index |