Troy Curtis, Jr <troycurtisjr@gmail.com> (troycurtisjr)
Found |
Patch |
r862063 |
r1850913,
r1850520,
r1850519,
r1850011,
r1849804,
r1849786,
r1849784,
r1849778,
r1849037,
r1849003,
r1825316,
r1824410,
r1823802,
r1822739,
r1822736,
r1822729,
r1822728,
r1822488,
r1822486,
r1822485,
r1820032,
r1819712,
r1819566,
r1819565,
r1819562,
r1819561,
r1819498,
r1819460,
r1819452,
r1819441,
r1819397,
r1819396,
r1819394,
r1819386,
r1819312,
r1819203,
r1819202,
r1819112,
r1819110,
r1818995,
r1818994,
r1816596,
r1816097,
r1816092,
r1815770,
r1815768,
r1814455,
r1814454,
r1814387,
r1814386,
r1813774,
r1813700,
r1813665,
r1813663,
r1813662,
r1813660,
r1813114,
r871532,
r871091,
r870934,
r870827,
r867580 |
r1850913 | troycurtisjr | 2019-01-09 21:29:53 -0600 (Wed, 09 Jan 2019)
* staging/docs/community-guide/releasing.part.html
(tarball-signing): Fix public key list url.
r1850520 | troycurtisjr | 2019-01-05 18:49:25 -0600 (Sat, 05 Jan 2019)
On branch swig-py3: Update BRANCH-README.
* BRANCH-README
Remove resolved TODO items for better swig build error messages and returning
bytes versus str.
r1850519 | troycurtisjr | 2019-01-05 18:42:27 -0600 (Sat, 05 Jan 2019)
On branch swig-py3: Improve error messages for swig language builds.
* Makefile.in
(SWIG_PY_ERRMSG, SWIG_PL_ERRMSG, SWIG_RB_ERRMSG): New
* build/ac-macros/swig.m4
(SWIG_PY_ERRMSG, SWIG_PL_ERRMSG, SWIG_RB_ERRMSG): Set a meaningful error
message if the language binding is not configured for any reason, and clear
the error message if the configuration is successful.
* build/generator/gen_make.py
(Generator.write): Add 'name' and 'short_upper' to the ezt template data for
each swig language option.
* build/generator/templates/build-outputs.mk.ezt
(.swig_py_checked, .swig_pl_checked, .swig_rb_checked): New make targets.
(autogen-swig-py, autogen-swig-pl, autogen-swig-rb, swig-py, swig-pl, swig-rb):
Add corresponding swig_<lang>_checked dependency to top-level swig building
targets.
r1850011 | troycurtisjr | 2018-12-30 22:14:58 -0600 (Sun, 30 Dec 2018)
On branch swig-py3: Fix macro usage to distinguish py2 and py3 context.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
Include "swigutil_py3c.h" file before define SVN_SWIG_BYTES_FMT to use
IS_PY3 macro to switch py2 and py3 context.
(add_directory, add_file, apply_textdelta, change_file_prop,
close_file, parse_fn3_set_revision_property,
parse_fn3_set_node_property, svn_swig_py_notify_func,
svn_swig_py_notify_func, svn_swig_py_delta_path_driver_cb_func,
svn_swig_py_repos_authz_func, svn_swig_py_log_receiver,
svn_swig_py_client_blame_receiver_func,
svn_swig_py_changelist_receiver_func,
svn_swig_py_auth_simple_prompt_func,
svn_swig_py_config_auth_walk_func,
ra_callbacks_get_wc_prop, ra_callbacks_push_or_set_wc_prop,
ra_callbacks_invalidate_wc_props, svn_swig_py_commit_callback,
reporter_set_path, reporter_link_path,
wc_diff_callbacks2_file_changed_or_added,
wc_diff_callbacks2_file_deleted, wc_diff_callbacks2_dir_added,
wc_diff_callbacks2_dir_props_changed,
svn_swig_py_config_enumerator2):
Use IS_PY3 macro instead of comparison of PY_VERSION_HEX.
(add_directory, add_file, apply_textdelta, change_file_prop,
close_file, parse_fn3_set_revision_property,
parse_fn3_set_node_property, ra_callbacks_get_wc_prop,
ra_callbacks_push_or_set_wc_prop, ra_callbacks_invalidate_wc_props):
Enclose only format argument of Py_CallFunction or Py_CallMethod
with #if IS_PY3 #else #endif block.
Patch By: Yasuhito Futatsuki <futatuki@poem.co.jp>
r1849804 | troycurtisjr | 2018-12-27 13:01:00 -0600 (Thu, 27 Dec 2018)
On branch swig-py3: Revise encode/decode usage in swig-py unit test.
[in subversion/bindings/swig/python/tests]
* client.py (SubversionClientTestCase.test_update4): Don't encode os.path.sep
if it is already a bytes object.
* core.py (SubversionCoreTestCase.test_stream_write): Don't encode fname
if it is already a bytes object.
* delta.py (DeltaTestCase.testTxWindowHandler_stream_IF,
DeltaTestCase.testTxWindowHandler_Stream_IF): Don't encode fname if it
is already a bytes object.
* fs.py (SubversionFSTestCase.setUp): Don't encode self.tmpfile if it is
already a bytes object.
* trac/versioncontrol/svn_fs.py
Remove unnecessary variable IS_PY3 and therefore unnecessary import of
sys module.
(SubversionNode.__init__): Don't use IS_PY3 condition, just store a unicode
string in the exception object.
* utils.py (Temper.alloc_empty_dir, Temper.alloc_empty_repo): Ensure suffix
arg for tempfile.mkdtemp() is unicode (for py3 < 3.5).
Patch By: Yasuhito Futatsuki <futatuki@poem.co.jp>
r1849786 | troycurtisjr | 2018-12-26 22:16:43 -0600 (Wed, 26 Dec 2018)
On branch swig-py3: Fix tests after str to bytes API conversion.
* subversion/bindings/swig/python/tests/client.py
(SubversionClientTestCase.test_conflict,
SubversionClientTestCase.test_shelf)): Construct paths as bytes instead of
str.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(svn_swig_py_client_status_func): The path given to the callback should be
bytes instead of str for consistency with the rest of the API.
r1849784 | troycurtisjr | 2018-12-26 21:42:52 -0600 (Wed, 26 Dec 2018)
On branch swig-py3: Use bytes for all API string parameters.
Since many string like arguments in the API can contain arbitrary bytes, use the
Python Bytes interface in Python 3, while still using Str in Python 2, to ensure
full compatibility with all possible input data.
Build system change:
* build/ac-macros/swig.m4:
Add "-DPY3" option to SWIG_PY_OPTS for py3 build to define symbol to switch
typemap between py2 and py3.
Typemap changes:
* subversion/bindings/swig/core.i
(%typemap(argout) (char *buffer, apr_size_t *len):
Map buffer arg to Bytes insted of Str.
(%typemap(in) (const char *data, apr_size_t *len) ($*2_type temp):
Map data arg to Bytes instead of Str and pass Py_ssize_t variable as length
argment of PyBytes_AsStringAndSize for for explicit type conversion.
(%typemap(in) const void *value):
Map value arg to Bytes instead of Str for svn_auth_set_parameter().
* subversion/bindings/swig/include/svn_global.swg:
- Define SWIG_PYTHON_STRICT_BYTE_CHAR symbol for swig context for
Python3.
- Switch "in" type typemap for char *, char const *, char * const,
and char const * const "", to use parse parameter "y" for py3 and
"s" for py2.
* subversion/bindings/swig/include/svn_string.swg
(%typemap(argout) RET_STRING, %typemap(in) svn_stringbuf_t *,
%typemap(out) svn_stringbuf_t *, %typemap(in) const svn_string_t *,
%typemap(out) svn_string_t *, %typemap(argout) const char **OUTPUT):
Map args to Bytes instead of Str.
* subversion/bindings/swig/include/svn_swigcompat.swg
(%set_constant(name, value): Use PyDict_SetItem and PyBytes_FromString
instead of PyDict_SetItemString, for SWIG <= 1.3.27 (not tested).
* subversion/bindings/swig/include/svn_types.swg
(%typemap(in) const char *MAY_BE_NULL): Don't use "z" conversion
format and convert to Bytes if it is not NULL.
(%typemap(in) (const char *PTR, apr_size_t LEN): Use PyBytes_Check and
PyBytes_AsStringAndSize instead of PyStr_Check and PyStr_AsUTF8AndSize.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(make_string_from_ob(), make_svn_string_from_ob(),
svn_swig_py_make_file(), svn_swig_py_get_commit_log_func()):
Use PyBytes_Check and PyBytes_AsString instead of PyStr_Check and
PyStr_AsString.
(convert_hash()): Use Dict_SetItem and PyBytes_FromString instead of
DictItemString.
(convert_svn_string_t(), svn_swig_py_proparray_to_dict(),
ra_callbacks_get_wc_prop()):
Use PyBytes_AsStringAndSize instead of PyStr_AsUTF8AndSize.
(cstring_to_pystring(), convert_string(),
svn_swig_py_propinheriteditemarray_to_dict(),
svn_swig_py_proparray_to_dict(),
svn_swig_py_locationhash_to_dict(),
svn_swig_py_c_strings_to_list(),
svn_swig_py_changed_path_hash_to_dict(),
svn_swig_py_changed_path2_hash_to_dict(),
svn_swig_py_unwrap_string(),
svn_swig_py_array_to_list()): Use PyBytes_FromString instead of
PyStr_FromString.
(delete_entry(), add_directory(), open_directory(), change_dir_prop(),
add_file(), open_file(), apply_textdelta(), change_file_prop(),
close_file(), parse_fn3_uuid_record(), parse_fn3_set_revision_property(),
parse_fn3_set_node_property(), parse_fn3_delete_node_property(),
svn_swig_py_notify_func(), svn_swig_py_status_func(),
svn_swig_py_delta_path_driver_cb_func(), svn_swig_py_status_func2(),
svn_swig_py_fs_lock_callback(), svn_swig_py_repos_authz_func(),
svn_swig_py_repos_history_func(), svn_swig_py_proplist_receiver2(),
svn_swig_py_log_receiver(), svn_swig_py_info_receiver_func(),
svn_swig_py_client_blame_receiver_func(),
svn_swig_py_changelist_receiver_func(),
svn_swig_py_auth_gnome_keyring_unlock_prompt_func(),
svn_swig_py_auth_simple_prompt_func(),
svn_swig_py_auth_username_prompt_func(),
svn_swig_py_auth_ssl_server_trust_prompt_func(),
svn_swig_py_auth_ssl_client_cert_prompt_func(),
svn_swig_py_auth_ssl_client_cert_pw_prompt_func(),
svn_swig_py_config_auth_walk_func(), ra_callbacks_get_wc_prop(),
ra_callbacks_push_or_set_wc_prop(), ra_callbacks_invalidate_wc_props(),
svn_swig_py_commit_callback(), svn_swig_py_ra_file_rev_handler_func(),
svn_swig_py_ra_lock_callback(), reporter_set_path(),
reporter_delete_path(), reporter_link_path(),
wc_diff_callbacks2_file_changed_or_added(),
wc_diff_callbacks2_file_deleted(), wc_diff_callbacks2_dir_added(),
wc_diff_callbacks2_dir_deleted(),
wc_diff_callbacks2_dir_props_changed(),
svn_swig_py_config_enumerator2(),
svn_swig_py_config_section_enumerator2()): Use 's' for py2 and use 'y'
for py3 in argment format string.
(ra_callbacks_push_or_set_wc_prop()): Use PyBytes_FromStringAndSize
instead of PyStr_FromStringAndSize.
(ra_callbacks_get_client_string()): Use PyBytes_FromString instaed of
PyStr_AsString.
* subversion/bindings/swig/svn_client.i
(%typemap(argout) apr_array_header_t **props):
Use PyBytes_FromStringAndSize() instead of PyStr_FromStringAndSize.
Helper python code changes:
* subversion/bindings/swig/python/svn/core.py
(svn_path_compare_paths): Do not use cmp, for py3 compatibility.
(Stream.read()): Chunks is now list of bytes, not list of str.
* subversion/bindings/swig/python/svn/fs.py
(FileDiff.get_pipe()):
- Make sure self.tempfile1 and self.self.tempfile2 are bytes.
- Pass bytes to header_encoding arg in _svndiff.file_output_unified4().
* subversion/bindings/swig/python/svn/ra.py
(Callbacks..__doc__):
Treat path as bytes in sample code.
* subversion/bindings/swig/python/svn/repos.py
(ChangeCollector._make_base_path()): Treat path as bytes.
(ChangeCollector.open_root(): Path and basepath should be bytes in
dir_baton.
(RevisionChangeCollector._make_base_path()): Treat path as bytes.
Unit test changes:
* subversion/bindings/swig/python/tests/auth.py:
Replace all str literals with bytes literals except docstring and module name.
* subversion/bindings/swig/python/tests/checksum.py
(ChecksumTestCases.test_checksum()): Check if type of check_val is
bytes instead of str.
* subversion/bindings/swig/python/tests/client.py:
Replace all str literals with bytes literals except for the mode arg of open(),
arguments to utils.Temper methods, docstrings, and module names.
(SubversionClientTestCase.test_uuid_from_url): Check if return value
type client.uuid_from_url() is bytes instead of str.
(SubversionClientTestCase.test_uuid_from_path): Check if return value
type client.uuid_from_path() is bytes instead of str.
(SubversionClientTestCase.test_merge_peg3()): Open the result file in
raw mode.
(SubversionClientTestCase.test_update4()): Convert os.path.sep into
bytes if it is str in py3.
* subversion/bindings/swig/python/tests/core.py:
Replace all str literals with bytes literals except for exception messages,
arguments to utils.Temper methods, docstrigs, and module names.
Add new tests for svn_stream_*()
(SubversionCoreTestCase.test_stream_from_stringbuf()): New test method.
(SubversionCoreTestCase.test_stream_read_full()): New test method.
(SubversionCoreTestCase.test_stream_read2()): New test method.
(SubversionCoreTestCase.test_stream_write_exception()): New test method.
(SubversionCoreTestCase.test_stream_write()): New test method.
(SubversionCoreTestCase.test_stream_readline()): New test method.
* subversion/bindings/swig/python/tests/delta.py
(DeltaTestCase.estTxWindowHandler_stream_IF(),
DeltaTestCase.estTxWindowHandler_Stream_IF()):
Use bytes literals to make stream when using
svn.core.svn_stream_from_stringbuf().
Use bytes file name to make stream when using
svn.core.svn_stream_from_aprfile2().
* subversion/bindings/swig/python/tests/fs.py
(SubversionFSTestCase.log_message_func(): log_msg_func3 callback now
expects bytes to return.
(SubversionFSTestCase.setUp()): Pass bytes path and url to client.import2().
(SubversionFSTestCase.test_diff_repos_paths_internal(),
SubversionFSTestCase.test_diff_repos_paths_external()): Use bytes for
path1 argument to fs.FileDiff.__init__().
* subversion/bindings/swig/python/tests/mergeinfo.py
(SubversionMergeinfoTestCase.TEXT_MERGEINFO1,
SubversionMergeinfoTestCase.TEXT_MERGEINFO2,
SubversionMergeinfoTestCase.MERGEINFO_SRC): Use bytes instead of str.
(SubversionMergeinfoTestCase.test_mergeinfo_get()):
- Pass list of bytes for paths arg to repos.fs_get_mergeinfo().
- Replace str in expected_mergeinfo with bytes.
* subversion/bindings/swig/python/tests/ra.py
Replace all str literals with bytes literals except assertion message,
arguments to utils.Temper methods, docstrings, and module names.
(SubversionRepositoryAccessTestCase.test_get_file): Compare file
content as bytes.
* subversion/bindings/swig/python/tests/repository.py
Replace all str literals with bytes literals when passed into or returned from
the Subversion API, except exception messages.
(SubversionRepositoryTestCase.test_dump_fs2()): Treat dump and
feedback as bytes and compose expected_feedback as bytes.
* subversion/bindings/swig/python/tests/utils.py
(Temper.alloc_empty_dir(),
Temper.alloc_empty_repo): Convert return value of tempfile.mkdtemp() into
bytes.
(Temper.file_uri_for_path()): Return URI as bytes.
* subversion/bindings/swig/python/tests/wc.py
Replace all str literals with bytes literals when passed into or returned from
the Subversion API, except exception messages.
(SubversionWorkingCopyTestCase.test_get_adm_dir()): Check type as
bytes.
(SubversionWorkingCopyTestCase.test_get_pristine_copy_path(),
SubversionWorkingCopyTestCase.test_diff_editor4()): Open file in raw mode.
(SubversionWorkingCopyTestCase.test_commit()): Use bytes literals
instead of str.
* subversion/bindings/swig/python/tests/trac/versioncontrol/main.py
(Node.DIRECTORY, Node.FILE): Replace str with bytes.
(Node.__init__): Do not convert path to str.
(Node.get_name): Treat self.path as bytes.
(Changeset.ADD, Changeset.COPY, Changeset.DELETE, Changeset.EDIT,
Changeset.MOVE): Replace str with bytes.
* subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py
(SubversionRepository.__init__(),
SubversionRepository.get_oldest_rev(),
SubversionRepository.youngest_rev(),
SubversionRepository.next_rev()): Treat self.path and self.scope as bytes.
(SubversionRepository.normalize_path(),
SubversionRepository.get_node()): Treat path as bytes.
(SubversionRepository.get_path_history()): Replace 'unknown' Changeset value
with bytes.
(SubversionRepository.get_deltas()): Replace str 'entry' arg to
repos.svn_repos_dir_delta() with bytes.
(SubversionNode.__init__()):
- Treat self.path and self.scope as bytes.
- Decode path into str for exception message on py3.
(SubversionNode.get_entries()): Treat self.path as bytes.
(SubversionNode.get_properties()): Property values are bytes, not str.
(DiffChangeEditor.open_root()): Return bytes value.
* subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py
Replace all str literals with bytes literals when passed into or returned from
the Subversion API, except exception messages.
(REPOS_URL) Build REPOS_URL as bytes.
Patch By: Yasuhito FUTATSUKI <futatuki@poem.co.jp>
r1849778 | troycurtisjr | 2018-12-26 15:07:53 -0600 (Wed, 26 Dec 2018)
On branch swig-py3: Complete Python SWIG bindings for svn_client.h.
* subversion/bindings/swig/include/svn_containers.swg
(apr_array_header_t **OUTPUT_OF_CONST_CHAR_P): Add additional "char *" array
maps.
(%typemap(argout) apr_array_header_t **options): New output mapping for array
of svn_client_conflict_option_t objects.
(%typemap(argout) apr_array_header_t **versions_p): New output mapping for
array of svn_client__shelf_version_t objects.
* subversion/bindings/swig/include/svn_string.swg
(const char **OUTPUT): Add additional char * output parameter for log_message.
* subversion/bindings/swig/include/svn_types.swg
(SWIGTYPE **OUTPARAM): Add several missing output parameter swig types.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,
subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
Add make_ob_* swig constructor for svn_client_status_dup.
(svn_swig_py_client_status_func): New Function.
* subversion/bindings/swig/svn_client.i
Add callback typemaps for usages of svn_client_status_func_t.
* subversion/bindings/swig/python/tests/client.py
(SubversionClientTestCase.assert_all_instances_of): New helper method.
(SubversionClientTestCase.test_platform_providers): Add usage of
assert_all_instances_of() helper method.
(SubversionClientTestCase.test_conflict): New test method.
(SubversionClientTestCase.test_shelf): New test method.
r1849037 | troycurtisjr | 2018-12-16 10:53:38 -0600 (Sun, 16 Dec 2018)
On branch swig-py3: Address compiler warnings under Python 3.
Resolved compiler warnings relating to handling of const values when the SWIG
bindings are built under Python 3.
* subversion/bindings/swig/core.i
(const char *data, apr_size_t *len): Explicitly cast away const and document
the rationale.
(const void *value): Fix variable initialization from PyStr_AsString to be
const.
* subversion/bindings/swig/include/svn_types.swg
(const char *PTR, apr_size_t LEN): Explicitly cast away const and document the
rationale.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(svn_swig_py_make_file): Fix variable initialization from PyStr_AsString to be
const.
r1849003 | troycurtisjr | 2018-12-15 13:23:40 -0600 (Sat, 15 Dec 2018)
On branch swig-py3: Catchup to trunk @r1849002.
r1825316 | troycurtisjr | 2018-02-25 11:26:45 -0600 (Sun, 25 Feb 2018)
Update external 'diff' command test for svn.fs.FileDiff() to depend on presence
of the command instead of testing for 'win32' platform.
* subversion/bindings/swig/python/tests/fs.py
(SubversionFSTestCase.test_diff_repos_paths): Split function into internal
and external variants.
(SubversionFSTestCase.test_diff_repos_paths_external): New test method.
(SubversionFSTestCase.test_diff_repos_paths_internal): New test method.
(SubversionFSTestCase.setUp): Added unicode test commit from original
test_diff_repos_paths() so all test methods have a common repository setup.
Found by: stsp
r1824410 | troycurtisjr | 2018-02-15 23:12:05 -0600 (Thu, 15 Feb 2018)
Fix Python unit test, fs.SubversionFSTestCase, on Windows.
* subversion/bindings/swig/python/tests/fs.py
(SubversionFSTestCase.test_diff_repos_paths):
Update default test case to invoke internal diff implementation and add
a case for testing calls to the 'diff' executable on non-Windows platforms.
* subversion/bindings/swig/python/svn/fs.py
(FileDiff.__init__): Add difftemp to track temporary file for cleanup.
(FileDiff.__del__): Ensure difftemp is cleaned up.
(File.get_pipe): Add a condition to use the internal diff implementation when
the diffoptions value is given as None.
r1823802 | troycurtisjr | 2018-02-10 20:19:42 -0600 (Sat, 10 Feb 2018)
Ensure Python bindings for fs.FileDiff behaves correctly when the python-future
package is installed.
* subversion/bindings/swig/python/svn/fs.py
Try the Python 2 '__builtin__' import before the Python 3 'builtins'.
(FileDiff._dump_contents): Open temporary file in binary mode.
* subversion/bindings/swig/python/tests/fs.py
Add test for fs.FileDiff.
* subversion/bindings/swig/python/tests/run_all.py
(suite): Add fs test suite.
Found By: Kenneth Porter <shiva@sewingwitch.com>
r1822739 | troycurtisjr | 2018-01-30 23:13:59 -0600 (Tue, 30 Jan 2018)
On branch swig-py3: Ensure swig check_output() is decoded as utf8.
To support Python 2 and 3, explicitly decode check_output() return as utf8.
* build/generator/swig/__init__.py
(Generator.__init__, Generator.version): Explicitly decode check_output() as
utf8.
r1822736 | troycurtisjr | 2018-01-30 22:16:43 -0600 (Tue, 30 Jan 2018)
On branch swig-py3: Catchup to trunk @r1822734.
r1822729 | troycurtisjr | 2018-01-30 21:53:58 -0600 (Tue, 30 Jan 2018)
On branch swig-py3: Update status now the Visual Studio <= 2008 works.
* BRANCH-README: Remove note about only Visual Studio > 2008 being supported.
r1822728 | troycurtisjr | 2018-01-30 21:50:43 -0600 (Tue, 30 Jan 2018)
On branch swig-py3: Fix python swig compile for Visual Studio <= 2008.
Add the proper UserMacros definitions to pull in the necessary SWIG arguments
for python generation.
* build/generator/templates/vcnet_vsprops.ezt
New file defining UserMacros.
* build/generator/templates/vcnet_vcproj.ezt
Inherit the new property sheet containing UserMacros.
* build/generator/gen_vcnet_vcproj.py
(Generator.write_project): Write out the property sheet for Visual Studio
2008 and earlier.
r1822488 | troycurtisjr | 2018-01-28 21:46:19 -0600 (Sun, 28 Jan 2018)
On branch swig-py3: Update BRANCH-README with Windows status.
* BRANCH-README
- Update with current Windows build status.
r1822486 | troycurtisjr | 2018-01-28 20:22:16 -0600 (Sun, 28 Jan 2018)
On branch swig-py3: Revert a Python 3 only usage.
* build/generator/gen_base.py
(IncludeDependencyInfo._scan_for_includes):
Drop the Python 3 only "errors" argument to fileinput.hook_encoded().
r1822485 | troycurtisjr | 2018-01-28 18:53:54 -0600 (Sun, 28 Jan 2018)
On branch swig-py3: Add py3c library support to the Windows build.
* build/generator/templates/vcnet_vcxproj.ezt
(UserMacros): Add template options to define UserMacros.
* build/generator/gen_vcnet_vcproj.py
(Generator.write_project): Include new user macro values in
data passed to the ezt template function.
* build/generator/gen_win_dependencies.py
(UserMacro): Define a new type to use with user macro templates.
(GenDependenciesBase._optional_libraries): Include py3c library.
(GenDependenciesBase.parse_options): Include the py3c library path
option.
(GenDependenciesBase.find_libraries): Add a call to _find_py3c().
(GenDependenciesBase._find_python): Define SWIG_PY_OPTS user macro
based on detected Python version.
(GenDependenciesBase._find_py3c): New method.
(GenDependenciesBase._find_swig,
GenDependenciesBase._find_jdk): Ensure output from subprocess is
properly decoded.
* gen-make.py
(_usage_exit): Add --with-py3c usage.
(my_getopt): Add with-py3c option.
* subversion/bindings/swig/INSTALL
Include py3c in Windows SWIG building instructions.
* build/generator/gen_base.py
(IncludeDependencyInfo._scan_for_includes): Ensure file data is
properly encoded as UTF8.
* build/generator/gen_win.py
(WinGeneratorBase.makeguid): Ensure data input to hashlib is binary
and not Unicode.
(WinGeneratorBase.get_win_includes): Include py3c include directory
in swig compile definition.
r1820032 | troycurtisjr | 2018-01-03 22:06:36 -0600 (Wed, 03 Jan 2018)
On branch swig-py3: Go back to using classic classes for Python 2 swig bindings.
Add some additional clarifying comments for the reasons behind overriding
__getattr__ and __getattribute__.
* build/ac-macros/swig.m4
(SVN_FIND_SWIG): Add the '-classic' flag to swig when python 2 is detected.
* subversion/bindings/swig/include/proxy.py
(_retrieve_swig_value): Factor out metadata retrieval from __getattribute__ to a new function.
(__getattribute__): Only define __getattribute__ for new style classes.
(__getattr__): Add back implementation for classic classes.
Suggested By: brane
r1819712 | troycurtisjr | 2017-12-30 19:49:15 -0600 (Sat, 30 Dec 2017)
On branch swig-py3: Create and use a wrapper function to efficiently retrieve
lists from dict object on Python 2 and 3.
Wrapping dict methods such as keys() and values() in list() works to create a
independent list, but on Python 2 two distinct lists are created which is
inefficient.
* subversion/bindings/swig/python/svn/core.py
Create a new utility function, _as_list(), and remove now unnecessary
_bi_list alias.
(svn.core._unprefix_names, svn.core.__all__): Use new _as_list() function in
place of list() on dict output.
* subversion/bindings/swig/python/svn/client.py,
subversion/bindings/swig/python/svn/delta.py,
subversion/bindings/swig/python/svn/diff.py,
subversion/bindings/swig/python/svn/fs.py,
subversion/bindings/swig/python/svn/ra.py,
subversion/bindings/swig/python/svn/repos.py,
subversion/bindings/swig/python/svn/wc.py,
subversion/bindings/swig/python/tests/mergeinfo.py,
subversion/bindings/swig/python/tests/ra.py,
subversion/bindings/swig/python/tests/repository.py,
subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py,
subversion/bindings/swig/python/tests/wc.py
(svn.client.__all__,
svn.delta.__all__,
svn.diff.__all__,
svn.fs.__all__,
svn.fs.entries,
svn.ra.__all__,
svn.repos.__all__,
svn.wc.__all__,
SubversionMergeinfoTestCase.test_mergeinfo_leakage__incorrect_range_t_refcounts,
SubversionRepositoryAccessTestCase.test_delta_driver_commit,
SubversionRepositoryAccessTestCase.test_get_log2,
SubversionChangeset.get_changes,
SubversionChangeset.get_properties,
SubversionRepositoryTestCase.test_get_logs,
SubversionWorkingCopyTestCase.test_entries_read,
SubversionWorkingCopyTestCase.test_diff_editor4):
Use new _as_list() function in place of list() on dict output.
Found By: danielsh, brane
r1819566 | troycurtisjr | 2017-12-29 22:04:06 -0600 (Fri, 29 Dec 2017)
On branch swig-py3: Properly handle NULL values from the Python C API.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(svn_swig_py_as_file): Ensure each return from the Python C API is not NULL
before passing to the next API function.
Found By: danielsh
r1819565 | troycurtisjr | 2017-12-29 21:37:31 -0600 (Fri, 29 Dec 2017)
On branch swig-py3: Clarify move detection logic in swig trac tests.
* subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py
(get_changes): Clarify the move detection logic by adding a few comments and
replacing the odd index/offset based loop with one based on enumerate.
Suggested By: danielsh
r1819562 | troycurtisjr | 2017-12-29 20:32:58 -0600 (Fri, 29 Dec 2017)
On branch swig-py3: Fix swig tests which relied on consistent dict key ordering.
* subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py
(test_changeset_file_edit, test_changeset_file_copy): Ensure consistent dict
key sequence ordering by using sorted().
* subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py
(get_changes): Ensure moves indexes are sorted so that deletions work correctly.
Found By: danielsh
r1819561 | troycurtisjr | 2017-12-29 20:26:22 -0600 (Fri, 29 Dec 2017)
On branch swig-py3: Add missing undef to the py3c/swig compatibility header.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h
Add PyInt_FromSize_t to the list of undefs to prevent conflicts between py3c
and swig.
r1819498 | troycurtisjr | 2017-12-29 10:13:18 -0600 (Fri, 29 Dec 2017)
On branch swig-py3: Do not include internal header as a system header.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
Change include of swigutil_py3c.h from <> to "" as it is an internal header.
Found By: danielsh
r1819460 | troycurtisjr | 2017-12-28 20:05:43 -0600 (Thu, 28 Dec 2017)
On branch swig-py3: Move py3c compat fixes to all swig modules.
Resolves compile warnings in Python 3 build for all modules, not just those in
swigutil_py.c.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h:
New file containing the py3c compat undef fixes previously in swigutil_py.c.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c:
Moved py3c compat undef fixes to swigutil_py3c.h and include the header.
* subversion/bindings/swig/include/svn_global.swg:
Add swigutil_py3c.h include to ensure all swig modules get the compat fixes.
* subversion/bindings/swig/core.i,
subversion/bindings/swig/include/svn_string.swg,
subversion/bindings/swig/include/svn_types.swg,
subversion/bindings/swig/svn_client.i,
subversion/bindings/swig/svn_delta.i,
subversion/bindings/swig/svn_diff.i,
subversion/bindings/swig/svn_fs.i,
subversion/bindings/swig/svn_ra.i,
subversion/bindings/swig/svn_repos.i,
subversion/bindings/swig/svn_wc.i:
Remove redundant py3c.h inclusion, now that svn_global.swg includes
swigutil_py3c.h.
Found By: danielsh
r1819452 | troycurtisjr | 2017-12-28 17:38:34 -0600 (Thu, 28 Dec 2017)
On branch swig-py3: Make swig python configure error more meaningful if
Python.h is not found.
* build/ac-macros/swig.m4
(SVN_FIND_SWIG): Add a AC_CHECK_HEADER for Python.h to verify its existence,
and provide a meaningful error if it is not found.
Found By: danielsh
r1819441 | troycurtisjr | 2017-12-28 15:58:31 -0600 (Thu, 28 Dec 2017)
On branch swig-py3: Include the detected PY3C header path in the swig compile.
* Makefile.in
(SWIG_PY_INCLUDES): Add SVN_PY3C_INCLUDES.
Found By: danielsh
r1819397 | troycurtisjr | 2017-12-27 23:25:55 -0600 (Wed, 27 Dec 2017)
On branch swig-py3: Fix style in newly added function.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(svn_swig_ensure_valid_swig_wrapper): Update style for consistency.
r1819396 | troycurtisjr | 2017-12-27 22:55:00 -0600 (Wed, 27 Dec 2017)
On branch swig-py3: Add configuration instructions for py3c.
* INSTALL: Add configuration instructions for py3c and remove reference to
Python 3 not being supported.
* subversion/bindings/swig/INSTALL: Add build instructions for py3c.
r1819394 | troycurtisjr | 2017-12-27 22:19:17 -0600 (Wed, 27 Dec 2017)
On branch swig-py3: Remove use of hasattr() in python bindings since it can be
subtly different between Python 2 and 3.
* subversion/bindings/swig/include/proxy_apr.swg,
subversion/bindings/swig/python/tests/client.py,
subversion/bindings/swig/python/tests/mergeinfo.py,
subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py
(_mark_weakpool_invalid,
apr_pool_t.valid,
apr_pool_t.destroy
apr_pool_t._wrap,
testGnomeKeyring,
get_svn_merge_range_t_objects,
_get_history): Remove use of hasattr() to ensure consistent behavior with
both Python 2 and 3.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(svn_swig_ensure_valid_swig_wrapper): New private function for common wrapper
validation code.
(svn_swig_py_convert_ptr, svn_swig_py_must_get_ptr): Use new wrapper
validation function.
r1819386 | troycurtisjr | 2017-12-27 20:00:36 -0600 (Wed, 27 Dec 2017)
On branch swig-py3: Remove resolved Python3 runtime issues from BRANCH-README.
* BRANCH-README: Remove resolved Python3 runtime issues.
r1819312 | troycurtisjr | 2017-12-26 20:43:05 -0600 (Tue, 26 Dec 2017)
On branch swig-py3: Do not hide AttributeError exception in called function.
* subversion/bindings/swig/include/proxy.swg
(_assert_valid_deep): Move the call to assert_valid() out of the try block to
prevent masking AttributeError that happen within the method call.
r1819203 | troycurtisjr | 2017-12-23 23:23:08 -0600 (Sat, 23 Dec 2017)
On branch swig-py3: Catch up to trunk@1819202.
r1819202 | troycurtisjr | 2017-12-23 22:47:31 -0600 (Sat, 23 Dec 2017)
On branch swig-py3: Fix additional Bytes versus String inconsistencies.
Be explicit about UTF-8 conversions between bytes and strings. All
swig unit tests now pass under both Python 2 and 3.
* subversion/bindings/swig/include/svn_types.swg
(typemap(argout) unsigned char digest[ANY], unsigned char *digest):
Treat checksum digest data correctly as bytes, not a string.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(write_handler_pyio): Create a compatibility definition, SVN_SWIG_BYTES_FMT, to
ensure raw file data is treated as bytes in Python 3 and string in Python2.
* subversion/bindings/swig/python/tests/delta.py,
subversion/bindings/swig/python/tests/ra.py,
subversion/bindings/swig/python/tests/repository.py,
subversion/bindings/swig/python/tests/utils.py,
subversion/bindings/swig/python/tests/wc.py,
subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py
(DeltaTestCase.testTxWindowHandler,
DeltaTestCase.testTxdeltaWindowT,
SubversionRepositoryAccessTestCase.test_get_file,
SubversionRepositoryTestCase.test_dump_fs2,
Temper.alloc_known_repo,
SubversionWorkingCopyTestCase.test_diff_editor4.write_diff,
SubversionRepositoryTestSetup.setUp):
Use BytesIO instead of StringIO to servce as a source of raw binary data.
(SubversionRepositoryTestCase.test_parse_fns3):
Open raw data file in binary mode.
(SubversionWorkingCopyTestCase.test_commit):
Explicity encode data being written to a file opened in binary mode and
decode binary data in the result from binascii.b2a_hex().
r1819112 | troycurtisjr | 2017-12-22 22:52:16 -0600 (Fri, 22 Dec 2017)
On branch swig-py3: Ensure the correct parent pool weakref is used.
* subversion/bindings/swig/include/proxy_apr.swg
(GenericSWIGWrapper.set_parent_pool): Update the _is_valid weakref with the
ref to the new parent pool.
r1819110 | troycurtisjr | 2017-12-22 22:43:26 -0600 (Fri, 22 Dec 2017)
On branch swig-py3: Replace hasattr check for a method with try-except.
* subversion/bindings/swig/include/proxy.swg
(_assert_valid_deep): Replace hasattr check for the 'assert_valid' method
with a try-except block as some class instances can have the method but return
False to hasattr().
r1818995 | troycurtisjr | 2017-12-21 21:52:59 -0600 (Thu, 21 Dec 2017)
On branch swig-py3: Correctly manage swig objects with Python new style classes.
* subversion/bindings/swig/include/proxy.py
(__getattr__): Replace __getattr__ with __getattribute__ to correctly
intercept attribute access, even when swig uses descriptors for new style
classes (which are the only type available in Python 3).
* build/ac-macros/swig.m4
(SVN_FIND_SWIG):
Request that swig generate new style classes, even for Python 2, to reduce
differences with Python 3.
* subversion/bindings/swig/include/proxy.swg
(_copy_metadata_deep): Remove iteritems() use to make compatible with both
Python 2 and 3.
(_assert_valid_deep): Remove itervalues() use and add type check to be
compatible with both Python 2 and 3.
r1818994 | troycurtisjr | 2017-12-21 21:40:08 -0600 (Thu, 21 Dec 2017)
On branch swig-py3: Disable invalid PyInt_Check() in Python 3.
* subversion/bindings/swig/core.i
(%typemap(in) (char *buffer, apr_size_t *len)):
Remove PyInt_Check() when building against Python 3, since it has
been removed.
r1816596 | troycurtisjr | 2017-11-28 21:50:09 -0600 (Tue, 28 Nov 2017)
On branch swig-py3: Fix clean-swig-py for out-of-source builds.
* Makefile.in
(EXTRACLEAN_SWIG_PY): Change SWIG_PY_SRC_DIR to SWIG_PY_DIR to correctly
reference generated files in out-of-source builds.
r1816097 | troycurtisjr | 2017-11-22 19:29:56 -0600 (Wed, 22 Nov 2017)
On branch swig-py3: Sort lists generated from dictionaries before testing.
* subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py
(SubversionRepositoryTestCase.test_get_dir_entries,
SubversionRepositoryTestCase.test_changeset_added_dirs,
SubversionRepositoryTestCase.test_changset_dir_moves):
Wrap sequences in sorted() which are generated from dictionaries and used for equivalence
tests to ensure consistent test returns.
r1816092 | troycurtisjr | 2017-11-22 18:44:53 -0600 (Wed, 22 Nov 2017)
On branch swig-py3: Explicitly use truncating division to ensure consistent
behavior between Python 2 and 3.
* subversion/bindings/swig/python/svn/core.py,
subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py
(secs_from_timestr, SubversionChangeset.__init__,
SubversionNode.get_last_modified):
Replace standard division between integers with truncating division, '//'.
r1815770 | troycurtisjr | 2017-11-19 21:17:22 -0600 (Sun, 19 Nov 2017)
On branch swig-py3: Ensure Python file objects are closed before destruction.
* subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py,
subversion/bindings/swig/python/tests/utils.py,
subversion/bindings/swig/python/tests/wc.py
(SubversionRepositoryTestSetup.setUp,
SubversionWorkingCopyTestCase.test_get_pristine_copy_path,
Temper.alloc_known_repo):
Wrap bare open() calls in a 'with' block to ensure the file object is closed
before destruction.
r1815768 | troycurtisjr | 2017-11-19 20:30:00 -0600 (Sun, 19 Nov 2017)
On branch swig-py3: Fix raw file read handling in python swig bindings to work
the same in Python 2 and 3.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(read_handler_pyio): Replace PyStr_AsUTF8AndSize() with
PyBytes_AsStringAndSize() so that raw file I/O in Python 2 and 3 are handled
the same way.
r1814455 | troycurtisjr | 2017-11-06 22:01:25 -0600 (Mon, 06 Nov 2017)
* subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py
Remove redundent StringIO imports.
(test_diff_file_different_revs, test_diff_file_different_files,
test_diff_file_no_change, test_diff_dir_different_revs,
test_diff_dir_different_dirs, test_diff_dir_no_change,
test_changeset_repos_creation): Remove extraneous '*args' lambda argument.
r1814454 | troycurtisjr | 2017-11-06 21:54:24 -0600 (Mon, 06 Nov 2017)
* build/ac-macros/swig.m4
(SVN_FIND_SWIG): Ensure Python 3.0 is correctly detected as Python 3.
r1814387 | troycurtisjr | 2017-11-05 20:33:27 -0600 (Sun, 05 Nov 2017)
On branch swig-py3: Get swig bindings compiling with Python 3.
Add the necessary build tool support for choosing Python 3 or Python 2 to build
against, and get the bindings building under Python 3.
* BRANCH-README
Add a note about current known runtime issues under Python 3.
* Makefile.in
(SWIG_PY_OPTS): New configuration variable.
* build.conf
(swig-python-opts): Use the new SWIG_PY_OPTS variable for the swig python
arguments.
* configure.ac
Add PYTHON to the influential environment variable list.
* build/ac-macros/swig.m4
(SVN_FIND_SWIG): Choose appropriate SWIG_PY_OPTS based on the Python version
detected.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
Move the py3c.h include such that selected conflicting macros from swig can be
undefined for use with this file.
(svn_swig_py_as_file): Use correct PyObject_AsFileDescriptor instead of Python
2's PyFile_AsFileDescriptor.
r1814386 | troycurtisjr | 2017-11-05 19:58:20 -0600 (Sun, 05 Nov 2017)
On branch swig-py3: Update swig python code to be compatible with both Python 2
and Python3.
Change non-generated python code to use syntax that is valid for both Python 3
and Python 2.7. Where this is not possible, provide compatibility wrappers.
Python 2 unit tests all pass after the changes, but more effort remains for full
Python 3 functionality.
* build/generator/swig/header_wrappers.py
(_write_swig_interface_file): For Python3, include an encoding argument to
tempfile.TemporaryFile()
* build/generator/util/executable.py
(output): Ensure the subprocess' output is interpreted as utf8 for proper
Python 3 compatibility.
[in subversion/bindings/swig/python]
* svn/core.py
Import the builtin 'list' as '_bi_list' to aid in compatibility in other
modules.
(_unprefix_names): Wrap dict.items() in list() for py2.7/3 support.
(__all__): Change filter() to list comprehension for py2.7/3 support.
* svn/client.py
svn/delta.py
svn/diff.py
svn/fs.py
svn/ra.py
svn/repos.py
svn/wc.py
(__all__): Change filter() to list comprehension for py2.7/3 support. Use the
_bi_list to provide a new list instance of locals on both Python 2.7 and 3.
* svn/fs.py
(entries): Wrap dict.items() in _bi_list() for py2.7/3 support.
* tests/auth.py
(test_open): Change deprecated assert_ to assertTrue.
(test_credentials_get_username,
test_credentials_get_simple,
test_credentials_get_ssl_client_cert,
test_credentials_get_ssl_client_cert_pw,
test_credentials_get_ssl_server_trust):
Change deprecated assertEquals to assertEqual and assert_ to assertTrue.
* tests/client.py
(setUp, test_log5, proplist_receiver_trunk, proplist_receiver_dir1,
test_inherited_props, test_update4):
Change deprecated assertEquals to assertEqual.
(testBatonPlay): Change deprecated assertEquals to assertEqual and
assertNotEquals to assertNotEqual.
(test_log3_url, test_platform_providers):
Change deprecated assert_ to assertTrue.
(test_log5): Change deprecated assert_ to assertTrue and assertEquals to
assertEqual.
* tests/core.py
(test_config_enumerate2): Replace dict.iteritems() with dict.items() to be
compatible with py2.7/3. Change deprecated assert_ to assertTrue.
(test_config_enumerate_sections2): Change deprecated assert_ to assertTrue.
* tests/delta.py
(testTxdeltaWindowT): Change deprecated assert_ to assertTrue.
* tests/mergeinfo.py
(test_rangelist_reverse,
test_mergeinfo_leakage__incorrect_range_t_refcounts,
test_mergeinfo_leakage__lingering_range_t_objects_after_del,
inspect_mergeinfo_dict):
Change deprecated assertEquals to assertEqual.
(test_mergeinfo_leakage__incorrect_range_t_refcounts): Wrap dict.items() in
list() for py2.7/3 support. Change deprecated assertEquals to assertEqual.
(inspect_mergeinfo_dict): Change deprecated assert_ to assertTrue.
(compare_mergeinfo_catalogs,
compare_mergeinfos):
Drop usage of dict.keys() for py2.7/3 support.
* tests/ra.py
(test_get_dir2, test_delta_driver_commit, test_get_file_revs,
test_lock, test_get_log2, test_namestring):
Change deprecated assert_ to assertTrue.
(test_delta_driver_commit): Wrap dict.items() in list() for py2.7/3 support.
* tests/repository.py
(test_dump_fs2): Change deprecated assertEquals to assertEqual.
(test_get_logs): Wrap dict.values() in list() for py2.7/3 support.
* tests/run_all.py
(suite): Do not use long() cast when running with Python 3.
* tests/utils.py
Support correct import of StringIO and pathname2url from Python 2.7 and 3.
(file_uri_for_path): Use unqualified pathname2url to support py2.7/3.
* tests/wc.py
(test_is_adm_dir, test_set_adm_dir, test_status_editor,
test_is_normal_prop, test_is_wc_prop, test_is_entry_prop):
Change deprecated assert_ to assertTrue and failIf to assertFalse.
(test_get_adm_dir, test_crawl_revisions2, test_check_wc, test_get_prop_diffs,
test_get_ignores):
Change deprecated assert_ with assertTrue.
(test_commit): Change deprecated assertEquals to assertEqual.
(test_diff_editor4): Wrap dict.items() in list() for py2.7/3 support.
* tests/trac/versioncontrol/svn_fs.py
(get_entries): Drop usage of dict.keys() for py2.7/3 support.
(get_properties, get_changes): Wrap dict.items() with list() for py2.7/3
support.
* tests/trac/versioncontrol/tests/svn_fs.py
Support correct import of StringIO and pathname2url from Python 2.7 and 3.
(test_get_dir_entries, test_get_file_entries, test_get_node_history,
test_get_node_history_follow_copy, test_get_path_history,
test_get_path_history_copied_file, test_get_path_history_copied_dir,
test_changeset_added_dirs, test_changeset_file_edit, test_changset_dir_moves,
test_changeset_file_copy):
Replace the series of direct calls to .next() with assertSequenceEqual for
py2.7/3 support.
(test_diff_file_different_revs, test_diff_file_different_files,
test_diff_file_no_change, test_diff_dir_different_revs,
test_diff_dir_different_dirs, test_diff_dir_no_change,
test_changeset_repos_creation):
Replace <iter>.next() with next(<iter>) for py2.7/3 support.
r1813774 | troycurtisjr | 2017-10-30 09:58:34 -0500 (Mon, 30 Oct 2017)
On branch swig-py3: Remove py3c AC macro's implicit dependency on swig-python.
The py3c library is not necessarily tied to the python swig bindings, so don't
assume so in SVN_PY3C AC macro. Instead, add a check in the swig macro for
py3c library, and gracefully disable just the python bindings instead of
requiring all of swig to be disabled.
* BRANCH-README
Add a TODO to 'make swig-py' error more meaningful when py3c isn't available.
* build/ac-macros/py3c.m4
(SVN_PY3C): Remove references to the swig bindings and remove the
AC_MSG_ERROR, and fix checking of header compilability when prefix method
is used.
* build/ac-macros/swig.m4
(SVN_FIND_SWIG): Add a check for the py3c library in the python section and
if not found, only disable the python bindings instead of all swig bindings.
r1813700 | troycurtisjr | 2017-10-29 13:10:30 -0500 (Sun, 29 Oct 2017)
On branch swig-py3: Add a branch specific README.
* BRANCH-README: New.
r1813665 | troycurtisjr | 2017-10-28 22:37:37 -0500 (Sat, 28 Oct 2017)
On branch swig-py3: Use py3c library in Python swig bindings.
Add the py3c Python compatibility library and update the python swig bindings
to use the compatibility functions that it provides. This is the first step to
getting the swig bindings to support Python 3.
* build/ac-macros/py3c.m4:
Create a new ac-macro for the py3c library.
* aclocal.m4:
Include the new py3c.m4 file.
* build/ac-macros/swig.m4:
(SVN_FIND_SWIG): Call the new SVN_PY3C macro to add py3c to the build.
[in subversion/bindings/swig]
* include/svn_string.swg
(python typemaps: RET_STRING): Replace PyString_FromStringAndSize with
PyStr_FromStringAndSize.
(python typemaps: (in) svn_stringbuf_t *,
(in) const svn_string_t * (svn_string_t value)):
Replace PyString_Check with PyStr_Check and
PyString_AS_STRING/PyString_GET_SIZE with PyStr_AsUTF8AndSize.
(python typemaps: (out) svn_stringbuf_t *,
(out) svn_string_t *):
Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.
(python typemaps: (argout) const char **OUTPUT):
Replace PyString_FromString with PyStr_FromString.
* include/svn_types.swg
(python typemaps: (in) (const char *PTR, apr_size_t LEN)):
Replace PyString_Check with PyStr_Check and
PyStr_AS_STRING/PyString_GET_SIZE with PyStr_AsUTF8AndSize.
(python typemaps: (argout) unsigned char digest[ANY]):
Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.
(python typemaps: (in) const unsigned char *digest):
Replace PyString_AsString with PyStr_AsString.
* include/libsvn_swig_py/swigutil_py.h,
include/libsvn_swig_py/swigutil_py.c
Include py3c.h to pick up Python 2/3 compatibility defines.
(svn_swig_py_as_file): Add new compatibility function.
(svn_swig_py_unwrap_string): Add clarifying note to function.
(svn_swig_py_svn_exception,
svn_swig_py_propinheriteditemarray_to_dict,
svn_swig_py_proparray_to_dict,
svn_swig_py_locationhash_to_dict,
svn_swig_py_c_strings_to_list,
svn_swig_py_array_to_list,
cstring_to_pystring,
convert_string):
Replace PyString_FromString with PyStr_FromString.
(make_string_from_ob,
make_svn_string_from_ob,
svn_swig_py_unwrap_string,
ra_callbacks_get_client_string,
exeception_to_error):
Replace PyString_AsString with PyStr_AsString.
(make_string_from_ob, make_svn_string_from_ob):
Replace PyString_Check with PyStr_Check.
(convert_svn_string_t,
svn_swig_py_proparray_to_dict,
ra_callbacks_push_or_set_wc_prop):
Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.
(svn_swig_py_make_file):
Replace PyFile_Check/PyFile_AsFile with svn_swig_py_as_file.
(read_handler_pyio, ra_callbacks_get_wc_prop):
Replace PyString_GET_SIZE/PyString_AS_STRING with PyStr_AsUTF8AndSize.
(svn_swig_py_get_commit_log_func):
Replace PyString_AS_STRING with PyStr_AsString and PyString_Check with
PyStr_Check.
* core.i
(python typemap:
(char *buffer, apr_size_t *len)):
Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.
(python typemap:
(const char *data, apr_size_t *len)):
Replace PyString_Check with PyStr_Check, and PyString_AS_STRING/
PyString_GET_SIZE with PyStr_AsUTF8AndSize.
(python typemap:
const void *value (apr_pool_t *_global_pool, PyObject *_global_py_pool)):
Replace PyString_Check with PyStr_Check and PyString_AS_STRING with
PyStr_AsString.
(python typemap: FILE *): Replace PyFile_AsFile with svn_swig_py_as_file.
* svn_client.i
Include py3c.h to pick up Python 2/3 compatibility defines.
(python typemap: (argout) apr_array_header_t **props):
Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.
* svn_delta.i,
svn_diff.i,
svn_fs.i,
svn_ra.i,
svn_repos.i,
svn_wc.i
Include py3c.h to pick up Python 2/3 compatibility defines.
r1813663 | troycurtisjr | 2017-10-28 16:50:06 -0500 (Sat, 28 Oct 2017)
Revert unintended commit of WIP code.
* aclocal.m4:
Back out premature addition of py3c.m4.
r1813662 | troycurtisjr | 2017-10-28 16:42:32 -0500 (Sat, 28 Oct 2017)
[Accidental commit, reverted in r1813663]
r1813660 | troycurtisjr | 2017-10-28 15:58:44 -0500 (Sat, 28 Oct 2017)
Create a branch to work on Python 3 compatibility for the swig bindings.
r1813114 | troycurtisjr | 2017-10-23 21:27:17 -0500 (Mon, 23 Oct 2017)
* COMMITTERS:
(troycurtisjr) Add myself as partial committer for swig bindings.
r871532 | kfogel | 2008-05-26 16:21:08 -0500 (Mon, 26 May 2008)
Fix peg revision support for repository root urls to address issue
#3193. Along the way, unify some aspects of peg revision parsing into
a new helper function.
Patch by: Troy Curtis Jr <troycurtisjr@gmail.com>
(Only minor tweaks by me.)
* subversion/include/private/svn_opt_private.h
(svn_opt__split_arg_at_peg_revision): New prototype.
* subversion/libsvn_subr/opt.c
(svn_opt__split_arg_at_peg_revision): New function.
(svn_opt_parse_path, svn_opt_args_to_target_array3): Replace in-line
peg revision parsing with call to new function.
* subversion/libsvn_client/cmdline.c
(svn_opt_args_to_target_array3): Same.
* subversion/include/svn_opt.h
(svn_opt_parse_path): Document error behavior more precisely.
* subversion/tests/cmdline/basic_tests.py
(basic_relative_url_with_peg_revisions): New test.
(test_list): Run it.
r871091 | danielsh | 2008-05-04 12:09:51 -0500 (Sun, 04 May 2008)
Fix an assertion failure when a user inputs a non-canonical repository root
relative url.
Patch by: Troy Curtis Jr <troycurtisjr@gmail.com>
* subversion/libsvn_client/cmdline.c
(resolve_repos_relative_url): Avoid an assertion failure in svn_path_join()
by replacing it with apr_pstrcat() so that there is not a requirement that
the input arguments be canonical. Also update the doc string to reflect
this.
* subversion/tests/cmdline/basic_tests.py
(basic_relative_url_non_canonical): New test function.
(test_list): Call the new test function.
r870934 | danielsh | 2008-04-30 00:09:28 -0500 (Wed, 30 Apr 2008)
Add some notes on the syntax of the repository root relative url support in
the svn command-line client. Also include known issues with some shells'
special treatment of the '^' character.
Patch by: Troy Curtis Jr <troycurtisjr@gmail.com>
(Tweaked by me to add examples and reserve '^' URLs.)
* notes/cli-repo-root-relative-support.txt: New file.
r870827 | julianfoad | 2008-04-22 10:21:36 -0500 (Tue, 22 Apr 2008)
Implement repository root relative url support for the svn command-line
client. This allows the user to use '^/' in front of any target to
mean the repository root url. The repository root url is determined by
checking the other arguments' root urls (if they exist) and using that common
url. If none is found the root url of the current directory is used. If no
common repository root url can be found, an error is generated.
Patch by: Troy Curtis Jr <troycurtisjr@gmail.com>
(minor tweaks by me)
* subversion/include/private/svn_opt_private.h
New file to hold inter-library svn_opt functions.
(svn_opt__arg_canonicalize_url): New function prototype.
(svn_opt__arg_canonicalize_path): New function prototype.
* subversion/include/svn_opt.h
(svn_opt_args_to_target_array3): Change doc string to reflect deprecated
status.
* subversion/libsvn_subr/opt.c
(svn_opt__arg_canonicalize_url): New function to canonicalize user input
urls.
(svn_opt__arg_canonicalize_path): New function to canonicalize user input
paths.
(svn_opt_args_to_target_array3): Replace the inline canonicalization code
with calls to the new svn_opt__arg_canonicalize_* functions.
* subversion/include/svn_client.h
(svn_client_args_to_target_array): New function prototype.
* subversion/libsvn_client/cmdline.c
New file for client library commandline processing functionality.
(arg_is_repos_relative_url,
resolve_repos_relative_url,
check_root_url_of_target): New functions to support
svn_client_args_to_target_array.
(svn_client_args_to_target_array): New client function to parse user
arguments into a target array. Replaces use of
svn_opt_args_to_target_array3(). Remove the replicated knowledge of
admin directory names, and, as a side effect, don't skip path names
of "_svn" on systems that don't use that name for the admin dir.
* subversion/tests/libsvn_client/client-test.c
(test_args_to_target_array): New test function.
(test_funcs): Run new test function.
* subversion/tests/cmdline/special_tests.py
(warn_on_reserved_name): Modify test to work right with the new
svn_client_args_to_target_array().
* subversion/tests/cmdline/basic_tests.py
(basic_relative_url_multi_repo,
basic_relative_url_using_other_targets,
basic_relative_url_using_current_dir): New test functions.
(test_list): Run new test functions.
* subversion/svn/cl.h
(svn_cl__args_to_target_array_print_reserved): Add client context parameter.
* subversion/svn/util.c
(svn_cl__args_to_target_array_print_reserved): Replace call to
svn_opt_args_to_target_array3() with svn_client_args_to_target_array().
* subversion/svn/update-cmd.c
(svn_cl__update): Replace svn_opt_args_to_target_array3() with
svn_cl__args_to_target_array_print_reserved() for consistency with the other
command line functions.
* subversion/svn/diff-cmd.c
(svn_cl__diff): Create a client context variable and use it in the
svn_cl__args_to_target_array_print_reserved() function along with
everywhere else it is needed.
* subversion/svn/add-cmd.c,
subversion/svn/blame-cmd.c,
subversion/svn/cat-cmd.c,
subversion/svn/changelist-cmd.c,
subversion/svn/checkout-cmd.c,
subversion/svn/cleanup-cmd.c,
subversion/svn/commit-cmd.c,
subversion/svn/copy-cmd.c,
subversion/svn/delete-cmd.c,
subversion/svn/export-cmd.c,
subversion/svn/import-cmd.c,
subversion/svn/info-cmd.c,
subversion/svn/list-cmd.c,
subversion/svn/lock-cmd.c,
subversion/svn/log-cmd.c,
subversion/svn/merge-cmd.c,
subversion/svn/mergeinfo-cmd.c,
subversion/svn/mkdir-cmd.c,
subversion/svn/move-cmd.c,
subversion/svn/propdel-cmd.c,
subversion/svn/propedit-cmd.c,
subversion/svn/propget-cmd.c,
subversion/svn/proplist-cmd.c,
subversion/svn/propset-cmd.c,
subversion/svn/resolve-cmd.c,
subversion/svn/resolved-cmd.c,
subversion/svn/revert-cmd.c,
subversion/svn/status-cmd.c,
subversion/svn/switch-cmd.c,
subversion/svn/unlock-cmd.c
Add client context variable to all the calls to
svn_cl__args_to_target_array_print_reserved().
r867580 | jpeacock | 2007-10-30 17:29:14 -0500 (Tue, 30 Oct 2007)
Make many functions added since version 1.0 in the Client API visible
to users of the Perl bindings. They are already swig-wrapped, just not
exported. (issue 2646)
* subversion/bindings/swig/perl/native/Repos.pm:
Export more API functions.
(POD Documentation): Added entries documenting dump_fs2 and load_fs2.
Patch by: Troy Curtis Jr <troycurtisjr@gmail.com>
me
Approved by: dlr
r862063 | dlr | 2006-10-16 22:21:03 -0500 (Mon, 16 Oct 2006)
* contrib/client-side/mucc.c
Add comment on how to build this client.
Suggested by: glasser
Found by: Troy Curtis Jr <troycurtisjr@gmail.com>