Hello Jürgen,
My bad. In my original post, I should have typed `)load' where
I typed ')lib'. Thanks for the detailed reply. I can)save and )load
workspaces now.
But I'm still confused about the following three sentences from
`apl.html':
If an environment variable APL_LIB_ROOT is defined, then its value is
used as library-root. Otherwise the path from the current directory
(".") up to the root directory ("/") is searched until a directory
containing two files ’workspaces’ and ’wslib1’ is found. Normally
’workspaces’ and ’wslib1’are directories, but for the computation of
library-root files suffice.
This passage plus your explanation implies to me that if APL_LIB_ROOT
is unset and there are no overrides in the preferencefiles, an attempt
is made to determine the library-root by searching from the current
directory '.' up to the root directory '/', stopping when the two
directories or files `workspaces' and `wslib1' are found in the same
directory. If this mechanism were to work the way I interpret the
passage, as long as one works in subdirectories below one's library-
root directory, the 0 .. 9 library numbers are meaningful without
having to set APL_LIB_ROOT or preference override entries. And one
would not have to use paths on the )lib and )load commands.
Regards,
Fred
On Mon, 2017-06-26 at 12:11 +0200, Juergen Sauermann wrote:
> Hi Fred,
>
>
>
> conceptually the )libs command shows the directories that
> will be used
>
> for the different library numbers (ranging from 0-9 with 0
> being
> the default
>
> library number of none is given).
>
>
>
> The other (non-library number) argument of the lib command is a
> directory, and
>
> to be distinguished from a library reference number it should
> contain a /.
>
>
>
> I suppose the first thing going wrong in your examples below is
> that the )lib argument
>
> seems to be a workspace name while the )lib command
> expects either a library reference
>
> number like 0..9 or the path to a directory.
>
>
>
> So if ../workspaces/
> contains workspace plotsincos.xml then the command
>
>
>
> )lib ../workspaces
>
>
>
> should display it. For example:
>
>
>
> )host pwd
>
> /home/eedjsa/projects/juergen/apl-1.7/src
>
>
>
> 0
>
>
>
> )lib ../
>
> autom4te.cache/ debian/ debian_tmp/
> devel_doc/
>
> doc/ erlang/ ftp-upload/
> gnu-apl.d/
>
> html/ m4/ rpm/ src/
>
> support-files/ tools/ web-home/
> workspaces/
>
> wslib1/ wslib2/ wslib3/ wslib4/
>
> wslib5/
>
> )lib ../workspaces
>
> APL_CGI LSQRL RU1 RU2
> RUBIK SCRIPT
>
> ScalarBenchmark XSudoku sudoku sudoku_DLX
> test tt
>
>
>
>
>
> Now the locations of library directories can be specified in
> different ways. The library root mechanism
>
> assumes a single directory that contains (at least) two
> subdirectories named workspaces and wslib1.
>
> These names come from the IBM APL2 interpreter which is using a
> similar scheme (but without giving
>
> any rules for it).
>
>
>
> GNU APL starts with this library root scheme, but each
> directory
> can be overridden by either the system's
>
> preference file and/or the user's preference file. the )LIBS
> command then tells how the library paths for
>
> the different library reference numbers were computed. For
> example:
>
> ---------------------------------------------------------------
> ------------
>
> Ref Conf
> Path State
> Err
>
> -------------------------------------------------------------
> --------------
>
> 0 BIN
> /home/eedjsa/projects/juergen/apl-1.7/src/workspaces
> present
>
> 1 BIN
> /home/eedjsa/projects/juergen/apl-1.7/src/wslib1
> present
>
> 2 BIN
> /home/eedjsa/projects/juergen/apl-1.7/src/wslib2
> missing
> (2)
>
> 3 PSYS
> /usr/local/lib/apl/wslib3
> present
>
> 4 PSYS
> /usr/local/lib/apl/wslib4
> present
>
> 5 PSYS
> /usr/local/lib/apl/wslib5
> present
>
> 6 BIN
> /home/eedjsa/projects/juergen/apl-1.7/src/wslib6
> missing
> (2)
>
> 7 BIN
> /home/eedjsa/projects/juergen/apl-1.7/src/wslib7
> missing
> (2)
>
> 8 BIN
> /home/eedjsa/projects/juergen/apl-1.7/src/wslib8
> missing
> (2)
>
> 9 BIN
> /home/eedjsa/projects/juergen/apl-1.7/src/wslib9
> missing
> (2)
>
> =============================================================
> ==============
>
>
>
> This tells us that libraries 3, 4, and 5 were specified by PSYS
> (system preferences file, e.g.
>
> /usr/local/etc/gnu-apl.d/preferences) while the others are
> computed from the current directory (BIN).
>
> The State and Err columns tell if the directory is accessible
> and
> the errno if not.
>
>
>
> If I remember correctly then the )lib command wants either a
> library reference number (0-9) or a
>
> path, but not both. If it fails, then )more tells which
> directory
> was tried (I fixed the spelling mistake)
>
> and the strerror(errno) of the failed operation:
>
>
>
> )lib xxx
>
> IMPROPER LIBRARY REFERENCE 'xxx': No such file or
> directory
>
> )more
>
> path 'xxx' could not be openend as directory: No such
> file or directory
>
>
>
> Best Regards,
>
> /// Jürgen
>
>
>
>
>
> On 06/26/2017 06:07 AM, Frederick Pitts
> wrote:
>
>
>
> > Hello Jürgen,
> >
> > The apl.html doc indicates that if environment variable
> > APL_LIB_ROOT is not defined, the subject search path will be from
> > the
> > current directory '.' up to the root directory '/' stopping when a
> > directory containing two directories ’workspaces’ and ’wslib1’ is
> > found.
> >
> > The above does not work on my platform, Fedora 25. For
> > instance, 'plotsincos.xml' is in ../workspaces relative the current
> > directory.
> >
> > )lib plotsincos
> >
> > yields
> >
> > IMPROPER LIBRARY REFERENCE 'plotsincos': No such file or directory
> >
> > and
> >
> > )lib 0 plotsincos
> >
> > yields
> >
> > IMPROPER LIBRARY REFERENCE '0': No such file or directory.
> >
> > Is this a bug or has the feature been removed and the documentation
> > is
> > out of date.
> >
> > A related question is if the feature were to work correctly,
> > would the )libs command use the feature so its output reflects the
> > location of the library directory paths that will be used by the
> > )lib
> > command. Currently, it does not.
> >
> > Regards,
> >
> > Fred
> >
> >
> >
> >
>
>
>
>
>
>