diff --git a/bin/cfg-editor b/bin/secop-cfg-editor similarity index 100% rename from bin/cfg-editor rename to bin/secop-cfg-editor diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile index 90b7807..44b54a5 100644 --- a/ci/Jenkinsfile +++ b/ci/Jenkinsfile @@ -43,7 +43,7 @@ git diff HEAD~1... --name-only --diff-filter=ARCM -- \\*.py pip install -r requirements-dev.txt pip install -r requirements.txt pip install isort pylint -python setup.py develop +python3 setup.py develop export PYTHONIOENCODING=utf8 echo "$changedFiles" @@ -112,7 +112,7 @@ addopts = --junit-xml=pytest.xml --junit-prefix=''' + pyver . /home/jenkins/secopvenv/bin/activate pip install -r requirements-dev.txt pip install -r requirements.txt -python setup.py develop +python3 setup.py develop make test ''' verifyresult.put(pyver, 1) @@ -143,7 +143,7 @@ def run_docs() { . /home/jenkins/secopvenv/bin/activate pip install -r requirements-dev.txt pip install -r requirements.txt - python setup.py develop + python3 setup.py develop ''' } diff --git a/debian/control b/debian/control index b948afd..114f274 100644 --- a/debian/control +++ b/debian/control @@ -1,41 +1,74 @@ Source: secop-core Section: misc -Priority: extra +Priority: optional Maintainer: Enrico Faulhaber Build-Depends: debhelper (>= 9.0.0), + dh-python, git, - python (>= 2.7), - python-setuptools, - python-sip-dev, - python-qt4-dev, - python-qt4 -Standards-Version: 3.9.3 + python3, + python3-setuptools, + python3-sip-dev, + python3-pyqt5 +Standards-Version: 4.3.0 Package: secop-core Architecture: all -Depends: python (>= 2.7), - python-setuptools, - python-numpy, - python-psutil (>= 0.4), - python-pytango, - python-mlzlog, +Depends: python (>= 3.6), + ${misc:Depends}, + ${python3:Depends}, + python3-setuptools, + python3-numpy, + python3-psutil (>= 0.4), + python3-mlzlog, markdown, - python-daemon, - python-pytest, - python-qt4 -Description: SECoP Playground core system + python3-daemon, + python3-pytest +Description: Frappy SECoP core system + contains the core server and client libraries and the server binary + as well as the systemd integration + +Package: secop-gui +Architecture: all +Depends: secop-core, + ${misc:Depends}, + ${python3:Depends}, + python3-pyqt (>=4) +Description: Frappy SECoP gui client + cfgtool + contains the GUI client and the configurator Package: secop-demo Architecture: all -Depends: secop-core +Depends: secop-core, + ${misc:Depends}, + ${python3:Depends} Description: SECoP demo files + for demonstration purposes +Recommends: secop-gui Package: secop-ess Architecture: all -Depends: secop-core +Depends: secop-core, + ${misc:Depends}, + ${python3:Depends} Description: SECoP ess files + Modules specific for ESS (http://esss.se) +Recommends: secop-gui Package: secop-mlz Architecture: all -Depends: secop-core +Depends: secop-core, + ${misc:Depends}, + ${python3:Depends}, + python-pytango (>=9) Description: SECoP mlz files + Modules specific for MLZ (http://mlz-garching.de) +Recommends: secop-gui + +Package: secop-psi +Architecture: all +Depends: secop-core, + ${misc:Depends}, + ${python3:Depends} +Description: SECoP psi files + Modules specific for PSI (http://psi.ch) +Recommends: secop-gui diff --git a/debian/copyright b/debian/copyright index 82f5c43..3e93f3f 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,13 +1,13 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: playground +Upstream-Name: frappy Source: http://forge.frm2.tum.de/cgit/cgit.cgi/frm2/sine2020/secop/playground.git Files: * -Copyright: 2016-2017 by the SECOP contributors (see AUTHORS) +Copyright: 2016-2019 by the FRAPPY-SECOP contributors (see AUTHORS) License: GPL-2 Files: debian/* -Copyright: 2015-2017 Enrico Faulhaber +Copyright: 2015-2019 Enrico Faulhaber License: GPL-2 License: GPL-2 diff --git a/debian/rules b/debian/rules index e9ba1d2..b6ff8dc 100755 --- a/debian/rules +++ b/debian/rules @@ -2,20 +2,42 @@ # -*- makefile -*- # Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 +export DH_VERBOSE=1 -DEBPYTHON_DEFAULT=2.7 -DEBPYTHON_SUPPORTED=2.7 +DEBPYTHON_DEFAULT=3.6 +DEBPYTHON_SUPPORTED=3.6 export DEBPYTHON_DEFAULT DEBPYTHON_SUPPORTED override_dh_install: - dh_install --list-missing + @find debian/tmp -name '*.pyc' -exec rm \{\} \; + @find debian/tmp -type d -name '__pycache__' | xargs rmdir -override_dh_installinit: - if [ "$$(lsb_release -s -c)" = "wheezy" ] ; then \ - dh_installinit --onlyscripts --name=secop-server --no-start; \ - fi + @echo "regen debian/secop-core.install" + @echo "usr/bin/secop-server" > debian/secop-core.install + @echo "usr/bin/secop-console" >> debian/secop-core.install + @echo "etc/init.d/secop-server" >> debian/secop-core.install + @(cd debian/tmp; find . -name '*.py'| grep -v gui|grep /secop/; \ + find . | grep egg-info; \ + find . | grep RELEASE-VERSION; \ + find ./lib; \ + find ./var ) | \ + while read f;do echo $${f#./};done | cat >> debian/secop-core.install + + @echo "regen debian/secop-gui.install" + @echo "usr/bin/secop-gui" > debian/secop-gui.install + @echo "usr/bin/secop-cfg-editor" >> debian/secop-gui.install + @(cd debian/tmp; find . |grep gui|grep /secop/) | \ + while read f;do echo $${f#./};done | cat >> debian/secop-gui.install + + @for facility in demo ess mlz psi;do \ + echo "regen debian/secop-$${facility}.install"; \ + (cd debian/tmp; find . -name '*.py'|grep /secop_$${facility}/) | \ + while read f;do echo $${f#./};done | cat > debian/secop-$${facility}.install; \ + done + + dh_install -i -O--buildsystem=pybuild + dh_missing --fail-missing %: - dh $@ --with python2 --buildsystem=python_distutils + dh $@ --with python3 --buildsystem=pybuild diff --git a/debian/secop-core.install b/debian/secop-core.install index d497ddf..6b62aa0 100644 --- a/debian/secop-core.install +++ b/debian/secop-core.install @@ -1,3 +1,48 @@ -usr/lib/python2.7/dist-packages/secop -usr/bin -etc/init.d +usr/bin/secop-server +usr/bin/secop-console +etc/init.d/secop-server +usr/lib/python3.7/dist-packages/secop/errors.py +usr/lib/python3.7/dist-packages/secop/modules.py +usr/lib/python3.7/dist-packages/secop/features.py +usr/lib/python3.7/dist-packages/secop/basic_validators.py +usr/lib/python3.7/dist-packages/secop/poller.py +usr/lib/python3.7/dist-packages/secop/datatypes.py +usr/lib/python3.7/dist-packages/secop/paths.py +usr/lib/python3.7/dist-packages/secop/metaclass.py +usr/lib/python3.7/dist-packages/secop/parse.py +usr/lib/python3.7/dist-packages/secop/simulation.py +usr/lib/python3.7/dist-packages/secop/__init__.py +usr/lib/python3.7/dist-packages/secop/params.py +usr/lib/python3.7/dist-packages/secop/version.py +usr/lib/python3.7/dist-packages/secop/client/baseclient.py +usr/lib/python3.7/dist-packages/secop/client/__init__.py +usr/lib/python3.7/dist-packages/secop/properties.py +usr/lib/python3.7/dist-packages/secop/protocol/__init__.py +usr/lib/python3.7/dist-packages/secop/protocol/messages.py +usr/lib/python3.7/dist-packages/secop/protocol/dispatcher.py +usr/lib/python3.7/dist-packages/secop/protocol/interface/zmq.py +usr/lib/python3.7/dist-packages/secop/protocol/interface/tcp.py +usr/lib/python3.7/dist-packages/secop/protocol/interface/__init__.py +usr/lib/python3.7/dist-packages/secop/server.py +usr/lib/python3.7/dist-packages/secop/lib/pidfile.py +usr/lib/python3.7/dist-packages/secop/lib/parsing.py +usr/lib/python3.7/dist-packages/secop/lib/sequence.py +usr/lib/python3.7/dist-packages/secop/lib/__init__.py +usr/lib/python3.7/dist-packages/secop/lib/enum.py +usr/lib/python3.7/dist-packages/secop_core-0.8.1.post7+g697c.egg-info +usr/lib/python3.7/dist-packages/secop_core-0.8.1.post7+g697c.egg-info/PKG-INFO +usr/lib/python3.7/dist-packages/secop_core-0.8.1.post7+g697c.egg-info/dependency_links.txt +usr/lib/python3.7/dist-packages/secop_core-0.8.1.post7+g697c.egg-info/top_level.txt +usr/lib/python3.7/dist-packages/secop/RELEASE-VERSION +lib +lib/systemd +lib/systemd/system +lib/systemd/system/secop@.service +lib/systemd/system/secop.target +lib/systemd/system-generators +lib/systemd/system-generators/secop-generator +var +var/log +var/log/secop +var/run +var/run/secop diff --git a/debian/secop-demo.install b/debian/secop-demo.install index 7297c26..cd5a898 100644 --- a/debian/secop-demo.install +++ b/debian/secop-demo.install @@ -1 +1,4 @@ -usr/lib/python2.7/dist-packages/secop_demo +usr/lib/python3.7/dist-packages/secop_demo/modules.py +usr/lib/python3.7/dist-packages/secop_demo/cryo.py +usr/lib/python3.7/dist-packages/secop_demo/test.py +usr/lib/python3.7/dist-packages/secop_demo/__init__.py diff --git a/debian/secop-ess.install b/debian/secop-ess.install index a695fde..6fc6087 100644 --- a/debian/secop-ess.install +++ b/debian/secop-ess.install @@ -1 +1,2 @@ -usr/lib/python2.7/dist-packages/secop_ess +usr/lib/python3.7/dist-packages/secop_ess/__init__.py +usr/lib/python3.7/dist-packages/secop_ess/epics.py diff --git a/debian/secop-gui.install b/debian/secop-gui.install new file mode 100644 index 0000000..6e8ee5a --- /dev/null +++ b/debian/secop-gui.install @@ -0,0 +1,34 @@ +usr/bin/secop-gui +usr/bin/secop-cfg-editor +usr/lib/python3.7/dist-packages/secop/gui +usr/lib/python3.7/dist-packages/secop/gui/nodectrl.py +usr/lib/python3.7/dist-packages/secop/gui/icon_rc_qt4.py +usr/lib/python3.7/dist-packages/secop/gui/params +usr/lib/python3.7/dist-packages/secop/gui/params/__init__.py +usr/lib/python3.7/dist-packages/secop/gui/paramview.py +usr/lib/python3.7/dist-packages/secop/gui/qt.py +usr/lib/python3.7/dist-packages/secop/gui/icon_rc_qt5.py +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor/utils.py +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor/config_file.py +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor/tree_widget_item.py +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor/mainwindow.py +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor/__init__.py +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor/widgets.py +usr/lib/python3.7/dist-packages/secop/gui/cfg_editor/node_display.py +usr/lib/python3.7/dist-packages/secop/gui/modulectrl.py +usr/lib/python3.7/dist-packages/secop/gui/mainwindow.py +usr/lib/python3.7/dist-packages/secop/gui/__init__.py +usr/lib/python3.7/dist-packages/secop/gui/valuewidgets.py +usr/lib/python3.7/dist-packages/secop/gui/miniplot.py +usr/lib/python3.7/dist-packages/secop/gui/util.py +usr/lib/python3.7/dist-packages/secop/gui/ui +usr/lib/python3.7/dist-packages/secop/gui/ui/parambuttons.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/modulectrl.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/nodectrl.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/modulebuttons.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/parambuttons_select.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/cmddialog.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/cmdbuttons.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/mainwindow.ui +usr/lib/python3.7/dist-packages/secop/gui/ui/paramview.ui diff --git a/debian/secop-mlz.install b/debian/secop-mlz.install index b301779..7d0859b 100644 --- a/debian/secop-mlz.install +++ b/debian/secop-mlz.install @@ -1 +1,3 @@ -usr/lib/python2.7/dist-packages/secop_mlz +usr/lib/python3.7/dist-packages/secop_mlz/amagnet.py +usr/lib/python3.7/dist-packages/secop_mlz/__init__.py +usr/lib/python3.7/dist-packages/secop_mlz/entangle.py diff --git a/debian/secop-psi.install b/debian/secop-psi.install new file mode 100644 index 0000000..2b8c974 --- /dev/null +++ b/debian/secop-psi.install @@ -0,0 +1 @@ +usr/lib/python3.7/dist-packages/secop_psi/__init__.py diff --git a/etc/secop-generator b/etc/secop-generator index 4362ed0..dcf678c 100755 --- a/etc/secop-generator +++ b/etc/secop-generator @@ -1,5 +1,4 @@ - -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # ***************************************************************************** # Copyright (c) 2015-2019 by the authors, see LICENSE diff --git a/etc/secop-server b/etc/secop-server index cdaaa19..9c020d0 100755 --- a/etc/secop-server +++ b/etc/secop-server @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- ### BEGIN INIT INFO # Provides: secop-server diff --git a/secop/version.py b/secop/version.py index 3a43f9b..edee704 100644 --- a/secop/version.py +++ b/secop/version.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # ***************************************************************************** -# MLZ library of Tango servers -# Copyright (c) 2015-2017 by the authors, see LICENSE +# Copyright (c) 2015-2019 by the authors, see LICENSE # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -20,6 +19,8 @@ # Module authors: # Douglas Creager # This file is placed into the public domain. +# fixes for PEP440 by: +# Enrico Faulhaber # # ***************************************************************************** @@ -40,7 +41,12 @@ def get_git_version(abbrev=4, cwd=None): 'describe', '--abbrev=%d' % abbrev], stdout=PIPE, stderr=PIPE) stdout, _stderr = p.communicate() - return stdout.strip().decode('utf-8', 'ignore') + version = stdout.strip().decode('utf-8', 'ignore') + # mangle version to comply with pep440 + if version.count('-'): + version, patchcount, githash = version.split('-') + version += '.post%s+%s' %(patchcount, githash) + return version except Exception: return None diff --git a/secop_psi/__init__.py b/secop_psi/__init__.py new file mode 100644 index 0000000..e69de29