deb refreshed for ijconsole to make sure it use j804 libj.so and jprofile.

Yes, FHS for debianization, separating bin and lib folders.

If ijconsole and libj.so.8.0.4 are installed folders eg /usr/bin and
/usr/lib then FHS=1 otherwise it will be regarded as an old single folder,
single user.

the condition should be
 if. -. (0~:FHS) *. 'Linux'-:UNAME do.
A
else.
B

it needs to check FHS because standalone installaton (not by deb) assume
libjpcre is being used.

please see if this can fix the issue.
and also please check FHS is 1 in your j session (it should be).
> It is correct that deb does not contain libjpcre because deb intended to
> use stock libpcre. the value of jregcomp is incorrect. I cannot test on
> raspi right now, please see the init part of the source of jregex why it
> could not pick up the stock libpcre.

It turns out that the selection of the wrong jregcomp (and others)
does not happen in the init.ijs part of the regex sources but in the
defs.ijs part.

In system/main/regex.ijs, line 106 or, source-wise, line 11 in
http://www.jsoftware.com/wsvn/base8/trunk/main/regex/defs.ijs?op=blame&rev=200
the check

        if. (0~:FHS) *: 'Linux'-:UNAME do.

incorrectly selects the "then." case.  I'm running stock Debian-"Wheezy"
on my ARM board, I have

        UNAME -: 'Linux'        NB. looks good to me
        FHS -: 0                NB. not so sure

It took me a few hours to find where "FHS" is initialized:

        $ strings ijconsole | grep FHS
        [FHS_z_=:0
        [FHS_z_=:1

        $ strings libjqt.so  | grep FHS
        [FHS_z_=:0
        [FHS_z_=:1

It's sole documentation (as finally found in:
        http://www.jsoftware.com/wsvn/base8/trunk/main/main/sysenv.ijs
        http://jsoftware.com/help/user/lib_sysenv.htm):

        NB.*FHS          n filesystem hierarchy: 0=not used  1=linux

is not really clear to me.

Assuming that "FHS" stands for "system obeys the Filesystem Hierarchy
Standard" I provided a "FHS_z_=:1" definition using jprofilex.ijs.
This was good for the jconsole but not for jqt.   (I will probably
NEVER understand the contortions J is going through during startup.)

So as of now, I'm essentially forcing the if. check above into a FALSE,
making regexps (and the "J by Point and Click" lab) work.


And speaking of contortions:   My feeble mind easily gets headaches
from the NAND of an NON-ZERO and something.  I suggest to resolve the
nested negatives in [1]:

        if. (0~:FHS) *: 'Linux'-:UNAME do.
                A
        else.
                B
        end.

into this equivalent form [2]:

        if. FHS *. 'Linux'-:UNAME do.
                B
        else.
                A
        end.

And, given the "NB.*FHS" definition above, it makes me wonder if that
shouldn't be simplified to [3]:

        if. 'Linux'-:UNAME do.
                B
        else.
                A
        end.

FWIW, J Rel. 7 and 8.02 on debian-amd64 have FHS at 0, too, but have
the libjpcre shared lib provided.  As of now, I'm asking myself which
platform *ever* used the "B" case, i.e. a libpcreposix.so.3 provided
by the OS.   Ah, the SVN history can explain that:   prior to the
current

        if. (0~:FHS) *: 'Linux'-:UNAME do.      Rev. 82 blam, 2013-11-23

it was :

        if. (0=FHS) > 'Linux'-:UNAME do.        Rev. 76 blam, 2013-11-17

This would always (well, for a week) choose the "else" part on Linuxen.


The new 2015-07-26 .deb doesn't change anything.  (If I did the "diff -r"
correctly, only the ijconsole binary was different.  It would be really
helpful to announce more specific remarks what is supposed to be different
in new beta builds.)

                                                                Martin
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to