Bug 310900 - calligra/plugins/colorengines fails to compile in my system where openexr is not installed.
Summary: calligra/plugins/colorengines fails to compile in my system where openexr is ...
Status: RESOLVED FIXED
Alias: None
Product: calligracommon
Classification: Applications
Component: general (show other bugs)
Version: Git
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: Halla Rempt
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-30 00:02 UTC by Jekyll Wu
Modified: 2012-11-30 12:51 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jekyll Wu 2012-11-30 00:02:39 UTC
I just try to build calligra from git master.  Here is the relevant building log:


In file included from /mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp:60:0:
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/xyz_f16/XyzF16ColorSpace.h:30:48: error: 'KoXyzF16Traits' was not declared in this scope
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/xyz_f16/XyzF16ColorSpace.h:30:62: error: template argument 1 is invalid
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/xyz_f16/XyzF16ColorSpace.h:30:7: warning: 'class XyzF16ColorSpace' has virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/xyz_f16/XyzF16ColorSpace.h: In member function 'virtual KoColorSpace* XyzF16ColorSpaceFactory::createColorSpace(const KoColorProfile*) const':
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/xyz_f16/XyzF16ColorSpace.h:97:55: error: cannot convert 'XyzF16ColorSpace*' to 'KoColorSpace*' in return
In file included from /mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp:67:0:
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h: At global scope:
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h:27:48: error: 'KoRgbF16Traits' was not declared in this scope
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h:27:62: error: template argument 1 is invalid
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h:27:7: warning: 'class RgbF16ColorSpace' has virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h: In member function 'virtual KoColorSpace* RgbF16ColorSpaceFactory::createColorSpace(const KoColorProfile*) const':
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h:91:55: error: cannot convert 'RgbF16ColorSpace*' to 'KoColorSpace*' in return
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp: In constructor 'LcmsEnginePlugin::LcmsEnginePlugin(QObject*, const QVariantList&)':
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp:171:53: error: 'KoBasicF16HalfHistogramProducer' was not declared in this scope
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp:171:84: error: template argument 1 is invalid
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp:172:116: error: new initializer expression list treated as compound expression [-fpermissive]
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp:172:116: error: cannot convert 'QString' to 'int' in initialization
In file included from /mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/LcmsEnginePlugin.cpp:281:0:
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h: In member function 'virtual KoColorSpace* RgbF16ColorSpaceFactory::createColorSpace(const KoColorProfile*) const':
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/rgb_f16/RgbF16ColorSpace.h:92:5: warning: control reaches end of non-void function [-Wreturn-type]
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/xyz_f16/XyzF16ColorSpace.h: In member function 'virtual KoColorSpace* XyzF16ColorSpaceFactory::createColorSpace(const KoColorProfile*) const':
/mnt/personal/code/kde/calligra/plugins/colorengines/lcms2/colorspaces/xyz_f16/XyzF16ColorSpace.h:98:5: warning: control reaches end of non-void function [-Wreturn-type]
make[2]: *** [plugins/colorengines/lcms2/CMakeFiles/kolcmsengine.dir/LcmsEnginePlugin.cpp.o] Error 1
make[1]: *** [plugins/colorengines/lcms2/CMakeFiles/kolcmsengine.dir/all] Error 2



It fails to compile because of piece of code like this: 

    #ifdef HAVE_OPENEXR
    #include <half.h>

    struct KoRgbF16Traits : public KoRgbTraits<half> {
    };

    #endif

The cmake output contains this:

    -----------------------------------------------------------------------------
    -- The following OPTIONAL packages could NOT be located on your system.
    -- Consider installing them to enable more features from this software.
    -----------------------------------------------------------------------------

   * OpenEXR  <http://www.openexr.com>
     High dynamic-range (HDR) image file format


So the build system and above code pretend openexr is optional, but the actual result is openexr is mandatory.

I don't care whether openexr should be specified as a mandatory or optional dependency.

The point of this report is the build system should fail early and gracefully (tell me I do not have and must install openexr after I type "cmake ../"), instead of late and ugly (give me a compiler error message to dig the cause )


Reproducible: Always
Comment 1 Halla Rempt 2012-11-30 09:37:40 UTC
Thanks for you report. Could you tell me which version of lcms2 you have installed?
Comment 2 Halla Rempt 2012-11-30 09:56:49 UTC
Git commit 4e1b87af7e7090bfcaa78c6270239c0dce72fbeb by Boudewijn Rempt.
Committed on 30/11/2012 at 10:57.
Pushed by rempt into branch 'master'.

Fix build if openexr isn't present

M  +1    -1    plugins/colorengines/lcms2/CMakeLists.txt
M  +18   -7    plugins/colorengines/lcms2/LcmsEnginePlugin.cpp

http://commits.kde.org/calligra/4e1b87af7e7090bfcaa78c6270239c0dce72fbeb
Comment 3 Halla Rempt 2012-11-30 10:35:58 UTC
Git commit 23560e7d76a83ad08543c9c3797f4bc4f35e23a1 by Boudewijn Rempt.
Committed on 30/11/2012 at 10:57.
Pushed by rempt into branch 'calligra/2.6'.

Fix build if openexr isn't present

M  +1    -1    plugins/colorengines/lcms2/CMakeLists.txt
M  +18   -7    plugins/colorengines/lcms2/LcmsEnginePlugin.cpp

http://commits.kde.org/calligra/23560e7d76a83ad08543c9c3797f4bc4f35e23a1
Comment 4 Jekyll Wu 2012-11-30 12:51:03 UTC
Thanks for the fix. 

Just for the record, I have both lcms-2.4 and lcms-1.19 installed in my system.