[OpenIndiana-discuss] OI Hipster: GDL not working because of broken plplot

Udo Grabowski (IMK) udo.grabowski at kit.edu
Fri Sep 7 12:36:51 UTC 2018


On 07/09/2018 14:06, Udo Grabowski (IMK) wrote:
> On 07/09/2018 14:01, Udo Grabowski (IMK) wrote:
>> On 07/09/2018 13:45, Udo Grabowski (IMK) wrote:
>>> Says the most important driver for plplot, xwin, is not compiled
>>> into plplot. I'm convinced it is, otherwise delivering plplot would
>>> be futile, so it seems that something else is broken here:
>>>
>>> ro sunth7 ~ # ldd /usr/bin/gdl|grep plplot
>>>         libplplot.so.15 =>       /usr/lib/64/libplplot.so.15
>>>         libplplotcxx.so.13 =>    /usr/lib/64/libplplotcxx.so.13
>>>
>>> ro sunth7 ~ # gdl
>>>
>>>   GDL - GNU Data Language, Version 0.9.7
>>>
>>> - For basic information type HELP,/INFO
>>> - Default library routine search path used (GDL_PATH/IDL_PATH env. var. not
>>> set):
>>>   +/usr/share/gnudatalanguage/lib
>>> - No startup file read (GDL_STARTUP/IDL_STARTUP env. var. not set).
>>> - Please report bugs, feature or help requests and patches at:
>>>   http://sourceforge.net/projects/gnudatalanguage/
>>>
>>> GDL> plot,findgen(100)
>>>
>>> *** PLPLOT WARNING ***
>>> Unable to open cmap0 file cmap0_default.pal
>>>
>>> *** PLPLOT WARNING ***
>>> Unable to open cmap0 file cmap0_default.pal
>>>
>>> *** PLPLOT WARNING ***
>>> Unable to open cmap1 .pal file cmap1_default.pal
>>>
>>> *** PLPLOT ERROR, ABORTING OPERATION ***
>>> plInitDispatchTable: Could not open drivers directory, aborting operation
>>> % PLplot installation lacks the requested driver: xwin
>>> % Execution halted at: $MAIN$
>>> GDL>
>>>
>>> ro sunth7 ~ # ll  /usr/share/plplot5.13.0/
>>> total 581
>>> -r--r--r--   1 root     bin        55.9K Aug 17 12:04 cglobe.map
>>> -r--r--r--   1 root     bin          131 Aug 17 12:04 cmap0_alternate.pal
>>> -r--r--r--   1 root     bin          195 Aug 17 12:04 cmap0_black_on_white.pal
>>> -r--r--r--   1 root     bin          131 Aug 17 12:04 cmap0_default.pal
>>> -r--r--r--   1 root     bin          195 Aug 17 12:04 cmap0_white_bg.pal
>>> -r--r--r--   1 root     bin           51 Aug 17 12:04 cmap1_blue_red.pal
>>> -r--r--r--   1 root     bin          220 Aug 17 12:04 cmap1_blue_yellow.pal
>>> -r--r--r--   1 root     bin           80 Aug 17 12:04 cmap1_default.pal
>>> -r--r--r--   1 root     bin           69 Aug 17 12:04 cmap1_gray.pal
>>> -r--r--r--   1 root     bin           51 Aug 17 12:04 cmap1_highfreq.pal
>>> -r--r--r--   1 root     bin          105 Aug 17 12:04 cmap1_lowfreq.pal
>>> -r--r--r--   1 root     bin          426 Aug 17 12:04 cmap1_radar.pal
>>> drwxr-xr-x   9 root     sys           23 Aug 17 12:04 examples/
>>> -r--r--r--   1 root     bin        32.8K Aug 17 12:04 globe.map
>>> -r--r--r--   1 root     bin        2.30K Aug 17 12:04 pkgIndex.tcl
>>> -r--r--r--   1 root     bin        6.26K Aug 17 12:04 plstnd5.fnt
>>> -r--r--r--   1 root     bin        57.4K Aug 17 12:04 plxtnd5.fnt
>>> drwxr-xr-x   2 root     sys            4 Aug 17 12:04 tcl/
>>> -r--r--r--   1 root     bin        43.5K Aug 17 12:04 usa.map
>>> -r--r--r--   1 root     bin        74.9K Aug 17 12:04 usaglobe.map
>>>
>>> ro sunth7 ~ # pkg list -a|fgrep -i plplot
>>> image/plplot    5.13.0-2018.0.0.0          i--
>>>
>>>
>>> ro sunth7 ~ # pkg list -a | fgrep -i gdl
>>> library/libgdl  3.28.0-2018.0.0.0          i--
>>> scientific/gdl  0.9.7-2018.0.0.2           i--
>>>
>>
>> Part1 of the problem has an explanation: The code searches for the files not
>> in "/usr/share/plplot...", but in "share/plplot..." (and /usr/local as
>> last resort) ! This insane:
>>
>> 3869:   open("cmap0_default.pal", O_RDONLY)             Err#2 ENOENT
>> 3869:   open("share/plplot5.13.0/cmap0_default.pal", O_RDONLY) Err#2 ENOENT
>> 3869:   open("/usr/local/plplot/lib/cmap0_default.pal", O_RDONLY) Err#2 ENOENT
>>
>> *** PLPLOT WARNING ***
>> 3869:   write(2, "\n * * *   P L P L O T  ".., 24)      = 24
>> Unable to open cmap0 file cmap0_default.pal
>> 3869:   write(2, " U n a b l e   t o   o p".., 44)      = 44
>>
>> 3869:   write(2, "\n", 1)                               = 1
>> 3869:   open("cmap0_default.pal", O_RDONLY)             Err#2 ENOENT
>> 3869:   open("share/plplot5.13.0/cmap0_default.pal", O_RDONLY) Err#2 ENOENT
>> 3869:   open("/usr/local/plplot/lib/cmap0_default.pal", O_RDONLY) Err#2 ENOENT
>>
>> *** PLPLOT WARNING ***
>> 3869:   write(2, "\n * * *   P L P L O T  ".., 24)      = 24
>> Unable to open cmap0 file cmap0_default.pal
>> 3869:   write(2, " U n a b l e   t o   o p".., 44)      = 44
>>
>> 3869:   write(2, "\n", 1)                               = 1
>> 3869:   open("cmap1_default.pal", O_RDONLY)             Err#2 ENOENT
>> 3869:   open("share/plplot5.13.0/cmap1_default.pal", O_RDONLY) Err#2 ENOENT
>> 3869:   open("/usr/local/plplot/lib/cmap1_default.pal", O_RDONLY) Err#2 ENOENT
>>
>> *** PLPLOT WARNING ***
>> 3869:   write(2, "\n * * *   P L P L O T  ".., 24)      = 24
>> Unable to open cmap1 .pal file cmap1_default.pal
>> 3869:   write(2, " U n a b l e   t o   o p".., 49)      = 49
>>
>>
>> linking /usr/share into the working directory lets it find the files,
>> but still the plplot xwin driver is not found:
>>
>> GDL> plot,findgen(100)
>>
>> *** PLPLOT ERROR, ABORTING OPERATION ***
>> plInitDispatchTable: Could not open drivers directory, aborting operation
>> % PLplot installation lacks the requested driver: xwin
>> % Execution halted at: $MAIN$
>> GDL>
>>
>
> And so the second part has the same embarassing explanation:
>
> 3874:   open("lib/amd64/plplot5.13.0/drivers", O_RDONLY|O_NDELAY|O_LARGEFILE)
> Err#2 ENOENT
>
>
> Also linking /usr/lib/ into the current working finally lets it find its driver
> library, too....
>
> Please can somebody recompile plplot with proper fixes to stop this madness ?
>
>
>

It seems that, at compile time, some variables were not set correctly
(aka, empty):

<http://plplot.sourceforge.net/docbook-manual/plplot-html-5.13.0/deploying.html>

" In the first case the program will contain all the code it needs to work, but 
to run successfully, it needs to find the font files, plstnd5.fnt and 
plxtnd5.fnt. The mechanism used in PLplot to find these files is fairly simple:

     It looks at a number of built-in places, determined at the time the PLplot 
library itself was installed and built. For deployment these places are 
irrelevant in general.

     It looks at the environment variables PLPLOT_LIB and PLPLOT_HOME.
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
(Actually, this happens only, if the corresponding compiler macros 
PLPLOT_LIB_ENV and PLPLOT_HOME_ENV were defined at compile time.)  "
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The compile time variables were set, because plplot reacts to PLPLOT_LIB.
But the default directories were not set.

Actually, setting the runtime variables to the default directories helps
as a first workaround:

setenv PLPLOT_LIB /usr/share/plplot5.13.0
setenv PLPLOT_DRV_DIR /usr/lib/amd64/plplot5.13.0/drivers

and GDL (and probably other programs linked to plplot) can finally plot !

-- 
Dr.Udo Grabowski   Inst.f.Meteorology & Climate Research IMK-ASF-SAT
http://www.imk-asf.kit.edu/english/sat.php
KIT - Karlsruhe Institute of Technology           http://www.kit.edu
Postfach 3640,76021 Karlsruhe,Germany T:(+49)721 608-26026 F:-926026



More information about the openindiana-discuss mailing list