I see. But the problem is
this:
1. If I check for the presence of python3-config then it
says:
edjsa@server66:~/projects/juergen/apl-1.7$
which python3-config
/home/eedjsa/.pyenv/shims/python3-config
2. But if I then call it
then it fails:
eedjsa@server66:~/projects/juergen/apl-1.7$
python3-config
pyenv: python3-config: command not found
The `python3-config' command exists in these Python versions:
3.6.4
Such behaviour makes it impossible to use it in a Makefle.am
or to
troubleshoot build errors caused by this behaviour. I believe that
hard-wiring the path in Makefile.am is a more reliable
approach.
Best Regards,
Jürgen
eedjsa@server66:~/projects/juergen/apl-1.7$
On 6/18/19 9:37 AM, Christian Robert
wrote:
It
means that starting with python 3.6.4 (Python 3.6.4, Release Date:
Dec. 19, 2017)
the program "python3-config" will be available forever to be used
as helper for configuration.
it provides various clues as where are the includes and what is
the extention to be use in /usr/lib64/python3.n/lib-dynload/
$ python3-config --includes
-I/usr/include/python3.7m -I/usr/include/python3.7m
$ python3-config --extension-suffix
.cpython-37m-x86_64-linux-gnu.so
so:
cd /usr/lib64/python3.7/lib-dynload/
ln -fs /usr/local/lib/apl/lib_gnu_apl.so gnu_apl$(python3-config
--extension-suffix)
ls -ld gnu_apl*
lrwxrwxrwx. 1 root root 33 Jun 18 03:28
gnu_apl.cpython-37m-x86_64-linux-gnu.so ->
/usr/local/lib/apl/lib_gnu_apl.so*
python 3.4 was released on 17-Oct-2012
and is about 7 years old.
Xtian.
On 2019-06-17 16:49, Dr. Jürgen Sauermann wrote:
Hi,
thanks, good to know. My personal feeling is that Python
configuration is an
unportable mess. If I run *python3-config*, then I get:
*pyenv: python3-config: command not found**
**
**The `python3-config' command exists in these Python
versions:**
** 3.6.4**
*
No idea what this means or why this is so.
For that reason I prefer explicit settings rather than tools
that "help" me
getting things right.
Best Regards,
Jürgen
On 6/17/19 9:27 PM, Christian Robert wrote:
I made it work but only with some works
Makefile.am from:
lib_gnu_apl_la_CXXFLAGS += -I/usr/include/python3.4m
to:
lib_gnu_apl_la_CXXFLAGS += `python3-config --includes`
then run: "autoreconf"
./configure --with-python
make -j4
sudo make install
then had to run as root:
cd /usr/lib64/python3.7/lib-dynload/
ln -f /usr/local/lib/apl/lib_gnu_apl.so
gnu_apl.cpython-37m-x86_64-linux-gnu.so
*Note* the different target name. I made a hard link rather
than a copy (cp), matter of tastes.
then it works!
[xtian@FC-30:/usr/lib/python3.7] $ python3
Python 3.7.3 (default, May 11 2019, 00:38:04)
[GCC 9.1.1 20190503 (Red Hat 9.1.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more
information.
>>> import gnu_apl
>>> gnu_apl.exec("4 4⍴1+2")
### PYTHON RESULT CALLBACK ###
3 3 3 3
3 3 3 3
3 3 3 3
3 3 3 3
(1, ([4, 4], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3]))
>>> gnu_apl.command(")WSID")
'IS CLEAR WS\n'
>>>
Xtian.
On 2019-06-17 05:40, Dr. Jürgen Sauermann wrote:
Hi,
I haven't tried Python 2.7 but it may work. I followed the
instructions in
*https://docs.python.org/3.3/c-api*
I personally find *Python 2.7 *somewhat odd, so I never
considered it.
According to *./configure --help:*
*...**
** --with-python enable to build python extension
lib_gnu_apl.so**
**...*
so *--with-python* is the correct approach. Regarding the
python version, you can
either:
change *line 184* in *src/Makefile.am*:
*lib_gnu_apl_la_CXXFLAGS += -I/usr/include/python3.4m*
to reflect your Python version and then *autoreconf* and
*./configure --with-python* again,
or something like:
*CXX_FLAGS="-I/usr/include/python3.4m"
./configure**--with-python*
Best Regards,
Jürgen
On 6/17/19 6:22 AM, Christian Robert wrote:
If I configure with:
--with-libpython_apl
it says: configure: WARNING: unrecognized options:
--with-libpython_apl
If I configure with: --with-python
it fail in #include <Python.h> (no such file or
directory)
probably because of hard coded "-I/usr/include/python3.4m"
which does not exist on my system.
this is because it try to compile with python3.4m but on
my system (fedora30)
the installed pythons are:
[xtian@FC-30:/home/xtian/gnuapl] $ python -V
Python 2.7.16
and
[xtian@FC-30:/home/xtian/gnuapl] $ python3 -V
Python 3.7.3
You can probably invoke python3-config as in:
[xtian@FC-30:/home/xtian/gnuapl] $ python3-config --help
Usage: /usr/bin/python3.7m-x86_64-config
--prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir
[xtian@FC-30:/home/xtian/gnuapl] $ python3-config
--includes
-I/usr/include/python3.7m -I/usr/include/python3.7m
[xtian@FC-30:/home/xtian/gnuapl] $ python3-config --libs
-lpython3.7m -lcrypt -lpthread -ldl -lutil -lm
to figure-out where are the includes dirs and may be other
dirs.
I suppose this interface is NOT intended for python2 at
all, and it's fine with me.
Xtian.
On 2019-06-16 15:42, Dr. Jürgen Sauermann wrote:
Hi,
in following a suggestion by Kumar Ramanathan, I have
created a Python interface for GNU APL.
With that interface you can execute APL code, create APL
defined functions, etc. from Python.
Similar to *libapl* for C/C++ or to the Erlang
interface.
See *README-10-python* for details.
*SVN 1167*.
Jürgen
|