EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: PyDevice and an IOC
From: Josh Fiddler via Tech-talk <tech-talk at aps.anl.gov>
To: tech-talk at aps.anl.gov
Date: Tue, 7 Dec 2021 20:48:52 -0500
This is for Klemen Vodopivec the author of `PyDevice`

1) thanks for making this 
2) I'm having some issues getting a simple ioc to build with pydev support 

I'm using a Raspberry Pi and linux-arm as the host architecture
for specific reasons: using EPICS base 3.15.6, python 3.8.10 on ubuntu for arm64 in a docker container

The module itself builds alright. and the testing ioc runs just fine
When I create a basic IOC, with makeBaseApp.pl using the ioc template, 
adding the lines as indicated:
```
analogCtrlIOC_DBD += pydev.dbd
analogCtrlIOC_LIBS += pydev
SYS_PROD_LIBS += $(shell $(PYTHON_CONFIG) --ldflags --embed | sed 's/-[^l][^ ]*//g' | sed 's/-l//g')
with the RELEASE file for the IOC pointed at the location of the support module

with `make` i get
```
/usr/bin/g++  -D_GNU_SOURCE -D_DEFAULT_SOURCE             -DUNIX  -Dlinux     -O3 -g   -Wall            -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include    -I/epics/base/include/compiler/gcc -I/epics/base/include/os/Linux -I/epics/base/include        -c ../analogCtrlIOCMain.cpp
/bin/sh: 0: Illegal option --
/usr/bin/g++ -o analogCtrlIOC  -L/epics/analogCtrlIOC/lib/linux-arm -L/epics/base-3.15.6/lib/linux-arm -L/epics/support/PyDevice/lib/linux-arm -Wl,-rpath,/epics/analogCtrlIOC/lib/linux-arm -Wl,-rpath,/epics/base-3.15.6/lib/linux-arm -Wl,-rpath,/epics/support/PyDevice/lib/linux-arm           -rdynamic            analogCtrlIOC_registerRecordDeviceDriver.o analogCtrlIOCMain.o    -ldbRecStd -ldbCore -lca -lCom -lpydev  
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `Py_InitializeEx'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyLong_AsLong'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyBool_Type'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `_Py_TrueStruct'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyType_IsSubtype'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyUnicode_AsASCIIString'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyEval_RestoreThread'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyDict_SetItemString'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyList_Size'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyFloat_AsDouble'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `Py_Finalize'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `_Py_Dealloc'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyList_GetItem'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyErr_Clear'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `Py_IncRef'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyRun_StringFlags'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `Py_DecRef'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyDict_New'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyErr_SetString'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyBytes_AsString'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyExc_TypeError'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyEval_SaveThread'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `_Py_FalseStruct'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyEval_GetBuiltins'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyObject_IsTrue'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyModule_Create2'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyErr_Occurred'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyFloat_Type'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyArg_UnpackTuple'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyErr_Print'
/usr/bin/ld: /epics/support/PyDevice/lib/linux-arm/libpydev.so: undefined reference to `PyImport_AppendInittab'
collect2: error: ld returned 1 exit status
make[3]: *** [/epics/base/configure/RULES_BUILD:204: analogCtrlIOC] Error 1
make[3]: Leaving directory '/epics/analogCtrlIOC/analogCtrlIOCApp/src/O.linux-arm'
make[2]: *** [/epics/base/configure/RULES_ARCHS:58: install.linux-arm] Error 2
make[2]: Leaving directory '/epics/analogCtrlIOC/analogCtrlIOCApp/src'
make[1]: *** [/epics/base/configure/RULES_DIRS:84: src.install] Error 2
make[1]: Leaving directory '/epics/analogCtrlIOC/analogCtrlIOCApp'
make: *** [/epics/base/configure/RULES_DIRS:84: analogCtrlIOCApp.install] Error 2
root@daq-pi-002:/epics/analogCtrlIOC#
``` 
PYTHON_CONFIG is set for python3 

any thoughts?

Josh

Replies:
Re: PyDevice and an IOC Florian Feldbauer via Tech-talk

Navigate by Date:
Prev: RE: Need clarification on UDP Broadcasting to multiple IOCs on same PC Manoussakis, Adamandios via Tech-talk
Next: Re: How to put the contents of a file in a waveform record Shuei YAMADA via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
Navigate by Thread:
Prev: Re: Need clarification on UDP Broadcasting to multiple IOCs on same PC Ralph Lange via Tech-talk
Next: Re: PyDevice and an IOC Florian Feldbauer via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
ANJ, 11 Dec 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·