annotate roundup/dist/command/build.py @ 6747:d32d43e4a5ba

wsgi can cache tracker instance enabled by feature flag. Patch by Marcus Priesch caches a loaded tracker instance and reuse it for future client sessions. It is enabled by a feature flag in wsgi.py since it arrived during the 2.2.0 beta period. The provided wsgi.py is modified to enable it. Testing is run with flag enabled and disabled. Ralf Schlatterbeck and Marcus tested it on one of their larger more complex trackers and it sped up the response time to a client request by a factor of 3 (270ms down to about 80-85ms).
author John Rouillard <rouilj@ieee.org>
date Sat, 02 Jul 2022 14:04:00 -0400
parents 42bf0a707763
children 1acdc651133b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
1 #
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
2 # Copyright (C) 2009 Stefan Seefeld
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
3 # All rights reserved.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
4 # For license terms see the file COPYING.txt.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
5 #
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4516
diff changeset
6 from __future__ import print_function
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
7 from roundup import msgfmt
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
8 try:
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
9 from setuptool.command.install import install as base
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
10 raise ImportError
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
11 except ImportError:
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
12 from distutils.command.build import build as base
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
13 import os
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
14 from glob import glob
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
15
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
16 def list_message_files(suffix=".po"):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
17 """Return list of all found message files and their intallation paths"""
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
18 _files = glob("locale/*" + suffix)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
19 _list = []
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
20 for _file in _files:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
21 # basename (without extension) is a locale name
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
22 _locale = os.path.splitext(os.path.basename(_file))[0]
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
23 _list.append((_file, os.path.join(
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
24 "share", "locale", _locale, "LC_MESSAGES", "roundup.mo")))
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
25 return _list
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
26
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
27 def check_manifest():
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
28 """Check that the files listed in the MANIFEST are present when the
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
29 source is unpacked.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
30 """
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
31 manifest_file = 'roundup.egg-info/SOURCES.txt'
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
32 try:
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
33 f=open(manifest_file)
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
34 except:
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
35 print('\n*** SOURCE WARNING: The MANIFEST file "%s" is missing!' % manifest_file)
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
36 return
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
37 try:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
38 manifest = [l.strip() for l in f.readlines()]
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
39 finally:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
40 f.close()
4394
d4cd0a264098 fixed reporting of source missing warnings
Richard Jones <richard@users.sourceforge.net>
parents: 4068
diff changeset
41 err = set([line for line in manifest if not os.path.exists(line)])
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
42 # ignore auto-generated files
4394
d4cd0a264098 fixed reporting of source missing warnings
Richard Jones <richard@users.sourceforge.net>
parents: 4068
diff changeset
43 err = err - set(['roundup-admin', 'roundup-demo', 'roundup-gettext',
d4cd0a264098 fixed reporting of source missing warnings
Richard Jones <richard@users.sourceforge.net>
parents: 4068
diff changeset
44 'roundup-mailgw', 'roundup-server', 'roundup-xmlrpc-server'])
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
45 if err:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
46 n = len(manifest)
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4516
diff changeset
47 print('\n*** SOURCE WARNING: There are files missing (%d/%d found)!'%(
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4516
diff changeset
48 n-len(err), n))
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4516
diff changeset
49 print('Missing:', '\nMissing: '.join(err))
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
50
4516
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
51 def build_message_files(command):
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
52 """For each locale/*.po, build .mo file in target locale directory"""
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
53 for (_src, _dst) in list_message_files():
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
54 _build_dst = os.path.join("build", _dst)
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
55 command.mkpath(os.path.dirname(_build_dst))
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
56 command.announce("Compiling %s -> %s" % (_src, _build_dst))
5450
f2fade4552c5 replaced msgfmt.py with latest version supporting Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5376
diff changeset
57 mo = msgfmt.Msgfmt(_src).get()
f2fade4552c5 replaced msgfmt.py with latest version supporting Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5376
diff changeset
58 open(_build_dst, 'wb').write(mo)
4516
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
59
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
60
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
61 class build(base):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
62
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
63 def run(self):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
64 check_manifest()
4516
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
65 build_message_files(self)
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
66 base.run(self)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
67

Roundup Issue Tracker: http://roundup-tracker.org/