On 02/11/2018 05:47 PM, Williams Jr., Ernest L. wrote:
> Hi Michael,
>
>
> Awesome news. Thanks for releasing this.
>
> My initial results are below.
>
> I look forward to continued tests
> $ make nose
> PYTHONPATH="/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64" python -m nose -P p4p
...
> ImportError: /usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64/p4p/_p4p.so: undefined symbol: _Py_FalseStruct
Is a symptom of mixing python2 and python3. If you build with
> make PYTHON=python3
Then you also need to to pass the same PYTHON= for all targets except 'distclean'.
> make PYTHON=python3 nose
>>>> ====================
That works perfectly, thanks.
>>>> ====================
which as you found, is a shorthand for:
> $ PYTHONPATH=/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64 nosetests-3
I added a note to the 'building' section of the docs this afternoon as you're not the only one
seeing this.
Thanks for the test results.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> *From:*
[email protected] <
[email protected]> on behalf of Michael Davidsaver <
[email protected]>
> *Sent:* Sunday, February 11, 2018 2:59 PM
> *To:* EPICS Tech-Talk
> *Subject:* P4P release 1.0 (PVAccess for Python)
>
> The first release of the P4P (PVAccess for Python) module is available
>
> P4P is a binding for the PVAccess protocol client, and part of the server APIs.
> The client get, put, rpc, and monitor operations are supported. As a server,
> only the rpc operation can be implemented.
>
> Download
>
>
https://github.com/mdavidsaver/p4p/releases/download/1.0/p4p-1.0.tar.gz
>
>
> Building from source
>
>
https://mdavidsaver.github.io/p4p/building.html
>
>
> <============ Building ================>==================================>
> The build was successful.
> Host OS == Fedora release 27 (Twenty Seven)
> Kernel == 4.14.16-300.fc27.x86_64
> GCC == gcc version 7.3.1 20180130 (Red Hat 7.3.1-2) (GCC)
> EPICS_BASE = R7.0.1.1
> PYTHON = Python 3.6.4
> numpy = numpy==1.14.0
> <========================================================================>
>
> <
https://mdavidsaver.github.io/p4p/building.html>===> Running unittests =======================================================<
> Some results when building from source on Fedora 26:
> make nose does not succeed: (maybe because I am using python3?)
>
> [ernesto@localhost p4p-1.0]$ make nose
> make -C ./configure install
> make[1]: Entering directory '/usr/local/controls/package/p4p-1.0/configure'
> make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
> T_A=linux-x86_64 install
> make[2]: Entering directory '/usr/local/controls/package/p4p-1.0/configure/O.linux-x86_64'
> make[2]: Nothing to be done for 'install'.
> make[2]: Leaving directory '/usr/local/controls/package/p4p-1.0/configure/O.linux-x86_64'
> make[1]: Leaving directory '/usr/local/controls/package/p4p-1.0/configure'
> make -C ./src install
> make[1]: Entering directory '/usr/local/controls/package/p4p-1.0/src'
> make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
> T_A=linux-x86_64 install
> make[2]: Entering directory '/usr/local/controls/package/p4p-1.0/src/O.linux-x86_64'
> make[2]: Nothing to be done for 'install'.
> make[2]: Leaving directory '/usr/local/controls/package/p4p-1.0/src/O.linux-x86_64'
> make[1]: Leaving directory '/usr/local/controls/package/p4p-1.0/src'
> make -C src/O.linux-x86_64 nose
> make[1]: Entering directory '/usr/local/controls/package/p4p-1.0/src/O.linux-x86_64'
> make -f ../Makefile TOP=../.. T_A=linux-x86_64 nose
> make[2]: Entering directory '/usr/local/controls/package/p4p-1.0/src/O.linux-x86_64'
> PYTHONPATH="/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64" python -m nose -P p4p
> E
> ======================================================================
> ERROR: Failure: ImportError (/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64/p4p/_p4p.so: undefined symbol: _Py_FalseStruct
> )
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/usr/lib/python2.7/site-packages/nose/loader.py", line 407, in loadTestsFromName
> module = resolve_name(addr.module)
> File "/usr/lib/python2.7/site-packages/nose/util.py", line 312, in resolve_name
> module = __import__('.'.join(parts_copy))
> File "/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64/p4p/__init__.py", line 2, in <module>
> from .wrapper import Value, Type
> File "/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64/p4p/wrapper.py", line 2, in <module>
> from ._p4p import Type, Value
> ImportError: /usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64/p4p/_p4p.so: undefined symbol: _Py_FalseStruct
>
> ----------------------------------------------------------------------
> Ran 1 test in 0.001s
>
> FAILED (errors=1)
> make[2]: *** [../Makefile:55: nose] Error 1
> make[2]: Leaving directory '/usr/local/controls/package/p4p-1.0/src/O.linux-x86_64'
> make[1]: *** [Makefile:8: nose] Error 2
> make[1]: Leaving directory '/usr/local/controls/package/p4p-1.0/src/O.linux-x86_64'
> make: *** [Makefile:17: nose] Error 2
> [ernesto@localhost p4p-1.0]$
>
>
> However, the other recommended option does run and complete with success
>
> [ernesto@localhost linux-x86_64]$ cd /usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64
> [ernesto@localhost linux-x86_64]$ PYTHONPATH=/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64 nosetests-3
> ..........................2018-02-11T17:34:47.253 Using dynamically assigned TCP port 35359.
> .2018-02-11T17:34:47.284 Using dynamically assigned TCP port 36373.
> .....2018-02-11T17:34:47.402 Using dynamically assigned TCP port 48073.
> .........................
> ----------------------------------------------------------------------
> Ran 57 tests in 1.084s
>
> OK
> [ernesto@localhost linux-x86_64]$
>
>
> Initial tests with command line tools look good as well:
> [ernesto@localhost linux-x86_64]$ PYTHONPATH=/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64 python3 -m p4p.client.cli get
> ernesto:aiExample1
> ernesto:aiExample1 Sun Feb 11 17:36:51 2018 9.0
> [ernesto@localhost linux-x86_64]$ PYTHONPATH=/usr/local/controls/package/p4p-1.0/python3.6m/linux-x86_64 python3 -m p4p.client.cli moni
> tor ernesto:aiExample1
> ernesto:aiExample1 Sun Feb 11 17:37:09 2018 7.0
> ernesto:aiExample1 Sun Feb 11 17:37:10 2018 8.0
> ernesto:aiExample1 Sun Feb 11 17:37:11 2018 9.0
> ernesto:aiExample1 Sun Feb 11 17:37:12 2018 0.0
> ernesto:aiExample1 Sun Feb 11 17:37:13 2018 1.0
> ernesto:aiExample1 Sun Feb 11 17:37:14 2018 2.0
> ernesto:aiExample1 Sun Feb 11 17:37:15 2018 3.0
> ernesto:aiExample1 Sun Feb 11 17:37:16 2018 4.0
> ernesto:aiExample1 Sun Feb 11 17:37:17 2018 5.0
> ernesto:aiExample1 Sun Feb 11 17:37:18 2018 6.0
> ernesto:aiExample1 Sun Feb 11 17:37:19 2018 7.0
> ^C[ernesto@localhost linux-x86_64]$
>
> <======================================================================================>
>
>
>
> Getting started with the client API
>
>
https://mdavidsaver.github.io/p4p/starting.html
>
>
> Writing an RPC server (and client)
>
>
https://mdavidsaver.github.io/p4p/rpc.html
>
>
> documentation index
>
>
https://mdavidsaver.github.io/p4p/