Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Need gegl to build gimp, and can't build gegl
Esteemed Colleagues:

Readers of this forum know that I recently built gimp 2.10
from source, and it was a nightmare, but I did it.

Now -- apparently in search of suffering, for there can be
no other reason for trying to do this -- I am trying to build
gimp 2.10 from source again, for another operating system
that shares the same hardware (my laptop is a multiboot
machine, I have several operating systems installed on it).

Because gimp 2.10 has many dependencies that are newer
than the versions available thru my package manager -- or,
in some cases, not available at all thru my package manager
-- I have had to build those dependencies from source. Only
one unbuilt dependency now remains on this operating system,

I cannot build gegl on this operating system.  That, of course,
is surely not true, what I mean to say is that I have not figured
out how to build gegl on this operating system.  I turn to you,
esteemed colleagues, for help once again.  This is the error
message that I get, time and time again, no matter what -f
arguments I have given to the compiler (and I have tried

    operations/external/ In function import_exr(_GeglBuffer*, char const*, int)':
    /usr/local/src/gegl-0.4.26/build/../operations/external/exr-load.cpp:506: undefined reference to
Imf_2_1::Chromaticities::Chromaticities(Imath_2_2::Vec2<float> const&, Imath_2_2::Vec2<float> const&, Imath_2_2::Vec2<float> const&, Imath_2_2::Vec2<float> const&)'

This is at operation [481/750] of the ninja build.

Most likely this is a missing constructor that should have been
created from a template, but which the c++ compiler is failing
to create.  But templates have been around for a long time
(31 years, in fact -- I remember when Bjarne Stroustrup
announced them in the Journal of Object-Oriented Programming;
but I digress) and I am using gcc 9.2.0.  Surely by gcc 9.2.0
the g++ compiler has managed to get templates right.  So
what is going on?  I suppose I could build clang from scratch
and then try to build gegl with clang++, but I am certain that
this is not a compiler problem.  And yet, this same version
of gegl has been successfully built before.  So why can I not
build it on this operating system?  What do I have to do?
As always, I thank you in advance for any and all replies.

    jay at m5 dot chicago dot il dot us
Does it compile if you disable OpenEXR ? (add  -Dopenexr=disabled to the meson setup)
There are two ways to rebuild from source: use a release tarball, or pull from Git. When you pull from git, unless you check out specific release tags, you get whatever was last committed by developers and sometimes they are missing things.... tarballs are usually safer. If you build from Git, then hang out on the IRC channels or the developer mailing lists, some one will likely explain the oopsie.

The fact that the whole code is being refactored into C++ doesn't help with the stability of random Git pulls.
I cannot blame git; I used a release tarball, for both gegl and gimp itself.

I successfully compiled gegl after passing "-Dopenexr=disabled" to meson.  Thank you
for the advice; meson is new to me, and, moreover, that particular option is, as far
as I can determine, not documented anywhere in the gegl release tarball.

When I then tried to compile gimp, I got the exact same compiler error when
attempting to compile its openexr wrapper, so I had to reconfigure gimp with
"--disable-openexr" (that one was, in fact, documented).  Then I was able to
build gimp 2.10.  The newly-compiled program then crashed and coredumped
when it attempted to load the "pagecurl" plugin, a phenomenon with which I
was familiar, and to which I brought this forum's attention a couple of weeks
ago, in a different thread.  Following the advice I received there, I removed
execute permissions from the pagecurl plugin.  Now I have a working gimp 2.10
which cannot curl its pages, but I am saved from the unhappiness which that
would otherwise bring me, by not knowing what it means to curl pages.  If I ever
learn what that means, and decide that I want to curl some pages, I can always
do so with Gimp 2.8, which remains installed on my system.  Once again I thank
my esteemed colleagues for your swift and useful answers.  -- jfs

Forum Jump: