openexr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openexr-devel] submitting patches?


From: J.C. Roberts
Subject: Re: [Openexr-devel] submitting patches?
Date: Mon, 9 Mar 2009 20:18:19 -0700

On Mon, 09 Mar 2009 14:45:08 -0700 Piotr Stanczyk <address@hidden>
wrote:

> J.C. Roberts wrote:
> > Hello,
> >
> > This is my first post to this mailing list, and I tried to RTFM for
> > the answer, but was unsuccessful. On neither savannah.nongnu.org nor
> > openexr.org  could I find out the preferred way to submit patches?
> >
> > If you'd be so kind to drop-kick me towards the docs/faq on this
> > topic, it would be much appreciated.
> >
> > Thanks.
> >
> >   
> Hi.
> 
> You are welcome to send them to the administrators of the project;
> feel free to drop me a line.
> 
> Piotr
> 

Thank you. One of the OpenBSD developers suggested *explaining* the
reason for changes made by the patches. There is a very easy
work-around for the problem, so changing the OpenEXR code is entirely a
matter of correctness.

There are two main syntaxes for using the #include directive:

        #include <SYSTEM>
and
        #include "local"

The '#include <SYSTEM>' syntax tells the preprocessor to search
along the defined list of system header paths. The default list of
system header paths is prepended by using '-I /path/to/where/ever'
option.

The '#include "local"' syntax tells the preprocessor to search in the
directory of the file currently being processed.

http://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html

Though it does vary from OS to OS, let's assume there are three main
places on your <SYSTEM> where header files are kept:

        /usr/include/
        /usr/local/include/
        /usr/X11R6/include/

The above typically constitute your default list of header search paths
for finding '#include <SYSTEM>` header files.

The OpenEXR headers are typically installed in:

        /usr/local/include/OpenEXR/

And again typically, other programs correctly attempt to include the
OpenEXR header files would use directives like:

        #include <OpenEXR/ImfHeader.h>

Unfortunately, the above "correct" syntax fails due to the way the
OpenEXR headers are written. I've found 45 OpenEXR header files which
mistakenly use '#include <SYSTEM>' syntax where they should be using
the '#include "local"' syntax to include the other OpenEXR headers
stored within the same directory.

The reason why no one has noticed this in building OpenEXR itself is
due to the use of "-I." in the build. As for the easy work-around, it
seems most people will just add a "-I/where/ever/OpenEXR/headers/are"
to their own programs to get around the mistakes in the OpenEXR headers.

Using the "-I/where/ever" work-around can lead to conflicts (since it
prepends your list of search paths), and the reason why no conflicts
have cropped up is due to the fairly unique names of the OpenEXR
headers. Though I seriously doubt it's really been much trouble for
anyone, it's still best to fix the source of the problem.

I've put the OpenEXR header patches on my server here:

http://www.designtools.org/OpenBSD/OpenEXR-patches.tar.gz

Yep, I'll be the first to admit the changes are trivial, pedantic and
fairly easy to work-around, but they do improve code quality.

Kind Regards,
jcr

-- 
J.C. Roberts




reply via email to

[Prev in Thread] Current Thread [Next in Thread]