From f6e7721dadd7043b5ea8f078596455c52a819e34 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Mon, 13 Jan 2020 15:33:21 -0500 Subject: [PATCH] Remove tahoesvc and pkgresutil --- .../test/test_python2_regressions.py | 1 - src/allmydata/util/pkgresutil.py | 46 ----- src/allmydata/windows/tahoesvc.py | 177 ------------------ 3 files changed, 224 deletions(-) delete mode 100644 src/allmydata/util/pkgresutil.py delete mode 100644 src/allmydata/windows/tahoesvc.py diff --git a/src/allmydata/test/test_python2_regressions.py b/src/allmydata/test/test_python2_regressions.py index 989f5e883..565e3ad80 100644 --- a/src/allmydata/test/test_python2_regressions.py +++ b/src/allmydata/test/test_python2_regressions.py @@ -19,7 +19,6 @@ BLACKLIST = { "allmydata.watchdog.inotify", "allmydata.windows.inotify", "allmydata.windows.registry", - "allmydata.windows.tahoesvc", } diff --git a/src/allmydata/util/pkgresutil.py b/src/allmydata/util/pkgresutil.py deleted file mode 100644 index bb1d985c6..000000000 --- a/src/allmydata/util/pkgresutil.py +++ /dev/null @@ -1,46 +0,0 @@ - -def install(): - """ - This installs a hook into setuptools' pkg_resources infrastructure, so that resource - files can be found in files relative to the runnin executable, in addition to the - usual egg and source lookup mechanisms. This overrides the ZipProvider, since that - is the lookup mechanism triggered within pkg_resources when running code out of a - py2exe or py2app build's library.zip. - """ - import os, sys - import pkg_resources, zipimport - - platform_libdirs = { - 'darwin': '../Resources/pkg_resources', - } - exedir = os.path.dirname(sys.executable) - libdir = platform_libdirs.get(sys.platform, 'pkg_resources') - - class Provider(pkg_resources.ZipProvider): - - def __init__(self, module): - self._module_name = module.__name__ - pkg_resources.ZipProvider.__init__(self, module) - - def get_resource_filename(self, manager, resource_name): - #print 'get_resource_filename(%s, %s)' % (manager, resource_name) - path = [exedir, libdir] + self._module_name.split('.') + [resource_name] - localfile = os.path.join(*path) - #print ' checking(%s)' % (localfile,) - if os.path.exists(localfile): - #print 'found locally' - return localfile - else: - try: - ret = pkg_resources.ZipProvider.get_resource_filename(self, manager, resource_name) - #print 'returning %s' % (ret,) - return ret - except NotImplementedError: - #print 'get_resource_filename(%s,%s): not found' % (self._module_name, resource_name) - #import traceback - #traceback.print_exc() - return '' - - pkg_resources.register_loader_type(zipimport.zipimporter, Provider) - - diff --git a/src/allmydata/windows/tahoesvc.py b/src/allmydata/windows/tahoesvc.py deleted file mode 100644 index efaa439d5..000000000 --- a/src/allmydata/windows/tahoesvc.py +++ /dev/null @@ -1,177 +0,0 @@ -import sys -reload(sys) -sys.setdefaultencoding("utf-8") - -import win32serviceutil -import win32service -import win32event -import win32evtlogutil - -import os -import thread -import time -import traceback - -# this logging should go away once service startup is considered debugged. -logfilehandle = file('c:\\tahoe_service.log', 'ab+') -def logmsg(msg): - logfilehandle.write("%s: %s\r\n" % (time.strftime('%Y%m%d_%H%M%S'), msg)) - logfilehandle.flush() -logmsg('service loaded') - -# -# Now with some bootstrap util functions in place, let's try and init things: -try: - from allmydata.util import pkgresutil # override pkg_resources zip provider for py2exe deployment - pkgresutil.install() # this is done before nevow is imported - - logmsg('loading base dir') - from allmydata.windows import registry - basedir = registry.get_base_dir_path() - logmsg("got base dir (%s)" % (basedir,)) - if not basedir: - regpth = "%s : %s " % (registry._AMD_KEY, registry._BDIR_KEY) - raise RuntimeError('"%s" not set in registry' % (regpth,)) - os.chdir(basedir) - logmsg("chdir(%s)" % (basedir,)) -except: - logmsg("exception") - traceback.print_exc(None, logfilehandle) - logfilehandle.flush() - logfilehandle.close() - raise - -class Tahoe(win32serviceutil.ServiceFramework): - _svc_name_ = "Tahoe" - _svc_display_name_ = "Tahoe-LAFS Node" - def __init__(self, args): - logmsg("init") - try: - # The exe-file has messages for the Event Log Viewer. - # Register the exe-file as event source. - # - # Probably it would be better if this is done at installation time, - # so that it also could be removed if the service is uninstalled. - # Unfortunately it cannot be done in the 'if __name__ == "__main__"' - # block below, because the 'frozen' exe-file does not run this code. - # - logmsg("service start") - win32evtlogutil.AddSourceToRegistry(self._svc_display_name_, - sys.executable, - "Application") - win32serviceutil.ServiceFramework.__init__(self, args) - self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) - except: - try: - logmsg("exception") - traceback.print_exc(None, logfilehandle) - logfilehandle.flush() - logfilehandle.close() - except: - os.abort() - - def SvcStop(self): - logmsg("service stop") - self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) - win32event.SetEvent(self.hWaitStop) - - def SvcDoRun(self): - try: - logmsg("service run") - import servicemanager - # Write a 'started' event to the event log... - win32evtlogutil.ReportEvent(self._svc_display_name_, - servicemanager.PYS_SERVICE_STARTED, - 0, # category - servicemanager.EVENTLOG_INFORMATION_TYPE, - (self._svc_name_, '')) - - reactor_type = registry.get_registry_value('reactor') - if reactor_type == 'iocp': - from twisted.internet import iocpreactor - iocpreactor.install() - else: - from twisted.internet import selectreactor - selectreactor.install() - from twisted.internet import reactor - - if os.path.exists('DISABLE_STARTUP'): - logmsg("DISABLE_STARTUP exists: exiting") - else: - logmsg("runing reactorthread") - - # launch main thread... - thread.start_new_thread(self.launch_node, ()) - - # ...and block until service stop request - win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE) - - logmsg("wake up") - - reactor.callFromThread(reactor.stop) - - time.sleep(2) # give the node/reactor a chance to cleanup - - # and write a 'stopped' event to the event log. - win32evtlogutil.ReportEvent(self._svc_display_name_, - servicemanager.PYS_SERVICE_STOPPED, - 0, # category - servicemanager.EVENTLOG_INFORMATION_TYPE, - (self._svc_name_, '')) - except: - try: - logmsg("exception") - traceback.print_exc(None, logfilehandle) - logfilehandle.flush() - logfilehandle.close() - except: - os.abort() - - def launch_node(self): - try: - logmsg("main thread startup") - - # import dependencies so that py2exe finds them - # nevow requires all these for its voodoo module import time adaptor registrations - from nevow import accessors, appserver, static, rend, url, util, query, i18n, flat - from nevow import guard, stan, testutil, context - from nevow.flat import flatmdom, flatstan, twist - from formless import webform, processors, annotate, iformless - from decimal import Decimal - - import allmydata.web - - # junk to appease pyflakes's outrage at py2exe's needs - [ - accessors, appserver, static, rend, url, util, query, i18n, flat, guard, stan, testutil, - context, flatmdom, flatstan, twist, webform, processors, annotate, iformless, Decimal, - allmydata, - ] - - from twisted.internet import reactor - from twisted.python import log, logfile - from allmydata import client - - # set up twisted logging. this will become part of the node rsn. - logdir = os.path.join(basedir, 'logs') - if not os.path.exists(logdir): - os.makedirs(logdir) - lf = logfile.LogFile('tahoesvc.log', logdir) - log.startLogging(lf) - - # run the node itself - c = client.Client(basedir) - reactor.callLater(0, c.startService) # after reactor startup - reactor.run(installSignalHandlers=False) - - logmsg("main thread shutdown") - except: - logmsg("exception") - traceback.print_exc(None, logfilehandle) - logfilehandle.flush() - os.abort() - -if __name__ == '__main__': - logmsg("service main") - win32serviceutil.HandleCommandLine(Tahoe) -