Error compiling GIMP GIT

Hmm, “echoing” all that at once makes it very difficult to read. Here’s what the information looks like when sorted out, one “echo” at a time:

$PREFIX: /home/gabriele/code/gimpdefault/install 

$PATH: /home/gabriele/code/gimpdefault/install/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/opt/blender:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/lib64/qt5/bin:/usr/share/texmf/bin 

$LD_LIBRARY_PATH: /home/gabriele/code/gimpdefault/install/lib: 

$XDG_DATA_DIRS: /home/gabriele/code/gimpdefault/install/share:/usr/share:/usr/share:/usr/local/share:/home/gabriele/.kde/share/ 

$ACLOCAL_FLAGS: /home/gabriele/code/gimpdefault/install/share/aclocal 

$PKG_CONFIG_PATH: /home/gabriele/code/gimpdefault/install/share/pkgconfig:/home/gabriele/code/gimpdefault/install/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/share/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig 

$GIO_EXTRA_MODULES:  /home/gabriele/code/gimpdefault/install/lib/gio/modules

$SRC_DIR: /home/gabriele/code/gimpdefault/build

Comparing your ouput to what I see after establishing the prefix and build folders for GIMP, one thing that stands out is the result of echo $GIO_EXTRA_MODULES. You get home/gabriele/code/gimpdefault/install/lib/gio/modules. I get this:

echo $GIO_EXTRA_MODULES
/usr/lib/gio/modules

This is almost certainly a problem, even if it’s not the problem. Your system “gio extra modules” are probably located at “/usr/lib/gio/modules” or “/usr/lib64/gio/modules” or “/usr/lib/x86_64-linux-gnu/gio/modules”, or something similar, depending on what version of Linux you are using.

Hi Elle,
into bin,include and share I have

Summary

bin/:
total 1572
-rwxr-xr-x 1 gabriele gabriele 41696 Jan 24 07:06 gapplication
-rwxr-xr-x 1 gabriele gabriele 209800 Jan 24 17:56 gcut
-rwxr-xr-x 1 gabriele gabriele 140120 Jan 24 07:06 gdbus
-rwxr-xr-x 1 gabriele gabriele 2085 Jan 24 07:06 gdbus-codegen
-rwxr-xr-x 1 gabriele gabriele 28560 Jan 24 17:51 gdk-pixbuf-csource
-rwxr-xr-x 1 gabriele gabriele 23736 Jan 24 17:51 gdk-pixbuf-pixdata
-rwxr-xr-x 1 gabriele gabriele 37328 Jan 24 17:51 gdk-pixbuf-query-loaders
-rwxr-xr-x 1 gabriele gabriele 43128 Jan 24 17:52 gdk-pixbuf-thumbnailer
-rwxr-xr-x 1 gabriele gabriele 76928 Jan 24 17:56 gegl
-rwxr-xr-x 1 gabriele gabriele 29016 Jan 24 17:56 gegl-imgcmp
-rwxr-xr-x 1 gabriele gabriele 271736 Jan 24 07:06 gio
-rwxr-xr-x 1 gabriele gabriele 25856 Jan 24 07:06 gio-querymodules
-rwxr-xr-x 1 gabriele gabriele 111040 Jan 24 07:06 glib-compile-resources
-rwxr-xr-x 1 gabriele gabriele 152184 Jan 24 07:06 glib-compile-schemas
-rwxr-xr-x 1 gabriele gabriele 40929 Jan 24 07:06 glib-genmarshal
-rwxr-xr-x 1 gabriele gabriele 5410 Jan 24 07:06 glib-gettextize
-rwxr-xr-x 1 gabriele gabriele 27653 Jan 24 07:06 glib-mkenums
-rwxr-xr-x 1 gabriele gabriele 26320 Jan 24 07:06 gobject-query
-rwxr-xr-x 1 gabriele gabriele 53800 Jan 24 07:06 gresource
-rwxr-xr-x 1 gabriele gabriele 61144 Jan 24 07:06 gsettings
-rwxr-xr-x 1 gabriele gabriele 72760 Jan 24 07:06 gtester
-rwxr-xr-x 1 gabriele gabriele 18830 Jan 24 07:06 gtester-report
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 07:13 installed-tests
-rwxr-xr-x 1 gabriele gabriele 27368 Jan 24 07:13 json-glib-format
-rwxr-xr-x 1 gabriele gabriele 24664 Jan 24 07:13 json-glib-validate

include/:
total 32
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 17:53 babl-0.1
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 08:21 gdk-pixbuf-2.0
drwxr-xr-x 6 gabriele gabriele 4096 Jan 24 17:56 gegl-0.3
drwxr-xr-x 2 gabriele gabriele 4096 Jan 24 18:04 gexiv2
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 07:04 gio-unix-2.0
drwxr-xr-x 5 gabriele gabriele 4096 Jan 24 07:06 glib-2.0
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 07:13 json-glib-1.0
drwxr-xr-x 2 gabriele gabriele 4096 Jan 24 17:58 libmypaint

share/:
total 60
drwxr-xr-x 2 gabriele gabriele 4096 Jan 24 07:06 aclocal
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 07:04 bash-completion
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 18:02 dbus-1
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 07:04 gdb
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 07:04 gettext
drwxr-xr-x 2 gabriele gabriele 4096 Jan 24 18:04 gir-1.0
drwxr-xr-x 6 gabriele gabriele 4096 Jan 24 07:04 glib-2.0
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 17:56 gtk-doc
drwxr-xr-x 4 gabriele gabriele 4096 Jan 24 18:02 installed-tests
drwxr-xr-x 114 gabriele gabriele 4096 Jan 24 18:02 locale
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 08:21 man
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 17:58 mypaint-data
drwxr-xr-x 2 gabriele gabriele 4096 Jan 24 17:58 pkgconfig
drwxr-xr-x 2 gabriele gabriele 4096 Jan 24 17:52 thumbnailers
drwxr-xr-x 3 gabriele gabriele 4096 Jan 24 17:56 vala

Hi Elle, I reread this
What you mean here when you talk about GIO_EXTRA_MODULES=/usr/lib/gio/modules… you mean if you install GIMP and all its dependencies into the $PREFIX you have to install GIO , which is part of GLib, not in the $PREFIX but under /usr or lib or lib64 all based on the distribution?

If it is ,I under /usr/lib64 have GIO which is installed by my distribution… and If I install GIO from glib for git gimp I’ll rewrite GIO libs of my distro…
I’m confused

Hi Gabriele,

Hmm, I can see the room for confusion. But no, don’t install GIO for glib for git gimp in /usr/lib64. Leave system libraries alone, let your Linux repository take care of all system libraries.

Looking at your list of installed files, you are installing a whole lot more stuff in the prefix than I’ve ever had to install. So maybe what you really need to do is somehow “add” the prefix “gio” stuff to the system “gio” stuff, similarly to how we add the prefix path to the system path, and such. But this is a guess, a wild and probably completely off-base guess, I’ve never had to do this and I don’t even know if what I just said makes any sense.

At this point I don’t really know what needs to be done given the very large number of software packages that you’ve had to install to get GIMP 2.9 up and running.

Here’s what I would suggest: Replace the “GIO” line for establishing the prefix with your system library location, and then do “make uninstall && make clean && git clean -xdf” and start over at “./autogen.sh” at least for babl/GEGL/mypaint/GIMP, and possibly even for everything that you installed in the prefix, basically just starting over. If this doesn’t work, then someone more knowledgeable than I am regarding system libraries and especially glib-related libraries will have to help figure out why installing GIMP from git in a prefix isn’t working.

Hi,
after last failures I upgrade to bleeding edge of my distro where there’s glib2-2.54.3 :slightly_smiling_face:
but when I compile libmypaint I have (I had to install json-c from git because it removed :roll_eyes:) :

make[2]: Entering directory ‘/root/git/libmypaint’
depbase=echo mypaint-brush.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/usr/local/include/json-c -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_POSIX_C_SOURCE=200809L -g -O2 -MT mypaint-brush.lo -MD -MP -MF $depbase.Tpo -c -o mypaint-brush.lo mypaint-brush.c &&
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/usr/local/include/json-c -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_POSIX_C_SOURCE=200809L -g -O2 -MT mypaint-brush.lo -MD -MP -MF .deps/mypaint-brush.Tpo -c mypaint-brush.c -fPIC -DPIC -o .libs/mypaint-brush.o
mypaint-brush.c: In function ‘mypaint_brush_new’:
mypaint-brush.c:133:26: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
self->print_inputs = FALSE;
^~~~~
FILE
mypaint-brush.c:133:26: note: each undeclared identifier is reported only once for each function it appears in
mypaint-brush.c:142:29: error: ‘TRUE’ undeclared (first use in this function)
self->reset_requested = TRUE;
^~~~
mypaint-brush.c: In function ‘mypaint_brush_reset’:
mypaint-brush.c:225:29: error: ‘TRUE’ undeclared (first use in this function)
self->reset_requested = TRUE;
^~~~
mypaint-brush.c: In function ‘mypaint_brush_stroke_to’:
mypaint-brush.c:961:31: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
self->reset_requested = FALSE;
^~~~~
FILE
mypaint-brush.c:980:14: error: ‘TRUE’ undeclared (first use in this function)
return TRUE;
^~~~
mypaint-brush.c: In function ‘obj_get’:
mypaint-brush.c:1100:44: error: ‘TRUE’ undeclared (first use in this function)
&& (obj_out ? (*obj_out != NULL) : TRUE);
^~~~
mypaint-brush.c: In function ‘update_brush_setting_from_json_object’:
mypaint-brush.c:1120:16: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
return FALSE;
^~~~~
FILE
mypaint-brush.c:1167:12: error: ‘TRUE’ undeclared (first use in this function)

return TRUE;
^~~~
mypaint-brush.c: In function ‘update_brush_from_json_object’:
mypaint-brush.c:1177:16: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
return FALSE;
^~~~~
FILE
mypaint-brush.c:1193:28: error: ‘TRUE’ undeclared (first use in this function)
gboolean updated_all = TRUE;
^~~~
mypaint-brush.c: In function ‘mypaint_brush_from_string’:
mypaint-brush.c:1227:16: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
return FALSE;
^~~~~
FILE
make[2]: *** [Makefile:730: mypaint-brush.lo] Error 1
make[2]: Leaving directory ‘/root/git/libmypaint’
make[1]: *** [Makefile:840: all-recursive] Error 1
make[1]: Leaving directory ‘/root/git/libmypaint’
make: *** [Makefile:598: all] Error 2

Any hints??

Cheers

Include stdbool.h which gets you true / false in C vs TRUE / FALSE which might be defined in another header possibly missing.

Hi,
my apology but how to do it?? I’m noob…:neutral_face:

Unsure of the best way to go about it, could you post the whole thing including the configure phase?

Do You mean all output of configure and make? It’s long…

Indeed it is. Use the code backticks (the </> button) to keep it in a box or use

Btw did you install glib2-devel?

Hi, the configure and make output are:

**configure**

checking for a BSD-compatible install... /usr/bin/ginstall -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether gcc understands -c and -o together... yes
    checking for style of include used by make... GNU
    checking dependency style of gcc... gcc3
    checking for gcc option to accept ISO C99... none needed
    checking for ar... ar
    checking the archiver (ar) interface... ar
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by gcc... /usr/x86_64-slackware-linux/bin/ld
    checking if the linker (/usr/x86_64-slackware-linux/bin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/x86_64-slackware-linux/bin/ld option to reload object files... -r
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... dlltool
    checking how to associate runtime and link libraries... printf %s\n
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for sysroot... no
    checking for a working dd... /usr/bin/dd
    checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
    checking for mt... mt
    checking if mt is a manifest tool... no
    checking how to run the C preprocessor... gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC -DPIC
    checking if gcc PIC flag -fPIC -DPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking if gcc supports -c -o file.o... (cached) yes
    checking whether the gcc linker (/usr/x86_64-slackware-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... no
    checking whether to enable maintainer-specific portions of Makefiles... yes
    checking for pkg-config... /usr/bin/pkg-config
    checking pkg-config is at least version 0.16... yes
    checking for some Win32 platform... no
    checking for native Win32... no
    checking if compiling for Mac OS X... no
    checking whether to turn on debugging... no
    checking whether to turn on profiling... no
    checking for json-c... yes
    checking for library containing floorf... -lm
    checking for library containing powf... none required
    checking for library containing expf... none required
    checking whether C compiler accepts -fsanitize=undefined... yes
    checking whether the linker accepts -fsanitize=undefined... yes
    checking whether NLS is requested... yes
    checking for intltool-update... /usr/bin/intltool-update
    checking for intltool-merge... /usr/bin/intltool-merge
    checking for intltool-extract... /usr/bin/intltool-extract
    checking for xgettext... /usr/bin/xgettext
    checking for msgmerge... /usr/bin/msgmerge
    checking for msgfmt... /usr/bin/msgfmt
    checking for gmsgfmt... /usr/bin/msgfmt
    checking for perl... /usr/bin/perl
    checking for perl >= 5.8.1... 5.26.1
    checking for XML::Parser... ok
    checking locale.h usability... yes
    checking locale.h presence... yes
    checking for locale.h... yes
    checking for LC_MESSAGES... yes
    checking for CFPreferencesCopyAppValue... no
    checking for CFLocaleCopyCurrent... no
    checking libintl.h usability... yes
    checking libintl.h presence... yes
    checking for libintl.h... yes
    checking for ngettext in libc... yes
    checking for dgettext in libc... yes
    checking for bind_textdomain_codeset... yes
    checking for msgfmt... (cached) /usr/bin/msgfmt
    checking for dcgettext... yes
    checking if msgfmt accepts -c... yes
    checking for gmsgfmt... (cached) /usr/bin/msgfmt
    checking for xgettext... (cached) /usr/bin/xgettext
    checking for library containing dgettext... none required
    checking for gobject-introspection... yes
    checking for gobject-2.0... yes
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating doc/Makefile
    config.status: creating gegl/libmypaint-gegl.pc
    config.status: creating gegl/Makefile
    config.status: creating libmypaint.pc
    config.status: creating m4macros/Makefile
    config.status: creating Makefile
    config.status: creating po/Makefile.in
    config.status: creating tests/Makefile
    config.status: creating tests/gegl/Makefile
    config.status: creating config.h
    config.status: config.h is unchanged
    config.status: executing depfiles commands
    config.status: executing libtool commands
    config.status: executing default-1 commands
    config.status: executing po/stamp-it commands

  Configured libmypaint 1.3.0

**make**

make  all-recursive
make[1]: Entering directory '/root/git/libmypaint'
Making all in .
make[2]: Entering directory '/root/git/libmypaint'
depbase=`echo mypaint-brush.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I/usr/local/include/json-c -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_POSIX_C_SOURCE=200809L -g -O2 -MT mypaint-brush.lo -MD -MP -MF $depbase.Tpo -c -o mypaint-brush.lo mypaint-brush.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I/usr/local/include/json-c -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_POSIX_C_SOURCE=200809L -g -O2 -MT mypaint-brush.lo -MD -MP -MF .deps/mypaint-brush.Tpo -c mypaint-brush.c  -fPIC -DPIC -o .libs/mypaint-brush.o
mypaint-brush.c: In function ‘mypaint_brush_new’:
mypaint-brush.c:133:26: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
     self->print_inputs = FALSE;
                          ^~~~~
                          FILE
mypaint-brush.c:133:26: note: each undeclared identifier is reported only once for each function it appears in
mypaint-brush.c:142:29: error: ‘TRUE’ undeclared (first use in this function)
     self->reset_requested = TRUE;
                             ^~~~
mypaint-brush.c: In function ‘mypaint_brush_reset’:
mypaint-brush.c:225:29: error: ‘TRUE’ undeclared (first use in this function)
     self->reset_requested = TRUE;
                             ^~~~
mypaint-brush.c: In function ‘mypaint_brush_stroke_to’:
mypaint-brush.c:961:31: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
       self->reset_requested = FALSE;
                               ^~~~~
                               FILE
mypaint-brush.c:980:14: error: ‘TRUE’ undeclared (first use in this function)
       return TRUE;
              ^~~~
mypaint-brush.c: In function ‘obj_get’:
mypaint-brush.c:1100:44: error: ‘TRUE’ undeclared (first use in this function)
         && (obj_out ? (*obj_out != NULL) : TRUE);
                                            ^~~~
mypaint-brush.c: In function ‘update_brush_setting_from_json_object’:
mypaint-brush.c:1120:16: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
         return FALSE;
                ^~~~~
                FILE
mypaint-brush.c:1167:12: error: ‘TRUE’ undeclared (first use in this function)
     return TRUE;
            ^~~~
mypaint-brush.c: In function ‘update_brush_from_json_object’:
mypaint-brush.c:1177:16: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
         return FALSE;
                ^~~~~
                FILE
mypaint-brush.c:1193:28: error: ‘TRUE’ undeclared (first use in this function)
     gboolean updated_all = TRUE;
                            ^~~~
mypaint-brush.c: In function ‘mypaint_brush_from_string’:
mypaint-brush.c:1227:16: error: ‘FALSE’ undeclared (first use in this function); did you mean ‘FILE’?
         return FALSE;
                ^~~~~
                FILE
make[2]: *** [Makefile:730: mypaint-brush.lo] Error 1
make[2]: Leaving directory '/root/git/libmypaint'
make[1]: *** [Makefile:840: all-recursive] Error 1
make[1]: Leaving directory '/root/git/libmypaint'
make: *** [Makefile:598: all] Error 2

Hi I have Slackware 14.2 stable and current… in both there isn’t glib2-devel and in the stable the compilation works well.

Do I have to see for a particular file??

My guess is the proper inclusion of the proper glib.h is required. Looks like it is, but there is a glib2 difference between your Slackware stable and current.

One thing I would try on your Slackware current is building glib2 version 2.46.2 (the version in Slackware stable x86_64) into /usr/local

Pkg-config should then prefer it according the pkgconfig paths as set and compile it into libmypaint as it does in stable. I know 2.46.2 is from 2016 but so is libmypaint 1.3.0. Don’t know about compiling libmypaint from the master branch. It might lie beyond the bleeding edge presented by gimp.

Hi folks,
I SOLVED !!:slightly_smiling_face:

The culprit was json-c as I explained into this thread and thanks to bathory

Now I have a working Gimp-git. Actually it is on e VM but when I’ll upgrade my distro to a current version which has glib2-2.54 I hope to have it on the production PC.

Cheers
Gabriele

1 Like