ralphlange / procServ

Wrapper to start arbitrary interactive commands in the background, with telnet or Unix domain socket access to stdin/stdout
GNU General Public License v3.0
23 stars 23 forks source link

modernize procServUtils #60

Closed kingspride closed 6 months ago

kingspride commented 1 year ago

this makes the python procServUtils compatible with newer Versions of python (>= 3.10) and pip, where calling setup.py directly to build the package, is deprecated. instead, one should use the python build module and a pyproject.toml configuration file. Here, one could choose a build backend, where I stayed with the "ol' reliable" setuptools.

This is required for OS'es like Ubuntu 22.04 which have python 3.10 installed out of the box. (see issue #57 )

I have corrected this and transferred the old setup.py into a pyproject.toml. Unfortunately, this comes with a caveat: It wont be compatible anymore with python < 3.3, since the build module also requires the venv module (introduced in 3.3)

I've set minimum python version to 3.7, since that version got its last update ever this june. Not too old, not too new...

so, in summary, procServUtils now requires:

anjohnson commented 1 year ago

The python3 version that comes with RHEL-7 is 3.6.8. If the minimum python version is somewhat arbitrary I would suggest allowing that one, since there are EPICS sites still using RHEL-7. They're unlikely to need the latest version of procServ, but for someone just trying it out it's annoying to have to go back and get an older version.

kingspride commented 1 year ago

I will have to test with RHEL 7 or at least with an old debian with python 3.6 then but only because it still has maintenance support until mid 2024....

ralphlange commented 1 year ago

Thanks for trying that!

Controls are often pretty conservative and forced to use versions between stable and ancient. (We're not using procServ, but RHEL 7 currently is running the major part of our systems and will be around for a while.)

kingspride commented 1 year ago

Ok, as it turns out, RHEL 7.9 with python 3.6.8 has a maximum version of setuptools 59.6.0. but, for it to be able to read the pyproject.toml, at least setuptools 61.0.0 is required: https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html

I think I can circumvent that with a setup.cfg file along the toml, and provide metadata there. I hope this works...

kingspride commented 1 year ago

... now also works under RHEL 7.9, taken you have python36 installed. setuptools lower than 61 will now use the setup.cfg while all above will use the pyproject.toml.

I've also increased the version number from 2.9.0 to 2.9.1, to make clear there is a significant change (no python 2.7 anymore) even though it only affects the Utils.

kingspride commented 6 months ago

Hi Ralph, will this change get pulled in eventually? I start to setup debian 12 machines which come with python 3.11 and are affected by this aswell ... I'd like to not switch to my forked repo and miss out on potential other improvements on procServ ;)

ralphlange commented 6 months ago

You mean I should do a round of integrate and merge? Sounds reasonable. Number of people have ... expressed interest in a new procServ release.

kingspride commented 6 months ago

would be cool :)

ralphlange commented 6 months ago

Hm... On my Debian 11.9 box (Python 3.9.2, setuptools 52.0.0), when I run

./configure --disable-doc --with-systemd-utils
make

I get

[...]
g++  -Wall -g   -o procServ procServ.o connectionItem.o acceptFactory.o clientFactory.o processFactory.o libtelnet.o -lutil 
(cd .; /usr/bin/python3 setup.py build \
--build-base /home/ralph/work/procServ/procServ/build)
/usr/bin/python3: can't open file '/home/ralph/work/procServ/procServ/setup.py': [Errno 2] No such file or directory
make: *** [Makefile:906: all-local] Error 2

Is that expected? What is the way out?

ralphlange commented 6 months ago

My bad.

autoreconf -fi

was missing.

ralphlange commented 6 months ago

Thank you!

ralphlange commented 6 months ago

I'm reverting the version update to 2.9.1, though.

There was never a release 2.9.0 (which is a minor level, i.e., adequate). No need to add steps while developing. (Unless we're going to 3.x)