Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 788349 - media-libs/freeimage-3.18.0-r2[openexr] fails to build with openexr-3.0.1 (error: ‘Int64’ in namespace ‘Imath’ does not name a type)
Summary: media-libs/freeimage-3.18.0-r2[openexr] fails to build with openexr-3.0.1 (er...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Games
URL:
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks: 820674
  Show dependency tree
 
Reported: 2021-05-05 14:39 UTC by Daniel M. Weeks
Modified: 2022-02-16 16:21 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log and emerge --info.txt (build.log-emerge-info.txt,18.48 KB, text/plain)
2021-05-06 06:16 UTC, Ionen Wolkens
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel M. Weeks 2021-05-05 14:39:47 UTC
After updating media-libs/openexr and dev-libs/imath to 3.0.1, freeimage rebuild fails:

Source/FreeImage/PluginEXR.cpp:69:17: error: ‘Int64’ in namespace ‘Imath’ does not name a type
   69 |  virtual Imath::Int64 tellg() {
      |                 ^~~~~
Source/FreeImage/PluginEXR.cpp:73:28: error: ‘Imath::Int64’ has not been declared
   73 |  virtual void seekg(Imath::Int64 pos) {
      |                            ^~~~~
Source/FreeImage/PluginEXR.cpp:103:17: error: ‘Int64’ in namespace ‘Imath’ does not name a type
  103 |  virtual Imath::Int64 tellp() {
      |                 ^~~~~
Source/FreeImage/PluginEXR.cpp:107:28: error: ‘Imath::Int64’ has not been declared
  107 |  virtual void seekp(Imath::Int64 pos) {
      |                            ^~~~~
Source/FreeImage/PluginEXR.cpp: In function ‘FIBITMAP* Load(FreeImageIO*, fi_handle, int, int, void*)’:
Source/FreeImage/PluginEXR.cpp:190:13: error: cannot declare variable ‘istream’ to be of abstract type ‘C_IStream’
  190 |   C_IStream istream(io, handle);
      |             ^~~~~~~
Source/FreeImage/PluginEXR.cpp:55:7: note:   because the following virtual functions are pure within ‘C_IStream’:
   55 | class C_IStream : public Imf::IStream {
      |       ^~~~~~~~~
In file included from Source/FreeImage/PluginEXR.cpp:31:
/usr/include/OpenEXR/ImfIO.h:82:22: note:       ‘virtual uint64_t Imf_3_0::IStream::tellg()’
   82 |     virtual uint64_t tellg () = 0;
      |                      ^~~~~
/usr/include/OpenEXR/ImfIO.h:90:18: note:       ‘virtual void Imf_3_0::IStream::seekg(uint64_t)’
   90 |     virtual void seekg (uint64_t pos) = 0;
      |                  ^~~~~
Source/FreeImage/PluginEXR.cpp: In function ‘BOOL Save(FreeImageIO*, FIBITMAP*, fi_handle, int, int, void*)’:
Source/FreeImage/PluginEXR.cpp:576:13: error: cannot declare variable ‘ostream’ to be of abstract type ‘C_OStream’
  576 |   C_OStream ostream(io, handle);
      |             ^~~~~~~
Source/FreeImage/PluginEXR.cpp:87:7: note:   because the following virtual functions are pure within ‘C_OStream’:
   87 | class C_OStream : public Imf::OStream {
      |       ^~~~~~~~~
In file included from Source/FreeImage/PluginEXR.cpp:31:
/usr/include/OpenEXR/ImfIO.h:154:22: note:      ‘virtual uint64_t Imf_3_0::OStream::tellp()’
  154 |     virtual uint64_t tellp () = 0;
      |                      ^~~~~
/usr/include/OpenEXR/ImfIO.h:162:18: note:      ‘virtual void Imf_3_0::OStream::seekp(uint64_t)’
  162 |     virtual void seekp (uint64_t pos) = 0;
      |                  ^~~~~
make: *** [Makefile.gnu:83: Source/FreeImage/PluginEXR.o] Error 1

Reproducible: Always
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-05-05 14:41:24 UTC
Full build.log and emerge —-info please, as always
Comment 2 Ionen Wolkens gentoo-dev 2021-05-06 06:16:08 UTC
Created attachment 706293 [details]
build.log and emerge --info.txt

I'll provide, this is an incompatibility with new openexr/imath-3.0.3 and it'd be good to keep track of what it breaks.

(it's currently masked so you'll be asked to downgrade which should fix this for you)
Comment 3 Bernd 2021-05-06 06:41:44 UTC
With imath upstream has dropped their own Int64 types and now relates on standard int types (int64_t and friends). See https://github.com/AcademySoftwareFoundation/Imath/pull/106. The ImathInt64.h header is deprecated and shouldn't be used anymore.

It should be a simple matter of changing Imath::Int64 to int64_t and Imath::SInt64 to uint64_t

Also check the Porting guide at https://github.com/AcademySoftwareFoundation/Imath/blob/master/docs/PortingGuide2-3.md
Comment 4 Bernd 2021-10-29 13:37:03 UTC
From upstream data, I'd recommend to stick to :0 for now. They have an unanswered feature request from June, to update their internal openexr-2.2.1 to a more up-to-date 2.5 or 3.0 version. And their Whatsnew.txt[1] file so far doesn't state to update to a newer release of openexr for the upcoming 3.19.0 release.

I can come up with a PR to restrict to :0, if so desired.

[1] https://sourceforge.net/p/freeimage/svn/HEAD/tree/FreeImage/trunk/Whatsnew.txt
Comment 5 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-10-31 05:56:33 UTC
(In reply to Bernd from comment #4)
> From upstream data, I'd recommend to stick to :0 for now. They have an
> unanswered feature request from June, to update their internal openexr-2.2.1
> to a more up-to-date 2.5 or 3.0 version. And their Whatsnew.txt[1] file so
> far doesn't state to update to a newer release of openexr for the upcoming
> 3.19.0 release.
> 
> I can come up with a PR to restrict to :0, if so desired.
> 
> [1]
> https://sourceforge.net/p/freeimage/svn/HEAD/tree/FreeImage/trunk/Whatsnew.
> txt

Yes please!
Comment 6 Larry the Git Cow gentoo-dev 2021-11-02 10:04:23 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=39428fadcfe3ebc4b90bc471af27aba690fe2cc7

commit 39428fadcfe3ebc4b90bc471af27aba690fe2cc7
Author:     Bernd Waibel <waebbl-gentoo@posteo.net>
AuthorDate: 2021-11-02 05:13:48 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-11-02 10:04:12 +0000

    media-libs/freeimage: restrict dependency on openexr
    
    Package does not yet support OpenEXR-3, so restrict to :0
    
    Closes: https://bugs.gentoo.org/788349
    Closes: https://bugs.gentoo.org/820671
    Package-Manager: Portage-3.0.28, Repoman-3.0.3
    Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
    Closes: https://github.com/gentoo/gentoo/pull/22793
    Signed-off-by: Sam James <sam@gentoo.org>

 media-libs/freeimage/freeimage-3.18.0-r3.ebuild | 121 ++++++++++++++++++++++++
 1 file changed, 121 insertions(+)