144 lines
4.9 KiB
Python
144 lines
4.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (c) 2014 Virtual Cable S.L.
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without modification,
|
|
# are permitted provided that the following conditions are met:
|
|
#
|
|
# * Redistributions of source code must retain the above copyright notice,
|
|
# this list of conditions and the following disclaimer.
|
|
# * Redistributions in binary form must reproduce the above copyright notice,
|
|
# this list of conditions and the following disclaimer in the documentation
|
|
# and/or other materials provided with the distribution.
|
|
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
|
|
# may be used to endorse or promote products derived from this software
|
|
# without specific prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
"""
|
|
@author: Adolfo Gómez, dkmaster at dkmon dot com
|
|
@author: Ramón M. Gómez, ramongomez at us dot es
|
|
"""
|
|
|
|
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them
|
|
try:
|
|
# py2exe 0.6.4 introduced a replacement modulefinder.
|
|
# This means we have to add package paths there, not to the built-in
|
|
# one. If this new modulefinder gets integrated into Python, then
|
|
# we might be able to revert this some day.
|
|
# if this doesn't work, try import modulefinder
|
|
try:
|
|
import py2exe.mf as modulefinder
|
|
except ImportError:
|
|
import modulefinder
|
|
import win32com
|
|
import sys
|
|
for p in win32com.__path__[1:]:
|
|
modulefinder.AddPackagePath("win32com", p)
|
|
for extra in ["win32com.shell"]: # ,"win32com.mapi"
|
|
__import__(extra)
|
|
m = sys.modules[extra]
|
|
for p in m.__path__[1:]:
|
|
modulefinder.AddPackagePath(extra, p)
|
|
except ImportError:
|
|
# no build path setup, no worries.
|
|
pass
|
|
|
|
import os
|
|
from distutils.core import setup
|
|
|
|
import sys
|
|
|
|
# Reading version file:
|
|
try:
|
|
with open('VERSION', 'r') as v:
|
|
VERSION = v.read().split()
|
|
except IOError:
|
|
VERSION = '1.1.0'
|
|
|
|
sys.argv.append('py2exe')
|
|
|
|
|
|
def get_requests_cert_file():
|
|
"""Add Python requests or certifi .pem file for installers."""
|
|
import requests
|
|
f = os.path.join(os.path.dirname(requests.__file__), 'cacert.pem')
|
|
if not os.path.exists(f):
|
|
import certifi
|
|
f = os.path.join(os.path.dirname(certifi.__file__), 'cacert.pem')
|
|
return f
|
|
|
|
|
|
class Target:
|
|
|
|
def __init__(self, **kw):
|
|
self.__dict__.update(kw)
|
|
# for the versioninfo resources
|
|
self.version = VERSION
|
|
self.name = 'OGAgentService'
|
|
self.description = 'OpenGnsys Agent Service'
|
|
self.author = 'Adolfo Gomez'
|
|
self.url = 'https://opengnsys.es/'
|
|
self.company_name = "OpenGnsys Project"
|
|
self.copyright = "(c) 2014 VirtualCable S.L.U."
|
|
self.name = "OpenGnsys Agent"
|
|
|
|
# Now you need to pass arguments to setup
|
|
# windows is a list of scripts that have their own UI and
|
|
# thus don't need to run in a console.
|
|
|
|
|
|
udsservice = Target(
|
|
description='OpenGnsys Agent Service',
|
|
modules=['opengnsys.windows.OGAgentService'],
|
|
icon_resources=[(0, 'img\\oga.ico'), (1, 'img\\oga.ico')],
|
|
cmdline_style='pywin32'
|
|
)
|
|
|
|
# Some test_modules are hidden to py2exe by six, we ensure that they appear on "includes"
|
|
HIDDEN_BY_SIX = ['SocketServer', 'SimpleHTTPServer', 'urllib']
|
|
|
|
setup(
|
|
windows=[
|
|
{
|
|
'script': 'OGAgentUser.py',
|
|
'icon_resources': [(0, 'img\\oga.ico'), (1, 'img\\oga.ico')]
|
|
},
|
|
],
|
|
console=[
|
|
{
|
|
'script': 'OGAServiceHelper.py'
|
|
}
|
|
],
|
|
service=[udsservice],
|
|
data_files=[('', [get_requests_cert_file()]), ('cfg', ['cfg/ogagent.cfg', 'cfg/ogclient.cfg'])],
|
|
options={
|
|
'py2exe': {
|
|
'bundle_files': 3,
|
|
'compressed': True,
|
|
'optimize': 2,
|
|
'includes': ['sip', 'PyQt4', 'win32com.shell', 'requests', 'encodings', 'encodings.utf_8'] + HIDDEN_BY_SIX,
|
|
'excludes': ['doctest', 'unittest'],
|
|
'dll_excludes': ['msvcp90.dll'],
|
|
'dist_dir': '..\\bin',
|
|
}
|
|
},
|
|
name='OpenGnsys Agent',
|
|
version=VERSION,
|
|
description='OpenGnsys Agent',
|
|
author='Adolfo Gomez',
|
|
author_email='agomez@virtualcable.es',
|
|
zipfile='OGAgent.zip', requires=['six']
|
|
)
|