Hint about how to stop the torrent of deprecation warnings

Patch by Martin Panter.

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
Fix raising deferred socket exception

Python 3 deletes the exception variable at the end of the exception handler,
so we have to explicitly save it in another variable. Make sure that variable
is eventually deleted to avoid the traceback causing a reference cycle.

Verified by running the code

subvertpy.ra_svn.SVNClient("svn://wbr")

where “wbr” is in my “/etc/hosts” file but is not connectable.

This also breaks an import dependency cycle between “subvertpy.ra” and
“subvertpy.ra_svn”, because Python 3 is less forgiving than Python 2.

Patch by Martin Panter

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
Use subprocess.Popen() over os.popen3() and check GCC exit status

The os.popen3() functions is gone in Python 3.

Before this change it looks like is_keychain_provider_available() would
always indicate success, even if the GCC command failed. Python 2’s
os.popen3() function appears to only return normal file objects, whose
close() methods do not return anything.
Use exception handler target variable to avoid reference cycle