Mercurial > p > roundup > code
annotate roundup/dist/command/bdist_rpm.py @ 5653:ba67e397f063
Fix string/bytes issues under python 3.
1) cgi/client.py: override cgi.FieldStorage's make_file so that file
is always created in binary/byte mode. This means that json (and
xml) are bytes not strings.
2) rest.py: try harder to find dicttoxml in roundup directory or on
sys.path. This just worked under python 2 but python 3 only
searches sys.path by default and does not search relative like
python 2.
3) rest.py: replace headers.getheader call removed from python 3 with
equivalent code.
4) rest.py: make value returned from dispatch into bytes not string.
5) test/caseinsensitivedict.py, test/test_CaseInsensitiveDict.py:
get code from stackoverflow that implements a case insensitive key
dict. So dict['foo'], dict['Foo'] are the same entry. Used for
looking up headers in mocked http rewuset header array.
6) test/rest_common.py: rework tests for etags and rest to properly
supply bytes to the called routines. Calls to s2b and b2s and use
of BytesIO and overriding make_file in cgi.FieldStorage to try to
make sure it works under python 3.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 17 Mar 2019 19:28:26 -0400 |
| parents | e233d7a66343 |
| children | 42bf0a707763 |
| rev | line source |
|---|---|
| 4068 | 1 # |
| 2 # Copyright (C) 2009 Stefan Seefeld | |
| 3 # All rights reserved. | |
| 4 # For license terms see the file COPYING.txt. | |
| 5 # | |
| 6 from distutils.command.bdist_rpm import bdist_rpm as base | |
| 7 from distutils.file_util import write_file | |
| 8 import os | |
| 9 | |
| 10 class bdist_rpm(base): | |
| 11 | |
| 12 def finalize_options(self): | |
| 13 base.finalize_options(self) | |
| 14 if self.install_script: | |
| 15 # install script is overridden. skip default | |
| 16 return | |
| 17 # install script option must be file name. | |
| 18 # create the file in rpm build directory. | |
| 19 install_script = os.path.join(self.rpm_base, "install.sh") | |
| 20 self.mkpath(self.rpm_base) | |
| 21 self.execute(write_file, (install_script, [ | |
| 22 ("%s setup.py install --root=$RPM_BUILD_ROOT " | |
| 23 "--record=ROUNDUP_FILES") % self.python, | |
| 24 # allow any additional extension for man pages | |
| 25 # (rpm may compress them to .gz or .bz2) | |
| 26 # man page here is any file | |
| 27 # with single-character extension | |
| 28 # in man directory | |
| 29 "sed -e 's,\(/man/.*\..\)$,\\1*,' " | |
| 30 "<ROUNDUP_FILES >INSTALLED_FILES", | |
| 31 ]), "writing '%s'" % install_script) | |
| 32 self.install_script = install_script | |
| 33 |
