view release on metacpan or search on metacpan
src/subversion/CHANGES view on Meta::CPAN
* mergeinfo: fix crash (r1519955)
* ra_serf: verify the result of xml parsing (r1501199 et al)
* ra_serf: improve error messages during commit (r1526439)
* ra_local: fix error with repository in Windows drive root (r1518184)
* fix crash on windows when piped command is interrupted (r1522892)
* fix crash in the crash handler on windows (r1532023)
* fix assertion when upgrading old working copies (r1520529)
- Server-side bugfixes:
* hotcopy: cleanup unpacked revprops with '--incremental' (r1512300 et al)
* fix OOM on concurrent requests at threaded server start (r1527103 et al)
* fsfs: improve error message when unsupported fsfs format found (r1534158)
* fix memory problem in 3rd party FS module loader (r1519615 et al)
Developer-visible changes:
- General:
* allow compiling against serf 1.3 and later on Windows (r1517123)
- Bindings:
* javahl: canonicalize path for streamFileContent method (r1524869)
src/subversion/CHANGES view on Meta::CPAN
* FSFS cache mergeinfo requested during 'log -g' (r1395439)
* many FSFS caching improvements (r1390435, r1390447)
* directory and property deltification option in FSFS (issue #4084)
* fine-grained control deltification behavior via fsfs.conf (r1311476)
* FSFS de-duplication ("rep sharing") now works within a revision (r1397773)
* FSFS de-duplication now works for properties as well (r1243312)
* read FSFS data using fewer fopen calls (issue #3372)
* 'svnadmin verify' will now check meta data (issues #3956, #4211)
* 'svnadmin verify' now checks for issue #4129 style corruption (r1304656)
* new --client-speed option for svnserve (r1391788)
* new --single-threaded option in svnserve (r1296018)
* hook script templates are now marked as executable (r1153414)
* error out on non-canonical fspaths in the authz file (r1166111)
* improve path lookup performance in FSFS (r1442088)
* svnserve now logs explicit path and reason for authz failures (r1446542)
* validate offsets from rep-cache to prevent FSFS corruption (issue #4277)
* new AuthzSVNGroupsFile option to store authz groups separately (r1438407)
* new 'SVNAllowBulkUpdates prefer' option for mod_dav_svn (r1417642, et al)
* new 'SVNMasterVersion' option for mod_dav_svn (r1398962)
* added virtual-host support to 'svnserve' (r1401296)
* new fsfs-stats tool which prints FSFS repository stats (r1410995)
src/subversion/CHANGES view on Meta::CPAN
* 'svnadmin recover' truncates rep-cache at the right point (issue #4077)
* fix crashes in dumpstream loading with skipped revs (r1214202, r1214216)
* fix 'svn log -g' incorrectly treating rename as merge (issue #4022)
* fix bug where fsfs file-hinting fails (issue #4320)
* don't leak path of repository on server's disk to clients (r1330906)
* remove spurious is-fresh-txn-root from empty revision files (issue #4031)
* fix a stdout handling problem in 'svnlook diff' (r1411971)
* fix erratic behaviour in 'svnlook diff' showing property diffs (r1412224)
* fix inconsistent authz error messages in 'svn log' in svnserve (r1292462)
* fix svndumpfilter for empty paths in included or excluded lists (r1294583)
* make fsfs packing threadsafe (r1376011)
* don't error out on intermittent memcached failures (r1394470)
* fix a ra_svn deadlock with zero-copy server option (r1465622)
- Other tool improvements and bugfixes:
* 'svnmucc' promoted to first-class supported utility (issue #3308, #4279)
* make 'svnmucc' prompt for log messages (issue #3418)
* rename 'svnauthz-validate' to 'svnauthz' (issue #4284)
* make 'svnauthz' optionally validate user/path access (r1197588)
* fix mailer.py test suite problems (r1449582)
* fix mailer.py not showing dirs with property deletions (r1449582)
src/subversion/CHANGES view on Meta::CPAN
- Client-side bugfixes:
* upgrade: fix an assertion when used with pre-1.3 wcs (r1530849)
* ra_local: fix error with repository in Windows drive root (r1518184)
* fix crash on windows when piped command is interrupted (r1522892)
* fix externals that point at redirected locations (issues #4428, #4429)
* diff: fix incorrect calculation of changes in some cases (issue #4283)
* diff: fix errors with added/deleted targets (issues #4153, #4421)
- Server-side bugfixes:
* mod_dav_svn: Prevent crashes with some 3rd party modules (r1537360 et al)
* fix OOM on concurrent requests at threaded server start (r1527103 et al)
* fsfs: limit commit time of files with deep change histories (r1536790)
* mod_dav_svn: canonicalize paths properly (r1542071)
- Other tool improvements and bugfixes:
* mod_dontdothat: Fix the uri parser (r1542069 et al)
Developer-visible changes:
- Bindings:
* javahl: canonicalize path for streamFileContent method (r1524869)
src/subversion/CHANGES view on Meta::CPAN
* fix svnserve memory use after clear (issue #4365)
* fix repository corruption on power/disk failure on Windows (r1483781)
Developer-visible changes
- General:
* make get-deps.sh compatible with Solaris /bin/sh (r1451678)
* fix infinite recursion bug in get-deps.sh (r1421541, r1424977)
* fix uninitialised output parameter of svn_fs_commit_txn() (r1461743)
- Bindings:
* fix JavaHL thread-safety bug (r1476359)
Version 1.7.9
(04 Apr 2013, from /branches/1.7.x)
http://svn.apache.org/repos/asf/subversion/tags/1.7.9
User-visible changes
- Client-side bugfixes:
* improved error messages about svn:date and svn:author props. (r1440620)
* fix local_relpath assertion (issue #4257)
* fix memory leak in `svn log` over svn:// (r1458341)
src/subversion/CHANGES view on Meta::CPAN
- Client-side bugfixes:
* fix crash with --username option on Windows (r1396285)
* add missing attributes to "svn log -v --xml" output (r1398100)
* fix svn patch ignoring hunks after no trailing newline (r1399174)
* fix hang with ra_serf during error processing (r1403583)
* ignore file externals with mergeinfo when merging (r1401915)
* fix "svnmucc cp" segfault with a missing last argument (issue #4079)
* fix conflict handling on symlinks (issue #4091)
- Server-side bugfixes:
* properly detect threading availability (r1398325)
* fix "svnadmin load --bypass-prop-validation" (r1237779)
* fix parsing of [groupsfoo] sections in authz file (issue #3531)
* add Vary: header to GET responses to improve cacheability (r1390653)
* fix fs_fs to cleanup after failed rep transmission (r1403964, et al)
* fix mod_dav_svn to complain about revisions > HEAD (r1403588)
Developer-visible changes:
- General:
* fix incorrect status returned by 1.6 API (r1403258)
* fix compilation with g++ 4.7 (r1345740)
src/subversion/CHANGES view on Meta::CPAN
(01 Jun 2011, from /branches/1.6.x)
http://svn.apache.org/repos/asf/subversion/tags/1.6.17
User-visible changes:
* improve checkout speed on Windows (issue #3719)
* make 'blame -g' more efficient with large mergeinfo (r1094692)
* avoid some invalid handle exceptions on Windows (r1095654)
* preserve log message with a non-zero editor exit (r1072084)
* fix FSFS cache performance on 64-bit platforms (r1103665)
* make svn cleanup tolerate obstructed directories (r1091881)
* fix deadlock in multithreaded servers serving FSFS repositories (r1104093)
* detect very occasional corruption and abort commit (issue #3845)
* fixed: file externals cause non-inheritable mergeinfo (issue #3843)
* fixed: file externals cause mixed-revision working copies (issue #3816)
* fix crash in mod_dav_svn with GETs of baselined resources (r1104126)
See CVE-2011-1752, and descriptive advisory at
http://subversion.apache.org/security/CVE-2011-1752-advisory.txt
* fixed: write-through proxy could directly commit to slave (r917523)
* detect a particular corruption condition in FSFS (r1100213)
* improve error message when clients refer to unknown revisions (r939000)
* bugfixes and optimizations to the DAV mirroring code (r878607)
src/subversion/CHANGES view on Meta::CPAN
(22 Oct 2009, from /branches/1.6.x)
http://svn.apache.org/repos/asf/subversion/tags/1.6.6
User-visible changes:
* fix crash during 'svn update' (r39673)
* respect Apache's ServerSignature directive (r40008, -21, -31)
* don't add a file with mixed line endings, and then abort (issue #2713)
* support Neon 0.29.
* fix a crash in 'svn rm --force' (r37953)
* handle tree conflicts involving replacements (issue #3486)
* allow non-threadsafe sqlite if APR has no threads (r39301)
* print newline before plaintext SSL cert / password prompts (r38982, r39302)
* improve merge performance with implicit subtree mergeinfo (issue #3443)
* fix "libsvn_ra_svn/marshal.c assertion failed (opt || cstr)" (issue #3485)
* make file externals work for binary files (issue #3368)
* perform MIME type matching case-insensitively (issue #3479)
* do not treat non-existent revisions as HEAD in 'svn export' (issue #3400)
* revert r36720's default MIME type change back to "text/plain" (issue #3508)
* improve "tree conflict already exists" error message (r38872)
* fix failure to commit replacement of a directory (issue #3281)
* fix mod_dav_svn parent dir links to preserve peg revisions (issue #3425)
src/subversion/CHANGES view on Meta::CPAN
* fixed: 'svn merge --depth' inconsistencies (issue #2825)
* fixed: ra_serf test failures (1.5.x-ra_serf-backports branch)
* fixed: memory leak and crashes in FS (r32545, -58, -82)
* fixed: core dump with relative externals (issue #3237)
* fixed: 'svn copy' working copy corruption (r32467, -70)
* fixed: perl bindings errors in non-English locale (issue #3258)
* fixed: 'svn merge' incorrectly reverses previous merges (r32494, -522, -523)
* fixed: 'svn merge' errors with subtree mergeinfo (issue #3067)
Developer-visible changes:
* make libsvn_ra_neon initialization thread-safe (r32497, r32510)
* respect LDFLAGS in SWIG bindings (r32416, r32421, r32442)
* fixed: test failures in non-English locales (r32491)
Version 1.5.1
(26 Jul 2008, from /branches/1.5.x)
http://svn.apache.org/repos/asf/subversion/tags/1.5.1
User-visible changes:
* mergeinfo on switched subtrees should elide in repos (issue #3188)
src/subversion/CHANGES view on Meta::CPAN
* fix 'svn merge --dry-run'
* fix 'properties hanging after a rename' issue (#1303)
* fix odd behavior of 'svn up -r PREV filename' (#1304)
* fix delete-tracking bug (#1348)
* fix dump and load corner cases (#1290)
* ra_dav server more resilient for foreign deltaV clients
* numerous ra_svn changes - must update clients and servers
* fix export over ra_svn (#1318)
* fix ra_svn error transmission bug (#1146)
* fix ra_svn corruption in tunnel mode (#1145)
* make svnserve multi-threaded on non-fork platforms (now works on Windows)
* remove svnserve -F and -S options
* various memory use improvements (#1323)
* various performance improvements for all protocols
* various performance improvements for 'svnadmin dump' and svnlook
* various subversion book updates (you have read the book right?)
* more cvs2svn.py improvements (and more to follow)
* new debugging script normalize-dump.py to normalize dump output
Developer-visible changes:
* path-based editor drivers
src/subversion/CHANGES view on Meta::CPAN
* neon debugging now tweakable via run-time config file
* more progress on Subversion Book rewrite.
* new ./configure --with-diffutils
* begin work on client/server checksums (#649)
* regression tests now depend on svnadmin dump/load
* lose src_err field of svn_error_t
* many fs function renames: begins fs database back-end abstraction.
* new libsvn_repos prop-validating wrappers
* lots of work on build-system dependency graph generation (for SWIG building)
* swig binding work:
- python svn calls can now run as independent threads
- new java-binding build system
- improved swig building features: --prefix, LDFLAGS behaviors
* many, many bug fixes: wc->repos copies (#1029), #943 followup
(#1023), copies of copies (#830), 'svn resolve' cleans up entries
file (#1021), prop merging (#1012), segfault fixes (#1027, #1055),
autoconf 2.5X (#886), O(1) copies (#717), new 'failed revert'
signal (#714), detect missing schedule-add conflicts (#899, #863),
begin dav namespace switchover (#840), status bugs, url auth
inference (#1038), log bug (#1028), newline prompt (#1039),
svnadmin errorchecking, url syntax errors (#1057, #1058), apr/utf8
src/subversion/build/ac-macros/aprutil.m4 view on Meta::CPAN
APU_WANTED_REGEX_MATCH=1
break
fi
done
if test $APU_WANTED_REGEX_MATCH -eq 0; then
echo "wanted regexes are $APRUTIL_WANTED_REGEXES"
AC_MSG_ERROR([invalid APRUTIL version found])
fi
dnl Get libraries and thread flags from APRUTIL ---------------------
apu_ldflags="`$apu_config --ldflags`"
if test $? -ne 0; then
AC_MSG_ERROR([apu-config --ldflags failed])
fi
LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS($apu_ldflags)`"
SVN_APRUTIL_INCLUDES="`$apu_config --includes`"
if test $? -ne 0; then
AC_MSG_ERROR([apu-config --includes failed])
src/subversion/build/ac-macros/sqlite.m4 view on Meta::CPAN
#include "$sqlite_amalg"
#if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num
SQLITE_VERSION_OKAY
#endif],
[AC_MSG_RESULT([amalgamation found and is okay])
_SVN_SQLITE_DSO_LIBS
AC_DEFINE(SVN_SQLITE_INLINE, 1,
[Defined if svn should use the amalgamated version of sqlite])
SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`"
if test -n "$svn_sqlite_dso_ldflags"; then
SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread"
else
SVN_SQLITE_LIBS="-lpthread"
fi
svn_lib_sqlite="yes"],
[AC_MSG_RESULT([unsupported amalgamation SQLite version])])
fi
])
dnl SVN_SQLITE_VERNUM_PARSE(version_string, result_var)
dnl
dnl Parse a x.y[.z] version string version_string into a number result_var.
AC_DEFUN(SVN_SQLITE_VERNUM_PARSE,
src/subversion/build/libtool.m4 view on Meta::CPAN
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
_LT_TAGVAR(inherit_rpath, $1)=no
_LT_TAGVAR(link_all_deplibs, $1)=unknown
_LT_TAGVAR(module_cmds, $1)=
_LT_TAGVAR(module_expsym_cmds, $1)=
_LT_TAGVAR(old_archive_from_new_cmds, $1)=
_LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
_LT_TAGVAR(thread_safe_flag_spec, $1)=
_LT_TAGVAR(whole_archive_flag_spec, $1)=
# include_expsyms should be a list of space-separated symbols to be *always*
# included in the symbol list
_LT_TAGVAR(include_expsyms, $1)=
# exclude_expsyms can be an extended regexp of symbols to exclude
# it will be wrapped by ' (' and ')$', so one must not match beginning or
# end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
# as well as any symbol that contains 'd'.
_LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
src/subversion/build/libtool.m4 view on Meta::CPAN
[Symbols that should not be listed in the preloaded symbols])
_LT_TAGDECL([], [include_expsyms], [1],
[Symbols that must always be exported])
_LT_TAGDECL([], [prelink_cmds], [2],
[Commands necessary for linking programs (against libraries) with templates])
_LT_TAGDECL([], [postlink_cmds], [2],
[Commands necessary for finishing linking programs])
_LT_TAGDECL([], [file_list_spec], [1],
[Specify filename containing input files])
dnl FIXME: Not yet implemented
dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
dnl [Compiler flag to generate thread safe objects])
])# _LT_LINKER_SHLIBS
# _LT_LANG_C_CONFIG([TAG])
# ------------------------
# Ensure that the configuration variables for a C compiler are suitably
# defined. These variables are subsequently used by _LT_CONFIG to write
# the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_C_CONFIG],
[m4_require([_LT_DECL_EGREP])dnl
src/subversion/build/ltmain.sh view on Meta::CPAN
precious_files_regex=
prefer_static_libs=no
preload=false
prev=
prevarg=
release=
rpath=
xrpath=
perm_rpath=
temp_rpath=
thread_safe=no
vinfo=
vinfo_number=no
weak_libs=
single_module=$wl-single_module
func_infer_tag $base_compile
# We need to know -static, to get the right output filenames.
for arg
do
case $arg in
src/subversion/build/ltmain.sh view on Meta::CPAN
*-*-rhapsody* | *-*-darwin1.[012])
# Rhapsody C and math libraries are in the System framework
func_append deplibs " System.ltframework"
continue
;;
*-*-sco3.2v5* | *-*-sco5v6*)
# Causes problems with __ctype
test X-lc = "X$arg" && continue
;;
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
# Compiler inserts libc in the correct place for threads to work
test X-lc = "X$arg" && continue
;;
esac
elif test X-lc_r = "X$arg"; then
case $host in
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
# Do not include libc_r directly, use -pthread flag.
continue
;;
esac
fi
func_append deplibs " $arg"
continue
;;
-mllvm)
prev=mllvm
src/subversion/build/ltmain.sh view on Meta::CPAN
# classes, name mangling, and exception handling.
# Darwin uses the -arch flag to determine output architecture.
-model|-arch|-isysroot|--sysroot)
func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
prev=xcompiler
continue
;;
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
case "$new_inherited_linker_flags " in
*" $arg "*) ;;
* ) func_append new_inherited_linker_flags " $arg" ;;
esac
continue
;;
src/subversion/build/ltmain.sh view on Meta::CPAN
-static | -static-libtool-libs)
# The effects of -static are defined in a previous loop.
# We used to do the same as -all-static on platforms that
# didn't have a PIC flag, but the assumption that the effects
# would be equivalent was wrong. It would break on at least
# Digital Unix and AIX.
continue
;;
-thread-safe)
thread_safe=yes
continue
;;
-version-info)
prev=vinfo
continue
;;
-version-number)
prev=vinfo
src/subversion/build/ltmain.sh view on Meta::CPAN
if test dlopen = "$pass"; then
# Collect dlpreopened libraries
save_deplibs=$deplibs
deplibs=
fi
for deplib in $libs; do
lib=
found=false
case $deplib in
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
func_append compiler_flags " $deplib"
if test lib = "$linkmode"; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) func_append new_inherited_linker_flags " $deplib" ;;
esac
src/subversion/build/ltmain.sh view on Meta::CPAN
*-*-netbsd*)
# Don't link with libc until the a.out ld.so is fixed.
;;
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
# Do not include libc due to us having libc/libc_r.
;;
*-*-sco3.2v5* | *-*-sco5v6*)
# Causes problems with __ctype
;;
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
# Compiler inserts libc in the correct place for threads to work
;;
*)
# Add libc to deplibs on all other systems if necessary.
if test yes = "$build_libtool_need_lc"; then
func_append deplibs " -lc"
fi
;;
esac
fi
src/subversion/build/ltmain.sh view on Meta::CPAN
else
gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $convenience
func_append libobjs " $func_extract_archives_result"
test "X$libobjs" = "X " && libobjs=
fi
fi
if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
eval flag=\"$thread_safe_flag_spec\"
func_append linker_flags " $flag"
fi
# Make a backup of the uninstalled library when relinking
if test relink = "$opt_mode"; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
fi
# Do each of the archive commands.
if test yes = "$module" && test -n "$module_cmds"; then
src/subversion/build/run_tests.py view on Meta::CPAN
test programs.
Each <prog> should be the full path (absolute or from the current directory)
and filename of a test program, optionally followed by '#' and a comma-
separated list of test numbers; the default is to run all the tests in it.
'''
# A few useful constants
SVN_VER_MINOR = 8
import os, re, subprocess, sys, imp, threading
from datetime import datetime
import getopt
try:
my_getopt = getopt.gnu_getopt
except AttributeError:
my_getopt = getopt.getopt
# Ensure the compiled C tests use a known locale (Python tests set the locale
# explicitly).
src/subversion/build/run_tests.py view on Meta::CPAN
import svntest.main
# set up our options
svntest.main.create_default_options()
if self.base_url is not None:
svntest.main.options.test_area_url = self.base_url
if self.enable_sasl is not None:
svntest.main.options.enable_sasl = True
if self.parallel is not None:
svntest.main.options.parallel = svntest.main.default_num_threads
if self.config_file is not None:
svntest.main.options.config_file = self.config_file
if self.verbose is not None:
svntest.main.options.verbose = True
if self.cleanup is not None:
svntest.main.options.cleanup = True
if self.fs_type is not None:
svntest.main.options.fs_type = self.fs_type
if self.http_library is not None:
svntest.main.options.http_library = self.http_library
src/subversion/build/run_tests.py view on Meta::CPAN
sys.stdout.flush()
sys.stderr.flush()
self.log.flush()
old_stdout = os.dup(sys.stdout.fileno())
old_stderr = os.dup(sys.stderr.fileno())
os.dup2(self.log.fileno(), sys.stdout.fileno())
os.dup2(self.log.fileno(), sys.stderr.fileno())
# These have to be class-scoped for use in the progress_func()
self.dots_written = 0
self.progress_lock = threading.Lock()
def progress_func(completed, total):
"""Report test suite progress. Can be called from multiple threads
in parallel mode."""
if not self.log:
return
dots = (completed * dot_count) / total
if dots > dot_count:
dots = dot_count
self.progress_lock.acquire()
if self.dots_written < dot_count:
dots_to_write = dots - self.dots_written
self.dots_written = dots
src/subversion/configure view on Meta::CPAN
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
$as_echo "none" >&6; }
fi
$as_echo "#define SVN_SQLITE_INLINE 1" >>confdefs.h
SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`"
if test -n "$svn_sqlite_dso_ldflags"; then
SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread"
else
SVN_SQLITE_LIBS="-lpthread"
fi
svn_lib_sqlite="yes"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported amalgamation SQLite version" >&5
$as_echo "unsupported amalgamation SQLite version" >&6; }
fi
rm -f conftest*
fi
src/subversion/configure view on Meta::CPAN
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
$as_echo "none" >&6; }
fi
$as_echo "#define SVN_SQLITE_INLINE 1" >>confdefs.h
SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`"
if test -n "$svn_sqlite_dso_ldflags"; then
SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread"
else
SVN_SQLITE_LIBS="-lpthread"
fi
svn_lib_sqlite="yes"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported amalgamation SQLite version" >&5
$as_echo "unsupported amalgamation SQLite version" >&6; }
fi
rm -f conftest*
fi
src/subversion/configure view on Meta::CPAN
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
$as_echo "none" >&6; }
fi
$as_echo "#define SVN_SQLITE_INLINE 1" >>confdefs.h
SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`"
if test -n "$svn_sqlite_dso_ldflags"; then
SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread"
else
SVN_SQLITE_LIBS="-lpthread"
fi
svn_lib_sqlite="yes"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported amalgamation SQLite version" >&5
$as_echo "unsupported amalgamation SQLite version" >&6; }
fi
rm -f conftest*
fi
src/subversion/configure view on Meta::CPAN
hardcode_libdir_flag_spec=
hardcode_libdir_separator=
hardcode_minus_L=no
hardcode_shlibpath_var=unsupported
inherit_rpath=no
link_all_deplibs=unknown
module_cmds=
module_expsym_cmds=
old_archive_from_new_cmds=
old_archive_from_expsyms_cmds=
thread_safe_flag_spec=
whole_archive_flag_spec=
# include_expsyms should be a list of space-separated symbols to be *always*
# included in the symbol list
include_expsyms=
# exclude_expsyms can be an extended regexp of symbols to exclude
# it will be wrapped by ' (' and ')$', so one must not match beginning or
# end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
# as well as any symbol that contains 'd'.
exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
src/subversion/subversion/bindings/ctypes-python/csvn/ext/callback_receiver.py view on Meta::CPAN
# specific language governing permissions and limitations
# under the License.
"""
Some helper classes for converting c-style functions
which accept callbacks into Pythonic generator
functions.
"""
from threading import Thread, Lock, Condition, currentThread
import sys, traceback, weakref
class CallbackReceiver(Thread):
"""A thread which collects input from callbacks and
sends them back to the main thread via an iterator.
Classes which inherit from this class should define
a 'collect' method which dispatches results to the
iterator via the 'send' method."""
def __init__(self, *args, **kwargs):
"""Create a new callback iterator"""
Thread.__init__(self)
self.args = args
self.kwargs = kwargs
src/subversion/subversion/bindings/ctypes-python/csvn/ext/callback_receiver.py view on Meta::CPAN
self.done = False
self.consumed = False
self.exception = None
def run(self, *args, **kwargs):
try:
try:
self.collect(*self.args, **self.kwargs)
except:
# Looks like the child thread bombed out!
# Find out what happened.
tb = traceback.format_exception(*sys.exc_info())
self.exception = CollectionError(
"Exception thrown by collect method\n"
"%s" % "".join(tb))
finally:
# Wake up the parent, and tell 'im we're all
# done our work
src/subversion/subversion/bindings/ctypes-python/csvn/ext/callback_receiver.py view on Meta::CPAN
self.result = result
self.consumed = False
# A new result is ready!
self.result_produced.notify()
# Wait for the iterator to pickup the result
while not self.done and self.consumed is not True:
self.result_consumed.wait(0.5)
# If the calling thread died, we should stop.
if not self.calling_thread.isAlive():
self.done = True
finally:
self.lock.release()
def shutdown(self, _):
"""Shut down the child thread"""
# Tell the child thread to wake up (and die) if it has been
# waiting for us to consume some data
self.done = True
try:
self.lock.acquire()
self.result_consumed.notify()
finally:
self.lock.release()
def __iter__(self):
"""Iterate over the callback results"""
# Save a reference to the current thread
self.calling_thread = currentThread()
# Setup the iterator
iterator = iter(_CallbackResultIterator(self))
# Cleanup: When the iterator goes out of scope, shut
# down the collector thread.
self.cleanup = weakref.ref(iterator, self.shutdown)
return iterator
class _CallbackResultIterator(object):
def __init__(self, receiver):
self.receiver = receiver
def __iter__(self):
# Start up receiver thread, and
# wait for the first result
self.receiver.done = False
try:
self.receiver.lock.acquire()
self.receiver.start()
if not self.receiver.done:
self.receiver.result_produced.wait()
finally:
self.receiver.lock.release()
src/subversion/subversion/bindings/ctypes-python/csvn/ext/callback_receiver.py view on Meta::CPAN
try:
self.receiver.lock.acquire()
self.receiver.result_produced.wait()
finally:
self.receiver.lock.release()
# Look like a result is ready. Consume it
if not self.receiver.done and self.receiver.result is not None:
yield self.receiver.result
# Notify the child thread that we've consumed their output
try:
self.receiver.lock.acquire()
self.receiver.consumed = True
self.receiver.result_consumed.notify()
finally:
self.receiver.lock.release()
# If the child thread raised an exception, re-raise it
if self.receiver.exception:
raise self.receiver.exception
# Wait for the thread to exit before returning
self.receiver.join()
class CollectionError(Exception):
pass
src/subversion/subversion/bindings/ctypes-python/csvn/ext/listmixin.py view on Meta::CPAN
def __copy__(self):
return self._constructor(self)
def __deepcopy__(self, memo={}):
ans = self._constructor([])
memo[id(self)] = ans
ans[:] = copy.deepcopy(tuple(self), memo)
return ans
# Tracking idea from R. Hettinger's deque class. It's not
# multithread safe, but does work with the builtin Python classes.
def __str__(self, track=[]):
if id(self) in track:
return '...'
track.append(id(self))
ans = '%r' % (list(self),)
track.remove(id(self))
return ans
def __repr__(self):
return self.__class__.__name__ + '(' + str(self) + ')'
src/subversion/subversion/bindings/javahl/native/JNICriticalSection.cpp view on Meta::CPAN
#include "JNIUtil.h"
#include "JNIMutex.h"
/**
* Create the critical section and lock the mutex
* @param mutext the underlying mutex
*/
JNICriticalSection::JNICriticalSection(JNIMutex &mutex)
{
m_mutex = &mutex;
apr_status_t apr_err = apr_thread_mutex_lock(mutex.m_mutex);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_thread_mutex_lock");
return;
}
}
/**
* Release the mutex and the destroy the critical section.
*/
JNICriticalSection::~JNICriticalSection()
{
apr_status_t apr_err = apr_thread_mutex_unlock(m_mutex->m_mutex);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_thread_mutex_unlock");
return;
}
}
src/subversion/subversion/bindings/javahl/native/JNICriticalSection.h view on Meta::CPAN
#ifndef JNICRITICALSECTION_H
#define JNICRITICALSECTION_H
class JNIMutex;
/**
* This class holds a mutex which will be locked during the constructor and
* released during the destructor. If the object is created on the stack, this
* garanties that the mutex will be released all the time if the block is left.
* Only one thread can enter all the critrical sections secured by the same
* mutex.
*/
class JNICriticalSection
{
public:
JNICriticalSection(JNIMutex &mutex);
~JNICriticalSection();
private:
/**
* The mutex to be locked and released.
src/subversion/subversion/bindings/javahl/native/JNIMutex.cpp view on Meta::CPAN
#include <apr_lib.h>
#include "JNIUtil.h"
/**
* Create an object and allocate an apr mutex
* @param pool the pool from which the mutex is allocated
*/
JNIMutex::JNIMutex(apr_pool_t *pool)
{
apr_status_t apr_err =
apr_thread_mutex_create(&m_mutex, APR_THREAD_MUTEX_NESTED, pool);
if (apr_err)
JNIUtil::handleAPRError(apr_err, "apr_thread_mutex_create");
}
/**
* Destroy the apr mutex and the object.
*/
JNIMutex::~JNIMutex()
{
apr_status_t apr_err = apr_thread_mutex_destroy(m_mutex);
if (apr_err)
JNIUtil::handleAPRError(apr_err, "apr_thread_mutex_destroy");
}
src/subversion/subversion/bindings/javahl/native/JNIMutex.h view on Meta::CPAN
*
* @file JNIMutex.h
* @brief Interface of the class JNIMutex
*/
#ifndef JNIMUTEX_H
#define JNIMUTEX_H
class JNICriticalSection;
struct apr_pool_t;
struct apr_thread_mutex_t;
/**
* This class holds a apr mutex for the use of JNICriticalSection.
*/
class JNIMutex
{
public:
JNIMutex(apr_pool_t *pool);
~JNIMutex();
friend class JNICriticalSection;
private:
/**
* The apr mutex.
*/
apr_thread_mutex_t *m_mutex;
};
#endif // JNIMUTEX_H
src/subversion/subversion/bindings/javahl/native/JNIThreadData.cpp view on Meta::CPAN
*
* @file JNIThreadData.cpp
* @brief Implementation of the class JNIThreadData
*/
#include "JNIThreadData.h"
#include <apr_strings.h>
#include <apr_tables.h>
#include <apr_general.h>
#include <apr_lib.h>
#include <apr_thread_proc.h>
#include "JNIUtil.h"
apr_threadkey_t *JNIThreadData::g_key;
/**
* Create and initialize a new object.
*/
JNIThreadData::JNIThreadData()
{
m_env = NULL;
m_exceptionThrown = false;
m_previous = NULL;
}
JNIThreadData::~JNIThreadData()
{
}
/**
* Initialize the thread local storage.
* @return success or failure
*/
bool JNIThreadData::initThreadData()
{
// If already initialized -> nothing to do.
if (g_key != NULL)
return false;
// Request a key for the thread local storage from the global pool
// and register a callback function called when the thread is
// deleted.
apr_status_t apr_err = apr_threadkey_private_create(&g_key,
del,
JNIUtil::getPool());
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_threadkey_private_create");
return false;
}
return true;
}
/**
* Get the thread local storage for this thread.
* @return thread local storage
*/
JNIThreadData *JNIThreadData::getThreadData()
{
// We should never be called before initThreadData
if (g_key == NULL)
return NULL;
// Retrieve the thread local storage from APR.
JNIThreadData *data = NULL;
apr_status_t apr_err = apr_threadkey_private_get
(reinterpret_cast<void**>(&data), g_key);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_threadkey_private_get");
return NULL;
}
// Not already allocated.
if (data == NULL)
{
// Allocate and store to APR.
data = new JNIThreadData;
apr_err = apr_threadkey_private_set (data, g_key);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_threadkey_private_set");
return NULL;
}
}
return data;
}
/**
* Allocate a new ThreadData for the current call from Java and push
* it on the stack
*/
void JNIThreadData::pushNewThreadData()
{
JNIThreadData *data = NULL;
apr_status_t apr_err = apr_threadkey_private_get
(reinterpret_cast<void**>(&data), g_key);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_threadkey_private_get");
return;
}
JNIThreadData *newData = new JNIThreadData();
newData->m_previous =data;
apr_err = apr_threadkey_private_set(newData, g_key);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_threadkey_private_set");
return;
}
}
/**
* Pop the current ThreadData from the stack, because the call
* completed.
*/
void JNIThreadData::popThreadData()
{
JNIThreadData *data = NULL;
apr_status_t apr_err = apr_threadkey_private_get
(reinterpret_cast<void**>(&data), g_key);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_threadkey_private_get");
return;
}
if (data == NULL)
return;
JNIThreadData *oldData = data->m_previous;
delete data;
apr_err = apr_threadkey_private_set(oldData, g_key);
if (apr_err)
{
JNIUtil::handleAPRError(apr_err, "apr_threadkey_private_set");
return;
}
}
/**
* Callback called by APR when the thread dies. Deletes the thread
* local storage.
*/
void JNIThreadData::del(void *p)
{
delete reinterpret_cast<JNIThreadData*>(p);
}
src/subversion/subversion/bindings/javahl/native/JNIThreadData.h view on Meta::CPAN
* @file JNIThreadData.h
* @brief Interface of the class JNIThreadData
*/
#ifndef JNITHREADDATA_H
#define JNITHREADDATA_H
#include <jni.h>
#include "JNIUtil.h"
struct apr_threadkey_t;
/**
* This class implements thread local storage for JNIUtil.
*/
class JNIThreadData
{
public:
static void del(void *);
static JNIThreadData *getThreadData();
static bool initThreadData();
static void pushNewThreadData();
static void popThreadData();
JNIThreadData();
src/subversion/subversion/bindings/javahl/native/JNIThreadData.h view on Meta::CPAN
*/
bool m_exceptionThrown;
/**
* A buffer used for formating messages.
*/
char m_formatBuffer[JNIUtil::formatBufferSize];
private:
/**
* Pointer to previous thread information to enable reentrent
* calls.
*/
JNIThreadData *m_previous;
/**
* The key to address this thread local storage.
*/
static apr_threadkey_t *g_key;
};
#endif // JNITHREADDATA_H
src/subversion/subversion/bindings/javahl/native/JNIUtil.cpp view on Meta::CPAN
{
// This method has to be run only once during the run a program.
static bool run = false;
svn_error_t *err;
if (run) // already run
return true;
run = true;
// Do not run this part more than one time. This leaves a small
// time window when two threads create their first SVNClient and
// SVNAdmin at the same time, but I do not see a better option
// without APR already initialized
if (g_inInit)
return false;
g_inInit = true;
g_initEnv = env;
apr_status_t status;
src/subversion/subversion/bindings/javahl/native/JNIUtil.cpp view on Meta::CPAN
svn_utf_initialize2(FALSE, g_pool); /* Optimize character conversions */
svn_fs_initialize(g_pool); /* Avoid some theoretical issues */
svn_ra_initialize(g_pool);
/* We shouldn't fill the JVMs memory with FS cache data unless explictly
requested. */
{
svn_cache_config_t settings = *svn_cache_config_get();
settings.cache_size = 0;
settings.file_handle_count = 0;
settings.single_threaded = FALSE;
svn_cache_config_set(&settings);
}
#ifdef ENABLE_NLS
#ifdef WIN32
{
WCHAR ucs2_path[MAX_PATH];
char *utf8_path;
const char *internal_path;
apr_pool_t *pool;
src/subversion/subversion/bindings/javahl/native/JNIUtil.cpp view on Meta::CPAN
// Build all mutexes.
g_finalizedObjectsMutex = new JNIMutex(g_pool);
if (isExceptionThrown())
return false;
g_logMutex = new JNIMutex(g_pool);
if (isExceptionThrown())
return false;
// initialized the thread local storage
if (!JNIThreadData::initThreadData())
return false;
setEnv(env);
if (isExceptionThrown())
return false;
g_initEnv = NULL;
g_inInit = false;
return true;
src/subversion/subversion/bindings/javahl/native/JNIUtil.cpp view on Meta::CPAN
/**
* Return if an exception has been detected.
* @return a exception has been detected
*/
bool JNIUtil::isExceptionThrown()
{
// During init -> look in the global member.
if (g_inInit)
return g_initException;
// Look in the thread local storage.
JNIThreadData *data = JNIThreadData::getThreadData();
return data == NULL || data->m_exceptionThrown;
}
/**
* Store the JNI environment for this request in the thread local
* storage.
* @param env the JNI environment
*/
void JNIUtil::setEnv(JNIEnv *env)
{
JNIThreadData::pushNewThreadData();
JNIThreadData *data = JNIThreadData::getThreadData();
data->m_env = env;
data->m_exceptionThrown = false;
}
src/subversion/subversion/bindings/javahl/native/JNIUtil.cpp view on Meta::CPAN
/**
* Return the JNI environment to use
* @return the JNI environment
*/
JNIEnv *JNIUtil::getEnv()
{
// During init -> look into the global variable.
if (g_inInit)
return g_initEnv;
// Look in the thread local storage.
JNIThreadData *data = JNIThreadData::getThreadData();
return data->m_env;
}
/**
* Check if a Java exception has been thrown.
* @return is a Java exception has been thrown
*/
bool JNIUtil::isJavaExceptionThrown()
{
src/subversion/subversion/bindings/javahl/native/JNIUtil.cpp view on Meta::CPAN
JNIEnv *env = getEnv();
return env->NewStringUTF(txt);
}
void
JNIUtil::setExceptionThrown(bool flag)
{
if (g_inInit)
{
// During global initialization, store any errors that occur
// in a global variable (since thread-local storage may not
// yet be available).
g_initException = flag;
}
else
{
// When global initialization is complete, thread-local
// storage should be available, so store the error there.
JNIThreadData *data = JNIThreadData::getThreadData();
data->m_exceptionThrown = flag;
}
}
/**
* Initialite the log file.
* @param level the log level
* @param the name of the log file
src/subversion/subversion/bindings/javahl/native/JNIUtil.cpp view on Meta::CPAN
/**
* Returns a buffer to format error messages.
* @return a buffer for formating error messages
*/
char *JNIUtil::getFormatBuffer()
{
if (g_inInit) // during init -> use the global buffer
return g_initFormatBuffer;
// use the buffer in the thread local storage
JNIThreadData *data = JNIThreadData::getThreadData();
if (data == NULL) // if that does not exists -> use the global buffer
return g_initFormatBuffer;
return data->m_formatBuffer;
}
/**
* Returns the current log level.
* @return the log level
src/subversion/subversion/bindings/javahl/native/JNIUtil.h view on Meta::CPAN
/**
* @return Whether any Throwable has been raised.
*/
static bool isExceptionThrown();
static void handleAPRError(int error, const char *op);
/**
* Put @a object in the list of finalized objects queued up to be
* deleted (by another thread) during the next operation.
*
* @param object The C++ peer of the finalized (Java) object.
* @since 1.4.0
*/
static void enqueueForDeletion(SVNBase *object);
/**
* @deprecated Use the more appropriately named
* enqueueForDeletion() instead.
*/
src/subversion/subversion/bindings/javahl/native/JNIUtil.h view on Meta::CPAN
enum { noLog, errorLog, exceptionLog, entryLog } LogLevel;
private:
static void wrappedHandleSVNError(svn_error_t *err);
static void assembleErrorMessage(svn_error_t *err, int depth,
apr_status_t parent_apr_err,
std::string &buffer);
static void putErrorsInTrace(svn_error_t *err,
std::vector<jobject> &stackTrace);
/**
* Set the appropriate global or thread-local flag that an exception
* has been thrown to @a flag.
*/
static void setExceptionThrown(bool flag = true);
/**
* The log level of this module.
*/
static int g_logLevel;
/**
src/subversion/subversion/bindings/javahl/native/JNIUtil.h view on Meta::CPAN
* Mutex to secure the access to the log file.
*/
static JNIMutex *g_logMutex;
/**
* Flag, that an exception occurred during our initialization.
*/
static bool g_initException;
/**
* Flag, that one thread is in the init code. Cannot use mutex
* here since apr is not initialized yet.
*/
static bool g_inInit;
/**
* The JNI environment used during initialization.
*/
static JNIEnv *g_initEnv;
/**
src/subversion/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java view on Meta::CPAN
import java.io.FileNotFoundException;
import java.io.ByteArrayOutputStream;
import java.util.Collection;
import java.util.Set;
import java.util.List;
import java.util.Map;
/**
* This is the main client class. All Subversion client APIs are
* implemented in this class. This class is not threadsafe; if you
* need threadsafe access, use ClientSynchronized.
*/
public class SVNClient implements ISVNClient
{
/**
* Load the required native library.
*/
static
{
NativeResources.loadNativeLibrary();
}
src/subversion/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java view on Meta::CPAN
import java.util.HashSet;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Date;
import java.text.ParseException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
/**
* This is the main client class. All Subversion client APIs are
* implemented in this class. This class is not threadsafe; if you
* need threadsafe access, use SVNClientSynchronized.
*/
public class SVNClient implements SVNClientInterface
{
private org.apache.subversion.javahl.SVNClient aSVNClient;
/**
* Standard empty contructor, builds just the native peer.
*/
public SVNClient()
{
src/subversion/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java view on Meta::CPAN
* ====================================================================
* @endcopyright
*/
package org.tigris.subversion.javahl;
import java.io.OutputStream;
import java.util.Map;
/**
* This class provides a threadsafe wrapped for SVNClient
*/
public class SVNClientSynchronized implements SVNClientInterface
{
/**
* the wrapped object, which does all the work
*/
private SVNClient worker;
/**
* our class, we synchronize on that.
src/subversion/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java view on Meta::CPAN
return worker.getConfigDirectory();
}
}
/**
* @since 1.0
*/
public void cancelOperation() throws ClientException
{
// this method is not synchronized, because it is designed to be called
// from another thread
worker.cancelOperation();
}
/**
* @deprecated Use {@link #info2(String, Revision, Revision, int,
* InfoCallback)} instead.
* @since 1.0
*/
public Info info(String path) throws ClientException
{
src/subversion/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNInputStream.java view on Meta::CPAN
*/
package org.tigris.subversion.javahl;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
/**
* This class connects a java.io.PipedInputStream to a OutputInterface.
* The other side of the Pipe must read by another thread, or deadlocks
* will occur.
*/
public class SVNInputStream extends PipedInputStream
{
/**
* my connection to put data into subversion
*/
Outputer myOutputer;
/**
src/subversion/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNOutputStream.java view on Meta::CPAN
* ====================================================================
* @endcopyright
*/
package org.tigris.subversion.javahl;
import java.io.*;
/**
* This class connects a java.io.PipedOutputStream to a InputInterface.
* The other side of the Pipe must written by another thread, or deadlocks
* will occur.
*/
public class SVNOutputStream extends PipedOutputStream
{
/**
* My connection to receive data into subversion.
*/
Inputer myInputer;
/**
src/subversion/subversion/bindings/swig/include/proxy_apr.swg view on Meta::CPAN
* _is_valid weakref to ensure that the pool has not been destroyed (see
* proxy.swg to read the implementation details).
*
* This lets us gracefully throw an exception if you try to use an object
* that was allocated out of a pool that was cleared, rather than crashing
* like we used to do.
*
*/
%pythoncode %{
import threading
application_pool = None
application_pool_lock = threading.Lock()
class GenericSWIGWrapper:
def __init__(self, this, pool):
"""Create new Generic SWIG wrapper object"""
import weakref
self.this = this
self._parent_pool = pool
self._is_valid = weakref.ref(pool._is_valid)
def set_parent_pool(self, pool):
"""Set the parent pool of this object"""
src/subversion/subversion/bindings/swig/include/svn_types.swg view on Meta::CPAN
*/
#ifdef SWIGRUBY
%typemap(argout) const char **TO_TEMP_FILE
{
%append_output(svn_swig_rb_filename_to_temp_file(*$1));
}
#endif
/* -----------------------------------------------------------------------
Handle python thread locking.
Swig doesn't allow us to specify a language in the %exception command,
so we have to use #ifdefs for the python-specific parts.
*/
%exception {
#ifdef SWIGPYTHON
svn_swig_py_release_py_lock();
#endif
$action
src/subversion/subversion/bindings/swig/perl/native/core.c view on Meta::CPAN
XS(_wrap_svn_pool_create_allocator) {
{
svn_boolean_t arg1 ;
int val1 ;
int ecode1 = 0 ;
int argvi = 0;
apr_allocator_t *result = 0 ;
dXSARGS;
if ((items < 1) || (items > 1)) {
SWIG_croak("Usage: svn_pool_create_allocator(thread_safe);");
}
ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
if (!SWIG_IsOK(ecode1)) {
SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "svn_pool_create_allocator" "', argument " "1"" of type '" "svn_boolean_t""'");
}
arg1 = (svn_boolean_t)(val1);
{
result = (apr_allocator_t *)svn_pool_create_allocator(arg1);
src/subversion/subversion/bindings/swig/proxy/swig_python_external_runtime.swg view on Meta::CPAN
# if defined(SWIG_PYTHON_THREADS)
# undef SWIG_PYTHON_THREADS
# endif
#endif
#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */
# define SWIG_PYTHON_USE_GIL
# endif
# endif
# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
# ifndef SWIG_PYTHON_INITIALIZE_THREADS
# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads()
# endif
# ifdef __cplusplus /* C++ code */
class SWIG_Python_Thread_Block {
bool status;
PyGILState_STATE state;
public:
void end() { if (status) { PyGILState_Release(state); status = false;} }
SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
~SWIG_Python_Thread_Block() { end(); }
};
class SWIG_Python_Thread_Allow {
bool status;
PyThreadState *save;
public:
void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
~SWIG_Python_Thread_Allow() { end(); }
};
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block
# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end()
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow
# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end()
# else /* C code */
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block)
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread()
# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow)
# endif
# else /* Old thread way, not implemented, user must provide it */
# if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
# define SWIG_PYTHON_INITIALIZE_THREADS
# endif
# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
# endif
# if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
# define SWIG_PYTHON_THREAD_END_BLOCK
# endif
# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
# endif
# if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
# define SWIG_PYTHON_THREAD_END_ALLOW
# endif
# endif
#else /* No thread support */
# define SWIG_PYTHON_INITIALIZE_THREADS
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
# define SWIG_PYTHON_THREAD_END_BLOCK
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
# define SWIG_PYTHON_THREAD_END_ALLOW
#endif
/* -----------------------------------------------------------------------------
* Python API portion that goes into the runtime
* ----------------------------------------------------------------------------- */
src/subversion/subversion/bindings/swig/python/core.c view on Meta::CPAN
# if defined(SWIG_PYTHON_THREADS)
# undef SWIG_PYTHON_THREADS
# endif
#endif
#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */
# define SWIG_PYTHON_USE_GIL
# endif
# endif
# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
# ifndef SWIG_PYTHON_INITIALIZE_THREADS
# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads()
# endif
# ifdef __cplusplus /* C++ code */
class SWIG_Python_Thread_Block {
bool status;
PyGILState_STATE state;
public:
void end() { if (status) { PyGILState_Release(state); status = false;} }
SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
~SWIG_Python_Thread_Block() { end(); }
};
class SWIG_Python_Thread_Allow {
bool status;
PyThreadState *save;
public:
void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
~SWIG_Python_Thread_Allow() { end(); }
};
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block
# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end()
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow
# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end()
# else /* C code */
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block)
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread()
# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow)
# endif
# else /* Old thread way, not implemented, user must provide it */
# if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
# define SWIG_PYTHON_INITIALIZE_THREADS
# endif
# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
# endif
# if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
# define SWIG_PYTHON_THREAD_END_BLOCK
# endif
# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
# endif
# if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
# define SWIG_PYTHON_THREAD_END_ALLOW
# endif
# endif
#else /* No thread support */
# define SWIG_PYTHON_INITIALIZE_THREADS
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
# define SWIG_PYTHON_THREAD_END_BLOCK
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
# define SWIG_PYTHON_THREAD_END_ALLOW
#endif
/* -----------------------------------------------------------------------------
* Python API portion that goes into the runtime
* ----------------------------------------------------------------------------- */
src/subversion/subversion/bindings/swig/python/core.c view on Meta::CPAN
"svn_location_invoke_segment_receiver(svn_location_segment_receiver_t _obj, svn_location_segment_t segment, void * baton, \n"
" apr_pool_t pool) -> svn_error_t\n"
""},
{ (char *)"svn_log_entry_receiver_t_swigregister", svn_log_entry_receiver_t_swigregister, METH_VARARGS, NULL},
{ (char *)"svn_log_message_receiver_t_swigregister", svn_log_message_receiver_t_swigregister, METH_VARARGS, NULL},
{ (char *)"svn_commit_callback2_t_swigregister", svn_commit_callback2_t_swigregister, METH_VARARGS, NULL},
{ (char *)"svn_commit_callback_t_swigregister", svn_commit_callback_t_swigregister, METH_VARARGS, NULL},
{ (char *)"svn_cancel_func_t_swigregister", svn_cancel_func_t_swigregister, METH_VARARGS, NULL},
{ (char *)"svn_location_segment_receiver_t_swigregister", svn_location_segment_receiver_t_swigregister, METH_VARARGS, NULL},
{ (char *)"svn_pool_create", _wrap_svn_pool_create, METH_VARARGS, (char *)"svn_pool_create(apr_pool_t parent_pool, apr_allocator_t * allocator) -> apr_pool_t"},
{ (char *)"svn_pool_create_allocator", _wrap_svn_pool_create_allocator, METH_VARARGS, (char *)"svn_pool_create_allocator(svn_boolean_t thread_safe) -> apr_allocator_t *"},
{ (char *)"svn_ver_compatible", _wrap_svn_ver_compatible, METH_VARARGS, (char *)"svn_ver_compatible(svn_version_t const * my_version, svn_version_t const * lib_version) -> svn_boolean_t"},
{ (char *)"svn_ver_equal", _wrap_svn_ver_equal, METH_VARARGS, (char *)"svn_ver_equal(svn_version_t const * my_version, svn_version_t const * lib_version) -> svn_boolean_t"},
{ (char *)"svn_version_checklist_t_label_set", _wrap_svn_version_checklist_t_label_set, METH_VARARGS, (char *)"svn_version_checklist_t_label_set(svn_version_checklist_t self, char const * label)"},
{ (char *)"svn_version_checklist_t_label_get", _wrap_svn_version_checklist_t_label_get, METH_VARARGS, (char *)"svn_version_checklist_t_label_get(svn_version_checklist_t self) -> char const *"},
{ (char *)"svn_version_checklist_t_version_query_set", _wrap_svn_version_checklist_t_version_query_set, METH_VARARGS, (char *)"svn_version_checklist_t_version_query_set(svn_version_checklist_t self, svn_version_t const *(*)(void) version_query)"},
{ (char *)"svn_version_checklist_t_version_query_get", _wrap_svn_version_checklist_t_version_query_get, METH_VARARGS, (char *)"svn_version_checklist_t_version_query_get(svn_version_checklist_t self) -> svn_version_t const *(*)(void)"},
{ (char *)"new_svn_version_checklist_t", _wrap_new_svn_version_checklist_t, METH_VARARGS, (char *)"new_svn_version_checklist_t() -> svn_version_checklist_t"},
{ (char *)"delete_svn_version_checklist_t", _wrap_delete_svn_version_checklist_t, METH_VARARGS, (char *)"delete_svn_version_checklist_t(svn_version_checklist_t self)"},
{ (char *)"svn_version_checklist_t_swigregister", svn_version_checklist_t_swigregister, METH_VARARGS, NULL},
{ (char *)"svn_ver_check_list", _wrap_svn_ver_check_list, METH_VARARGS, (char *)"svn_ver_check_list(svn_version_t const * my_version, svn_version_checklist_t checklist) -> svn_error_t"},
src/subversion/subversion/bindings/swig/python/core.py view on Meta::CPAN
svn_location_segment_receiver_t_swigregister = _core.svn_location_segment_receiver_t_swigregister
svn_location_segment_receiver_t_swigregister(svn_location_segment_receiver_t)
SVN_ALLOCATOR_RECOMMENDED_MAX_FREE = _core.SVN_ALLOCATOR_RECOMMENDED_MAX_FREE
def svn_pool_create(*args):
"""svn_pool_create(apr_pool_t parent_pool, apr_allocator_t * allocator) -> apr_pool_t"""
return _core.svn_pool_create(*args)
def svn_pool_create_allocator(*args):
"""svn_pool_create_allocator(svn_boolean_t thread_safe) -> apr_allocator_t *"""
return _core.svn_pool_create_allocator(*args)
SVN_VER_MAJOR = _core.SVN_VER_MAJOR
SVN_VER_MINOR = _core.SVN_VER_MINOR
SVN_VER_PATCH = _core.SVN_VER_PATCH
SVN_VER_MICRO = _core.SVN_VER_MICRO
SVN_VER_LIBRARY = _core.SVN_VER_LIBRARY
SVN_VER_TAG = _core.SVN_VER_TAG
SVN_VER_NUMTAG = _core.SVN_VER_NUMTAG
SVN_VER_REVISION = _core.SVN_VER_REVISION
SVN_VER_NUM = _core.SVN_VER_NUM
src/subversion/subversion/bindings/swig/python/core.py view on Meta::CPAN
self.__dict__.setdefault("_members",{})[name] = value
return _swig_setattr(self, self.__class__, name, value)
apr_hash_t_swigregister = _core.apr_hash_t_swigregister
apr_hash_t_swigregister(apr_hash_t)
import threading
application_pool = None
application_pool_lock = threading.Lock()
class GenericSWIGWrapper:
def __init__(self, this, pool):
"""Create new Generic SWIG wrapper object"""
import weakref
self.this = this
self._parent_pool = pool
self._is_valid = weakref.ref(pool._is_valid)
def set_parent_pool(self, pool):
"""Set the parent pool of this object"""
src/subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c view on Meta::CPAN
#include <Python.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <apr_pools.h>
#include <apr_hash.h>
#include <apr_portable.h>
#include <apr_thread_proc.h>
#include "svn_hash.h"
#include "svn_client.h"
#include "svn_string.h"
#include "svn_opt.h"
#include "svn_delta.h"
#include "svn_auth.h"
#include "svn_props.h"
#include "svn_pools.h"
#include "svn_mergeinfo.h"
src/subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c view on Meta::CPAN
/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
typedef int Py_ssize_t;
# define PY_SSIZE_T_MAX INT_MAX
# define PY_SSIZE_T_MIN INT_MIN
#endif
/*** Manage the Global Interpreter Lock ***/
/* If both Python and APR have threads available, we can optimize ourselves
* by releasing the global interpreter lock when we drop into our SVN calls.
*
* In svn_types.i, svn_swig_py_release_py_lock is called before every
* function, then svn_swig_py_acquire_py_lock is called after every
* function. So, if these functions become no-ops, then Python will
* start to block...
*
* The Subversion libraries can be assumed to be thread-safe *only* when
* APR_HAS_THREAD is 1. The APR pool allocations aren't thread-safe unless
* APR_HAS_THREAD is 1.
*/
#if defined(WITH_THREAD) && APR_HAS_THREADS
#define ACQUIRE_PYTHON_LOCK
#endif
#ifdef ACQUIRE_PYTHON_LOCK
static apr_threadkey_t *_saved_thread_key = NULL;
static apr_pool_t *_saved_thread_pool = NULL;
#endif
void svn_swig_py_release_py_lock(void)
{
#ifdef ACQUIRE_PYTHON_LOCK
PyThreadState *thread_state;
if (_saved_thread_key == NULL)
{
/* Obviously, creating a top-level pool for this is pretty stupid. */
apr_pool_create(&_saved_thread_pool, NULL);
apr_threadkey_private_create(&_saved_thread_key, NULL,
_saved_thread_pool);
}
thread_state = PyEval_SaveThread();
apr_threadkey_private_set(thread_state, _saved_thread_key);
#endif
}
void svn_swig_py_acquire_py_lock(void)
{
#ifdef ACQUIRE_PYTHON_LOCK
void *val;
PyThreadState *thread_state;
apr_threadkey_private_get(&val, _saved_thread_key);
thread_state = val;
PyEval_RestoreThread(thread_state);
#endif
}
/*** Automatic Pool Management Functions ***/
/* The application pool */
static apr_pool_t *application_pool = NULL;
static PyObject *application_py_pool = NULL;
src/subversion/subversion/bindings/swig/python/svn_client.c view on Meta::CPAN
# if defined(SWIG_PYTHON_THREADS)
# undef SWIG_PYTHON_THREADS
# endif
#endif
#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */
# define SWIG_PYTHON_USE_GIL
# endif
# endif
# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
# ifndef SWIG_PYTHON_INITIALIZE_THREADS
# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads()
# endif
# ifdef __cplusplus /* C++ code */
class SWIG_Python_Thread_Block {
bool status;
PyGILState_STATE state;
public:
void end() { if (status) { PyGILState_Release(state); status = false;} }
SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
~SWIG_Python_Thread_Block() { end(); }
};
class SWIG_Python_Thread_Allow {
bool status;
PyThreadState *save;
public:
void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
~SWIG_Python_Thread_Allow() { end(); }
};
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block
# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end()
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow
# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end()
# else /* C code */
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block)
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread()
# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow)
# endif
# else /* Old thread way, not implemented, user must provide it */
# if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
# define SWIG_PYTHON_INITIALIZE_THREADS
# endif
# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
# endif
# if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
# define SWIG_PYTHON_THREAD_END_BLOCK
# endif
# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
# endif
# if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
# define SWIG_PYTHON_THREAD_END_ALLOW
# endif
# endif
#else /* No thread support */
# define SWIG_PYTHON_INITIALIZE_THREADS
# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
# define SWIG_PYTHON_THREAD_END_BLOCK
# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
# define SWIG_PYTHON_THREAD_END_ALLOW
#endif
/* -----------------------------------------------------------------------------
* Python API portion that goes into the runtime
* ----------------------------------------------------------------------------- */