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 .cache
.coverage .coverage
._* ._*
# pyinstaller
dist/

View File

@ -8,3 +8,8 @@ psutil
python-daemon >=2.0 python-daemon >=2.0
# for zmq interface # for zmq interface
#pyzmq>=13.1.0 #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.metaclass import Done
from secop.iohandler import IOHandler, IOHandlerBase from secop.iohandler import IOHandler, IOHandlerBase
from secop.stringio import StringIO, HasIodev 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'), 'logdir': os.path.join(repodir, 'log'),
'confdir': os.path.join(repodir, 'cfg'), 'confdir': os.path.join(repodir, 'cfg'),
'basedir': repodir, 'basedir': repodir,
} if os.path.exists(os.path.join(repodir, '.git')) else { }
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', 'piddir': '/var/run/secop',
'logdir': '/var/log', 'logdir': '/var/log',
'confdir': '/etc/secop', 'confdir': '/etc/secop',
'basedir': repodir, 'basedir': repodir,
} }
unset_value = object() unset_value = object()

View File

@ -162,7 +162,9 @@ class Parameter(Accessible):
def getProperties(self): def getProperties(self):
"""get also properties of datatype""" """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): def setProperty(self, key, value):
"""set also properties of datatype""" """set also properties of datatype"""