[GRASS-dev] Problem compiling ximgview in the latest grass_trunk

Hi,

I must be missing something because I can't compile grass7.svn on a
new config. The compilation error is located in
grass_trunk/visualization/ximgview (see below).

Any pointer would be greatly appreciated,

Cheers,

Pierre

roudierp@mangatainoka:/usr/local/src/grass_trunk/visualization/ximgview$ make
: && gcc -L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-Wl,--export-dynamic
-Wl,-rpath-link,/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-o /usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/bin/ximgview
OBJ.x86_64-unknown-linux-gnu/color.o
OBJ.x86_64-unknown-linux-gnu/main.o -lgrass_gis.7.0.svn -L -lX11
-lm
OBJ.x86_64-unknown-linux-gnu/main.o: In function `draw':
/usr/local/src/grass_trunk/visualization/ximgview/main.c:121:
undefined reference to `XPutImage'
OBJ.x86_64-unknown-linux-gnu/main.o: In function `main_loop':
/usr/local/src/grass_trunk/visualization/ximgview/main.c:156:
undefined reference to `XPending'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:156:
undefined reference to `XPending'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:159:
undefined reference to `XNextEvent'
OBJ.x86_64-unknown-linux-gnu/main.o: In function `draw':
/usr/local/src/grass_trunk/visualization/ximgview/main.c:122:
undefined reference to `XSync'
OBJ.x86_64-unknown-linux-gnu/main.o: In function `create_window':
/usr/local/src/grass_trunk/visualization/ximgview/main.c:62: undefined
reference to `XOpenDisplay'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:72: undefined
reference to `XCreateWindow'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:81: undefined
reference to `XMapWindow'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:83: undefined
reference to `XGetWindowAttributes'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:88: undefined
reference to `XSetWindowColormap'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:90: undefined
reference to `XCreateGC'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:93: undefined
reference to `XCreateImage'
/usr/local/src/grass_trunk/visualization/ximgview/main.c:99: undefined
reference to `XFlush'
OBJ.x86_64-unknown-linux-gnu/color.o: In function `try_get_grays':
/usr/local/src/grass_trunk/visualization/ximgview/color.c:191:
undefined reference to `XAllocColor'
/usr/local/src/grass_trunk/visualization/ximgview/color.c:192:
undefined reference to `XFreeColors'
OBJ.x86_64-unknown-linux-gnu/color.o: In function `try_get_colors':
/usr/local/src/grass_trunk/visualization/ximgview/color.c:159:
undefined reference to `XAllocColor'
/usr/local/src/grass_trunk/visualization/ximgview/color.c:160:
undefined reference to `XFreeColors'
OBJ.x86_64-unknown-linux-gnu/color.o: In function `InitColorTableFixed':
/usr/local/src/grass_trunk/visualization/ximgview/color.c:273:
undefined reference to `XFreeColormap'
OBJ.x86_64-unknown-linux-gnu/color.o: In function `ramp_colormap':
/usr/local/src/grass_trunk/visualization/ximgview/color.c:205:
undefined reference to `XCreateColormap'
/usr/local/src/grass_trunk/visualization/ximgview/color.c:220:
undefined reference to `XStoreColor'
collect2: ld returned 1 exit status
make: *** [/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/bin/ximgview]
Error 1

--
Scientist
Landcare Research, New Zealand

On Thu, Jul 12, 2012 at 9:02 AM, Pierre Roudier
<pierre.roudier@gmail.com> wrote:

Hi,

I must be missing something because I can't compile grass7.svn on a
new config. The compilation error is located in
grass_trunk/visualization/ximgview (see below).

...

roudierp@mangatainoka:/usr/local/src/grass_trunk/visualization/ximgview$ make

...

OBJ.x86_64-unknown-linux-gnu/main.o: In function `draw':
/usr/local/src/grass_trunk/visualization/ximgview/main.c:121:
undefined reference to `XPutImage'

You are likely missing the package "libX11-devel".

Hope this helps,
Markus

Pierre Roudier wrote:

: && gcc -L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-Wl,--export-dynamic
-Wl,-rpath-link,/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-o /usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/bin/ximgview
OBJ.x86_64-unknown-linux-gnu/color.o
OBJ.x86_64-unknown-linux-gnu/main.o -lgrass_gis.7.0.svn -L -lX11

                                                             ^^

The problem is the bare -L switch, which causes -lX11 to be treated as
an argument to -L rather than a separate switch.

Unfortunately, the AC_PATH_XTRA test which sets X_LIBS is part of
autoconf, and not something which can easily be worked around.

First it tries using imake (xmkmf), which may not exist on modern
systems. If that fails, it tries a fixed set of plausible library
directories, all of which use "lib" rather than e.g. "lib64", as the
latter wasn't in common use when autoconf-2.13 was released (Jan
1999).

It may be time to think about moving to a newer version of autoconf.
It's much more stable now than it was in the period immediatley after
2.13.

--
Glynn Clements <glynn@gclements.plus.com>

On Thu, Jul 12, 2012 at 6:14 PM, Glynn Clements
<glynn@gclements.plus.com> wrote:
...

It may be time to think about moving to a newer version of autoconf.
It's much more stable now than it was in the period immediatley after
2.13.

For this I found
http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Autoconf-2_002e13.html#Autoconf-2_002e13

... looks like manual updating?

Markus

PS: They seem to be funny guys:
       http://www.gnu.org/software/autoconf/autoconf.alt-sc.html
       http://www.gnu.org/software/autoconf/autoconf.alt-pl.html

Thanks for your help Markus and Glynn,

I do have libx11-dev installed (I'm running Xubuntu 12.04), but still
get the same error unfortunately,

Pierre

2012/7/12 Markus Neteler <neteler@osgeo.org>:

On Thu, Jul 12, 2012 at 9:02 AM, Pierre Roudier
<pierre.roudier@gmail.com> wrote:

Hi,

I must be missing something because I can't compile grass7.svn on a
new config. The compilation error is located in
grass_trunk/visualization/ximgview (see below).

...

roudierp@mangatainoka:/usr/local/src/grass_trunk/visualization/ximgview$ make

...

OBJ.x86_64-unknown-linux-gnu/main.o: In function `draw':
/usr/local/src/grass_trunk/visualization/ximgview/main.c:121:
undefined reference to `XPutImage'

You are likely missing the package "libX11-devel".

Hope this helps,
Markus

--
Scientist
Landcare Research, New Zealand

Glynn,

Is there an easy work-around this? It's a bit weird as the compilation
goes well on my older machine. It seems to fail only on this newer
configuration. After a bit of googling, I *think* that the xutils-dev
package, which provides imake, does not provide the xmkmf script
anymore.

I don't think I'm making any use of the ximgview module at the moment,
so I'm happy to try and drop it from my final install. I do need
grass7 to compile for testing Eric Momsen's GSoC project.

Any help greatly appreciated,

Cheers,

P

2012/7/13 Glynn Clements <glynn@gclements.plus.com>:

Pierre Roudier wrote:

: && gcc -L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-Wl,--export-dynamic
-Wl,-rpath-link,/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-o /usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/bin/ximgview
OBJ.x86_64-unknown-linux-gnu/color.o
OBJ.x86_64-unknown-linux-gnu/main.o -lgrass_gis.7.0.svn -L -lX11

                                                             ^^

The problem is the bare -L switch, which causes -lX11 to be treated as
an argument to -L rather than a separate switch.

Unfortunately, the AC_PATH_XTRA test which sets X_LIBS is part of
autoconf, and not something which can easily be worked around.

First it tries using imake (xmkmf), which may not exist on modern
systems. If that fails, it tries a fixed set of plausible library
directories, all of which use "lib" rather than e.g. "lib64", as the
latter wasn't in common use when autoconf-2.13 was released (Jan
1999).

It may be time to think about moving to a newer version of autoconf.
It's much more stable now than it was in the period immediatley after
2.13.

--
Glynn Clements <glynn@gclements.plus.com>

--
Scientist
Landcare Research, New Zealand

Sorry, my bad:

roudierp@mangatainoka:~/.config/Terminal$ apt-file find xmkmf
xmanpages-ja: /usr/share/man/ja/man1/xmkmf.1.gz
xutils-dev: /usr/bin/xmkmf
xutils-dev: /usr/share/man/man1/xmkmf.1.gz

So on ubuntu, xmkmf and imake are available through the xutils-dev
package. However, I still run into the same error at compilation,

P

2012/7/13 Pierre Roudier <pierre.roudier@gmail.com>:

Glynn,

Is there an easy work-around this? It's a bit weird as the compilation
goes well on my older machine. It seems to fail only on this newer
configuration. After a bit of googling, I *think* that the xutils-dev
package, which provides imake, does not provide the xmkmf script
anymore.

I don't think I'm making any use of the ximgview module at the moment,
so I'm happy to try and drop it from my final install. I do need
grass7 to compile for testing Eric Momsen's GSoC project.

Any help greatly appreciated,

Cheers,

P

2012/7/13 Glynn Clements <glynn@gclements.plus.com>:

Pierre Roudier wrote:

: && gcc -L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-L/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-Wl,--export-dynamic
-Wl,-rpath-link,/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/lib
-o /usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu/bin/ximgview
OBJ.x86_64-unknown-linux-gnu/color.o
OBJ.x86_64-unknown-linux-gnu/main.o -lgrass_gis.7.0.svn -L -lX11

                                                             ^^

The problem is the bare -L switch, which causes -lX11 to be treated as
an argument to -L rather than a separate switch.

Unfortunately, the AC_PATH_XTRA test which sets X_LIBS is part of
autoconf, and not something which can easily be worked around.

First it tries using imake (xmkmf), which may not exist on modern
systems. If that fails, it tries a fixed set of plausible library
directories, all of which use "lib" rather than e.g. "lib64", as the
latter wasn't in common use when autoconf-2.13 was released (Jan
1999).

It may be time to think about moving to a newer version of autoconf.
It's much more stable now than it was in the period immediatley after
2.13.

--
Glynn Clements <glynn@gclements.plus.com>

--
Scientist
Landcare Research, New Zealand

--
Scientist
Landcare Research, New Zealand

Pierre Roudier wrote:

Is there an easy work-around this?

Provided that the configure script completes, you can edit
include/Make/Platform.make by hand. The relevant variables are
XLIBPATH and XLIB.

--
Glynn Clements <glynn@gclements.plus.com>

Thanks heaps for your help Glynn, it worked.

For reference, here's the workaround I used:
roudierp@mangatainoka:/usr/local/src/grass_trunk$ more
include/Make/Platform.make | grep -n XLIB
86:XLIBPATH = -L/usr/bin

Cheers,

Pierre

2012/7/14 Glynn Clements <glynn@gclements.plus.com>:

Pierre Roudier wrote:

Is there an easy work-around this?

Provided that the configure script completes, you can edit
include/Make/Platform.make by hand. The relevant variables are
XLIBPATH and XLIB.

--
Glynn Clements <glynn@gclements.plus.com>

--
Scientist
Landcare Research, New Zealand

Hi Glynn et al.,

I still got the same problem - I'm happy to use the workaround and
edit the Platform.make file by hand, but should I lodge a bug report
in the tracker?

Cheers,

Pierre

2012/7/14 Pierre Roudier <pierre.roudier@gmail.com>:

Thanks heaps for your help Glynn, it worked.

For reference, here's the workaround I used:
roudierp@mangatainoka:/usr/local/src/grass_trunk$ more
include/Make/Platform.make | grep -n XLIB
86:XLIBPATH = -L/usr/bin

Cheers,

Pierre

2012/7/14 Glynn Clements <glynn@gclements.plus.com>:

Pierre Roudier wrote:

Is there an easy work-around this?

Provided that the configure script completes, you can edit
include/Make/Platform.make by hand. The relevant variables are
XLIBPATH and XLIB.

--
Glynn Clements <glynn@gclements.plus.com>

--
Scientist
Landcare Research, New Zealand

--
Scientist
Landcare Research, New Zealand

Pierre Roudier wrote:

I still got the same problem - I'm happy to use the workaround and
edit the Platform.make file by hand, but should I lodge a bug report
in the tracker?

Please do.

Even though ximgview is redundant (the same functionality is available
via both wximgview and wximgview.py), we need raw access to Xlib for
reasons related to NVIZ.

--
Glynn Clements <glynn@gclements.plus.com>

Ticket created here: http://trac.osgeo.org/grass/ticket/1713

Thanks,

P

2012/8/31 Glynn Clements <glynn@gclements.plus.com>:

Pierre Roudier wrote:

I still got the same problem - I'm happy to use the workaround and
edit the Platform.make file by hand, but should I lodge a bug report
in the tracker?

Please do.

Even though ximgview is redundant (the same functionality is available
via both wximgview and wximgview.py), we need raw access to Xlib for
reasons related to NVIZ.

--
Glynn Clements <glynn@gclements.plus.com>

--
Scientist
Landcare Research, New Zealand

Hi all,

Just ran over that bug at compilation of the latest trunk (7.5-svn) on the latest Ubuntu LTS (16.04-1).

The workaround (editing Platform.make file by hand) still works, but I was wondering whether other Ubuntu users had the same issue,

Cheers,

Pierre

···

On 31 August 2012 at 15:01, Pierre Roudier <pierre.roudier@gmail.com> wrote:

Ticket created here: http://trac.osgeo.org/grass/ticket/1713

Thanks,

P

2012/8/31 Glynn Clements <glynn@gclements.plus.com>:

Pierre Roudier wrote:

I still got the same problem - I’m happy to use the workaround and
edit the Platform.make file by hand, but should I lodge a bug report
in the tracker?

Please do.

Even though ximgview is redundant (the same functionality is available
via both wximgview and wximgview.py), we need raw access to Xlib for
reasons related to NVIZ.


Glynn Clements <glynn@gclements.plus.com>


Scientist
Landcare Research, New Zealand