Compatibility with Python 3.4

This change allows compilation under python 3.4. In addition:
 - spec file added for pyinstaller with required hidden imports
 - changed default pathes for compiled exe file
 - added requirements for ppms under windows compilation

Change-Id: I63d805a984d6a2c045df527303f46c8440994aad
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/22170
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Petr Cermak <cermak@mag.mff.cuni.cz>
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Tested-by: Petr Cermak <cermak@mag.mff.cuni.cz>
This commit is contained in:
cermak 2020-01-14 09:28:53 +01:00 committed by Markus Zolliker
parent 859bf5e1a2
commit 8466a159fe
6 changed files with 63 additions and 14 deletions

3
.gitignore vendored
View File

@ -19,3 +19,6 @@ doc/_build
.cache
.coverage
._*
# pyinstaller
dist/

View File

@ -8,3 +8,8 @@ psutil
python-daemon >=2.0
# for zmq interface
#pyzmq>=13.1.0
#for ppms on windows
# don't forget to run
# 'python Scripts/pywin32_postinstall.py -install'
# from elevated prompt after install
#pywin32

38
secop-server.spec Normal file
View File

@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['bin\\secop-server'],
pathex=['.'],
binaries=[],
datas=[],
hiddenimports=['secop.protocol', 'secop.protocol.dispatcher', 'secop.protocol.interface', 'secop.protocol.interface.tcp',
'secop_psi.ppmssim', 'secop_psi.ppmswindows', 'secop_psi.ppms'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='secop-server',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='secop-server')

View File

@ -30,11 +30,3 @@ from secop.params import Parameter, Command, Override
from secop.metaclass import Done
from secop.iohandler import IOHandler, IOHandlerBase
from secop.stringio import StringIO, HasIodev
try:
import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)
except ImportError:
pass

View File

@ -42,12 +42,21 @@ CONFIG = {
'logdir': os.path.join(repodir, 'log'),
'confdir': os.path.join(repodir, 'cfg'),
'basedir': repodir,
} if os.path.exists(os.path.join(repodir, '.git')) else {
'piddir': '/var/run/secop',
'logdir': '/var/log',
'confdir': '/etc/secop',
'basedir': repodir,
}
if path.splitext(sys.executable)[1] == ".exe":
CONFIG = {
'piddir': './',
'logdir': './log',
'confdir': './',
'basedir': path.dirname(sys.executable),
}
elif not os.path.exists(os.path.join(repodir, '.git')):
CONFIG = {
'piddir': '/var/run/secop',
'logdir': '/var/log',
'confdir': '/etc/secop',
'basedir': repodir,
}
unset_value = object()

View File

@ -162,7 +162,9 @@ class Parameter(Accessible):
def getProperties(self):
"""get also properties of datatype"""
return {**super().getProperties(), **self.datatype.getProperties()}
superProp = super().getProperties().copy()
superProp.update(self.datatype.getProperties())
return superProp
def setProperty(self, key, value):
"""set also properties of datatype"""