Compare commits

..

7 Commits
rawhide ... f21

Author SHA1 Message Date
Joe Orton
a85be98e66 - fudge changelog 2015-07-16 09:55:50 +01:00
Joe Orton
1ee3e0966b enable test suite. 2015-07-16 09:51:59 +01:00
Joe Orton
aa569f7927 - restore dep on systemd (#1183873) 2015-07-16 09:51:33 +01:00
Joe Orton
c3655448e6 - move svnmucc man page to -tools 2015-07-16 09:51:33 +01:00
Joe Orton
9b7327e752 move svnauthz to -tools; make svnauthz-validate a symlink 2015-07-16 09:51:31 +01:00
Joe Orton
a3a9239627 rebuild with SWIG 3.0.6 (#1216264) 2015-07-14 09:19:32 +01:00
Ville Skyttä
c949dc0f96 Own bash-completion dirs not owned by anything in dep chain 2015-07-14 09:16:01 +01:00
20 changed files with 1193 additions and 877 deletions

37
.gitignore vendored
View File

@ -1,3 +1,34 @@
/subversion-*.tar.bz2
/subversion-1\.[0-9]*\.[0-9]*/
/results_subversion/
subversion-1.6.12.tar.bz2
*.rpm
/subversion-1.6.13.tar.bz2.asc
/subversion-1.6.13.tar.bz2
/subversion-1.6.15.tar.bz2
/subversion-1.6.16.tar.bz2
/subversion-1.6.17.tar.bz2
/subversion-1.7.0.tar.bz2
/subversion-1.7.0
/clog
/subversion-1.7.1.tar.bz2
/subversion-1.7.2.tar.bz2
/subversion-1.7.3.tar.bz2
/subversion
/subversion-1.?.?
/*.asc
/subversion-1.?.??
/subversion-1.7.4.tar.bz2
/subversion-1.7.5.tar.bz2
/subversion-1.7.6.tar.bz2
/subversion-1.7.7.tar.bz2
/subversion-1.7.8.tar.bz2
/subversion-1.7.9.tar.bz2
/subversion-1.7.10.tar.bz2
/subversion-1.8.0.tar.bz2
/subversion-1.8.1.tar.bz2
/subversion-1.8.3.tar.bz2
/subversion-1.8.4.tar.bz2
/subversion-1.8.5.tar.bz2
/subversion-1.8.8.tar.bz2
/subversion-1.8.9.tar.bz2
/subversion-1.8.10.tar.bz2
/subversion-1.8.11.tar.bz2
/subversion-1.8.13.tar.bz2

View File

@ -1,27 +0,0 @@
#!/bin/sh
version=$1
echo "This update includes the latest stable release of _Apache Subversion_, version **${1}**".
echo
curl --silent -n "http://svn.apache.org/repos/asf/subversion/tags/$1/CHANGES" | \
sed -n "
/^#/d;
/^Version ${1/-rc*/}/,/^Version /{
/, from \/branches/d;
/repos\/asf\/subversion\/tags/d;
s,#\([0-9]*\),[SVN-\1](https://issues.apache.org/jira/browse/SVN-\1),;
s/(r[0-9, retal]+)\*//g;
s/^ *//;
s/ +/ /g;
s/^ *- \(.*\)$/#### \1/;
s/\(.*visible changes.*:\)$/### \1/;
/^ *$/d;
/Windows/d
/^Version /d
s,(r1.*),,g
s,\(@[0-9]*\),\\\1,g
p;
}
" -

189
psvn.el
View File

@ -1,5 +1,5 @@
;;; psvn.el --- Subversion interface for emacs
;; Copyright (C) 2002-2015 by Stefan Reichoer
;; Copyright (C) 2002-2012 by Stefan Reichoer
;; Author: Stefan Reichoer <stefan@xsteve.at>
;; Note: This version is currently not under svn control
@ -241,7 +241,7 @@
;;; Code:
(defconst svn-psvn-revision "2015-07-20, 21:42:00" "The revision date of psvn.")
(defconst svn-psvn-revision "2012-03-26, 21:23:49" "The revision date of psvn.")
(require 'easymenu)
@ -671,7 +671,7 @@ See psvn.el for an example function.")
(defvar svn-process-cmd nil)
(defvar svn-status-info nil)
(defvar svn-status-filename-to-buffer-position-cache (make-hash-table :test 'equal :weakness t))
(defvar svn-status-base-info nil "The parsed result from the svn info command as a plist.")
(defvar svn-status-base-info nil "The parsed result from the svn info command.")
(defvar svn-status-initial-window-configuration nil)
(defvar svn-status-default-column 23)
(defvar svn-status-default-revision-width 4)
@ -703,14 +703,13 @@ This is nil if the log entry is for a new commit.")
(defvar svn-pre-run-mode-line-process nil)
(defvar svn-arg-file-content nil)
(defvar svn-status-temp-dir
(file-name-as-directory
(expand-file-name
(or
(when (boundp 'temporary-file-directory) temporary-file-directory) ;emacs
;; XEmacs 21.4.17 can return "/tmp/kalle" from (temp-directory).
;; `file-name-as-directory' adds a slash so we can append a file name.
(when (fboundp 'temp-directory) (temp-directory))
"/tmp/"))) "The directory that is used to store temporary files for psvn.")
(expand-file-name
(or
(when (boundp 'temporary-file-directory) temporary-file-directory) ;emacs
;; XEmacs 21.4.17 can return "/tmp/kalle" from (temp-directory).
;; `file-name-as-directory' adds a slash so we can append a file name.
(when (fboundp 'temp-directory) (file-name-as-directory (temp-directory)))
"/tmp/")) "The directory that is used to store temporary files for psvn.")
;; Because `temporary-file-directory' is not a risky local variable in
;; GNU Emacs 22.0.51, we don't mark `svn-status-temp-dir' as such either.
(defvar svn-temp-suffix (make-temp-name "."))
@ -1119,18 +1118,12 @@ inside loops."
(defun svn-checkout (repos-url path)
"Run svn checkout REPOS-URL PATH."
(interactive (list (read-string "Checkout from repository Url: ")
(expand-file-name
(svn-read-directory-name "Checkout to directory: "))))
(svn-read-directory-name "Checkout to directory: ")))
(svn-run t t 'checkout "checkout" repos-url (expand-file-name path)))
;;;###autoload (defalias 'svn-examine 'svn-status)
(defalias 'svn-examine 'svn-status)
;;;###autoload
(defun svn-version-controlled-dir-p (dir)
"Return t if DIR is part of a Subversion workarea."
(= 0 (call-process svn-status-svn-executable nil nil nil "info" dir)))
;;;###autoload
(defun svn-status (dir &optional arg)
"Examine the status of Subversion working copy in directory DIR.
@ -1140,17 +1133,20 @@ For every other non nil ARG pass the -u argument to `svn status', which
asks svn to connect to the repository and check to see if there are updates
there.
If DIR is not an SVN working copy, examine if there is CVS and run
If there is no .svn directory, examine if there is CVS and run
`cvs-examine'. Otherwise ask if to run `dired'."
(interactive (list (expand-file-name
(svn-read-directory-name "SVN status directory: "
nil default-directory nil))
(interactive (list (svn-read-directory-name "SVN status directory: "
nil default-directory nil)
current-prefix-arg))
(let ((svn-dir (format "%s%s"
(file-name-as-directory dir)
(svn-wc-adm-dir-name)))
(cvs-dir (format "%sCVS" (file-name-as-directory dir))))
(cond
((svn-version-controlled-dir-p (expand-file-name dir))
((file-directory-p svn-dir)
(setq arg (svn-status-possibly-negate-meaning-of-arg arg 'svn-status))
(svn-status-1 dir arg))
((and (file-directory-p (concat (file-name-as-directory dir) "CVS"))
((and (file-directory-p cvs-dir)
(fboundp 'cvs-examine))
(cvs-examine dir nil))
(t
@ -1163,7 +1159,7 @@ If DIR is not an SVN working copy, examine if there is CVS and run
"Run dired instead? ")
dir
(svn-wc-adm-dir-name)))
(dired dir)))))
(dired dir))))))
(defvar svn-status-display-new-status-buffer nil)
(defun svn-status-1 (dir &optional arg)
@ -1199,6 +1195,7 @@ If DIR is not an SVN working copy, examine if there is CVS and run
(set-buffer proc-buf)
(setq default-directory dir
svn-status-remote (when arg t))
(set-buffer cur-buf)
(if want-edit
(let ((svn-status-edit-svn-command t))
(svn-run t t 'status "status" svn-status-default-status-arguments status-option))
@ -3092,27 +3089,32 @@ non-interactive use."
(defun svn-status-parse-info-result ()
"Parse the result from the svn info command.
Put the found values in `svn-status-base-info'."
(save-excursion
(setq svn-status-base-info ())
(set-buffer svn-process-buffer-name)
(goto-char (point-min))
(let ((case-fold-search t)
(key)
(val))
(loop while (looking-at "\\(.*?\\)\\s-*:\\s-*\\(.*\\)$")
do (setq key (intern (concat ":" (downcase (subst-char-in-string ?\ ?- (match-string 1))))))
(setq val (match-string 2))
(setq svn-status-base-info (plist-put svn-status-base-info
key val))
until (< 0 (forward-line))))))
(let ((url)
(repository-root)
(last-changed-author))
(save-excursion
(set-buffer svn-process-buffer-name)
(goto-char (point-min))
(let ((case-fold-search t))
(search-forward "url: ")
(setq url (buffer-substring-no-properties (point) (svn-point-at-eol)))
(when (search-forward "repository root: " nil t)
(setq repository-root (buffer-substring-no-properties (point) (svn-point-at-eol))))
(when (search-forward "last changed author: " nil t)
(setq last-changed-author (buffer-substring-no-properties (point) (svn-point-at-eol))))))
(setq svn-status-base-info `((url ,url) (repository-root ,repository-root) (last-changed-author ,last-changed-author)))))
(defun svn-status-base-info->url ()
"Extract the url part from `svn-status-base-info'."
(plist-get svn-status-base-info :url))
(if svn-status-base-info
(cadr (assoc 'url svn-status-base-info))
""))
(defun svn-status-base-info->repository-root ()
"Extract the repository-root part from `svn-status-base-info'."
(plist-get svn-status-base-info :repository-root))
(if svn-status-base-info
(cadr (assoc 'repository-root svn-status-base-info))
""))
(defun svn-status-checkout-prefix-path ()
"When only a part of the svn repository is checked out, return the file path for this checkout."
@ -4055,10 +4057,9 @@ user can enter a new file name, or an existing directory: this is used as the ar
(svn-status-line-info->full-path (car marked-files))))
;;TODO: (when file-exists-p but-no-dir-p dest (error "%s already exists" dest))
;;multiple files selected, so prompt for existing directory to mv them into.
(setq dest (expand-file-name
(svn-read-directory-name
(format "%s %d files to directory: " manyprompt num-of-files)
(svn-status-directory-containing-point t) nil t)))
(setq dest (svn-read-directory-name
(format "%s %d files to directory: " manyprompt num-of-files)
(svn-status-directory-containing-point t) nil t))
(unless (file-directory-p dest)
(error "%s is not a directory" dest)))
(when (string= dest "")
@ -5812,6 +5813,9 @@ Currently is the output from the svn update command known."
"Toggle svn blame minor mode.
With ARG, turn svn blame minor mode on if ARG is positive, off otherwise.
Note: This mode does not yet work on XEmacs...
It is probably because the revisions are in 'before-string properties of overlays
Key bindings:
\\{svn-blame-mode-map}"
(interactive "P")
@ -5841,12 +5845,12 @@ The current buffer must contain a valid output from svn blame"
;; (when (overlay-get ov 'svn-blame-line-info)
;; (delete-overlay ov)))
(while (and (not (eobp)) (< (point) limit))
(setq s (buffer-substring-no-properties (svn-point-at-bol) (+ (svn-point-at-bol) info-end-col)))
(delete-region (svn-point-at-bol) (+ (svn-point-at-bol) info-end-col))
(setq ov (make-overlay (point) (point)))
(overlay-put ov 'svn-blame-line-info t)
(setq s (buffer-substring-no-properties (svn-point-at-bol) (+ (svn-point-at-bol) info-end-col)))
(overlay-put ov 'before-string (propertize s 'face 'svn-status-blame-rev-number-face))
(overlay-put ov 'rev-info (delete "" (split-string s " ")))
(delete-region (svn-point-at-bol) (+ (svn-point-at-bol) info-end-col))
(forward-line)
(setq line (1+ line)))))
(let* ((buf-name (format "*svn-blame: %s <%s>*"
@ -6016,12 +6020,18 @@ You can send raw data to the process via \\[svn-process-send-string]."
(with-current-buffer (get-buffer-create svn-process-buffer-name)
(setq old-process-default-dir default-directory)
(setq default-directory directory)) ;; update the default-directory for the *svn-process* buffer
(svn-status-parse-info t)
(or (plist-get svn-status-base-info :repository-root)
(if (plist-get svn-status-base-info :repository-uuid)
(concat "Svn Repo UUID: " (plist-get svn-status-base-info :repository-uuid))
(svn-run nil t 'parse-info "info" ".")
(with-current-buffer svn-process-buffer-name
;; (message "svn-status-repo-for-path: %s: default-directory: %s directory: %s old-process-default-dir: %s" svn-process-buffer-name default-directory directory old-process-default-dir)
(setq default-directory old-process-default-dir)
(goto-char (point-min))
(let ((case-fold-search t))
(if (search-forward "repository root: " nil t)
(buffer-substring-no-properties (point) (svn-point-at-eol))
(when (search-forward "repository uuid: " nil t)
(message "psvn.el: Detected an old svn working copy in '%s'. Please check it out again to get a 'Repository Root' entry in the svn info output."
default-directory)))))
default-directory)
(concat "Svn Repo UUID: " (buffer-substring-no-properties (point) (svn-point-at-eol)))))))))
(defun svn-status-base-dir (&optional start-directory)
"Find the svn root directory for the current working copy.
@ -6033,60 +6043,29 @@ Return nil, if not in a svn working copy."
base-dir
;; (message "calculating base-dir for %s" start-dir)
(svn-compute-svn-client-version)
;; (message "repository-root: %s start-dir: %s" repository-root start-dir)
(cond
((and (<= (car svn-client-version) 1) (< (cadr svn-client-version) 3))
(setq base-dir (svn-status-base-dir-for-ancient-svn-client start-dir))) ;; svn version < 1.3
((and (<= (car svn-client-version) 1) (< (cadr svn-client-version) 7))
(setq base-dir (svn-status-base-dir-for-old-svn-client start-dir))) ;; svn version < 1.7
(t
(setq base-dir (svn-status-base-dir-1 start-dir))))
(when base-dir
(svn-puthash start-dir base-dir svn-status-base-dir-cache))
(svn-status-message 7 "svn-status-base-dir %s => %s" start-dir base-dir)
base-dir)))
(defun svn-status-base-dir-1 (&optional start-directory)
"Find the svn root directory for the current working copy.
Return nil, if not in a svn working copy.
This function is used for svn clients version 1.7 and up."
(let ((default-directory (if start-directory
(expand-file-name start-directory)
(symbol-value 'default-directory)))
parent
wc-root)
(when (svn-version-controlled-dir-p default-directory)
(svn-status-parse-info t)
(setq wc-root (file-name-as-directory (plist-get svn-status-base-info :working-copy-root-path)))
(when wc-root
;; traversing up the hierarchy shortens the path name. Stop if
;; it doesn't, e.g we reached / already.
(setq parent (expand-file-name (concat wc-root "..")))
(or (and (< (length parent) (length wc-root))
(svn-status-base-dir-1 (expand-file-name (concat wc-root ".."))))
wc-root)))))
(defun svn-status-base-dir-for-old-svn-client (&optional start-directory)
"Find the svn root directory for the current working copy.
Return nil, if not in a svn working copy.
This function is used for svn clients version 1.6 and below."
(let* ((base-dir (expand-file-name (or start-directory default-directory)))
(repository-root (svn-status-repo-for-path base-dir))
(dot-svn-dir (concat base-dir (svn-wc-adm-dir-name)))
(in-tree (and repository-root (file-exists-p dot-svn-dir)))
(dir-below (expand-file-name base-dir)))
(while (when (and dir-below (file-exists-p dot-svn-dir))
(setq base-dir (file-name-directory dot-svn-dir))
(string-match "\\(.+/\\).+/" dir-below)
(setq dir-below
(and (string-match "\\(.*/\\)[^/]+/" dir-below)
(match-string 1 dir-below)))
;; (message "base-dir: %s, dir-below: %s, dot-svn-dir: %s in-tree: %s" base-dir dir-below dot-svn-dir in-tree)
(when dir-below
(if (string= (svn-status-repo-for-path dir-below) repository-root)
(setq dot-svn-dir (concat dir-below (svn-wc-adm-dir-name)))
(setq dir-below nil)))))
(and in-tree base-dir)))
(let* ((base-dir start-dir)
(repository-root (svn-status-repo-for-path base-dir))
(dot-svn-dir (concat base-dir (svn-wc-adm-dir-name)))
(in-tree (and repository-root (file-exists-p dot-svn-dir)))
(dir-below (expand-file-name base-dir)))
;; (message "repository-root: %s start-dir: %s" repository-root start-dir)
(if (and (<= (car svn-client-version) 1) (< (cadr svn-client-version) 3))
(setq base-dir (svn-status-base-dir-for-ancient-svn-client start-dir)) ;; svn version < 1.3
(while (when (and dir-below (file-exists-p dot-svn-dir))
(setq base-dir (file-name-directory dot-svn-dir))
(string-match "\\(.+/\\).+/" dir-below)
(setq dir-below
(and (string-match "\\(.*/\\)[^/]+/" dir-below)
(match-string 1 dir-below)))
;; (message "base-dir: %s, dir-below: %s, dot-svn-dir: %s in-tree: %s" base-dir dir-below dot-svn-dir in-tree)
(when dir-below
(if (string= (svn-status-repo-for-path dir-below) repository-root)
(setq dot-svn-dir (concat dir-below (svn-wc-adm-dir-name)))
(setq dir-below nil)))))
(setq base-dir (and in-tree base-dir)))
(svn-puthash start-dir base-dir svn-status-base-dir-cache)
(svn-status-message 7 "svn-status-base-dir %s => %s" start-dir base-dir)
base-dir))))
(defun svn-status-base-dir-for-ancient-svn-client (&optional start-directory)
"Find the svn root directory for the current working copy.

View File

@ -1,53 +0,0 @@
#!/bin/sh -e
if [ $# -lt 1 ]; then
echo "What?"
exit 1
fi
repo="https://svn.apache.org/repos/asf/subversion/trunk"
#repo="https://svn.apache.org/repos/asf/subversion/branches/1.11.x"
prefix=`rpmspec -q --queryformat='%{name}-%{version}\n' ./subversion.spec | sed 1q`
suffix="r$1${2:++}"
fn="${prefix}-${suffix}.patch"
vcurl="http://svn.apache.org/viewvc?view=revision&revision="
if test -f ${fn}; then
mv -v -f ${fn} ${fn}\~
echo "# $0 $*" > ${fn}
sed '1{/#.*pullrev/d;};/^--- /,$d' < ${fn}\~ >> ${fn}
else
echo "# $0 $*" > ${fn}
fi
new=0
for r in $*; do
if ! grep -q "${vcurl}${r}" ${fn}; then
echo "${vcurl}${r}"
new=1
fi
done >> ${fn}
[ $new -eq 0 ] || echo >> ${fn}
prev=/dev/null
for r in $*; do
echo "+ fetching ${r}"
this=`mktemp /tmp/pullrevXXXXXX`
svn diff -c ${r} ${repo} | filterdiff --remove-timestamps --clean -x 'CHANGES' -x 'next-number' -x 'STATUS' \
--addprefix="${prefix}/" > ${this}
next=`mktemp /tmp/pullrevXXXXXX`
combinediff --quiet ${prev} ${this} > ${next}
rm -f "${this}"
[ "${prev}" = "/dev/null" ] || rm -f "${prev}"
prev=${next}
done
cat ${prev} >> ${fn}
vi "${fn}"
echo "+ git add ${fn}"
git add "${fn}"
echo "+ spec template:"
echo "PatchN: ${fn}"
echo "%patchN -p1 -b .${suffix}"

View File

@ -1 +1 @@
SHA512 (subversion-1.14.2.tar.bz2) = 20ada4688ca07d9fb8da4b7d53b5084568652a3b9418c65e688886bae950a16a3ff37710fcfc9c29ef14a89e75b2ceec4e9cf35d5876a7896ebc2b512cfb9ecc
4413417b529d7bdf82f74e50df02e88b subversion-1.8.13.tar.bz2

View File

@ -1,84 +0,0 @@
Fix the way libtool is used to match standard practice:
a) link ONLY libraries using -rpath $(libdir), not executables
.. this avoids adding an RPATH for $libdir to executables
b) link non-installable test binaries using -no-install
.. only for convenience but should speed up builds slightly(?)
--- subversion-1.12.0/build.conf.linking
+++ subversion-1.12.0/build.conf
@@ -572,7 +572,7 @@
path = subversion/bindings/swig/python/libsvn_swig_py
libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_subr
apriconv apr python swig
-link-cmd = $(LINK)
+link-cmd = $(LINK_LIB)
install = swig-py-lib
# need special build rule to include -DSWIGPYTHON
compile-cmd = $(COMPILE_SWIG_PY)
@@ -598,7 +598,7 @@
lang = ruby
path = subversion/bindings/swig/ruby/libsvn_swig_ruby
libs = libsvn_client libsvn_wc libsvn_delta libsvn_subr apriconv apr ruby swig
-link-cmd = $(LINK) $(SWIG_RB_LIBS)
+link-cmd = $(LINK_LIB) $(SWIG_RB_LIBS)
install = swig-rb-lib
# need special build rule to include
compile-cmd = $(COMPILE_SWIG_RB)
@@ -769,6 +769,7 @@
libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr aprutil apriconv apr
msvc-static = yes
undefined-lib-symbols = yes
+link-cmd = $(LINK_TEST_LIB)
# ----------------------------------------------------------------------------
# Tests for libsvn_fs_base
--- subversion-1.12.0/build/generator/gen_base.py.linking
+++ subversion-1.12.0/build/generator/gen_base.py
@@ -599,7 +599,7 @@
self.install = options.get('install')
self.compile_cmd = options.get('compile-cmd')
self.sources = options.get('sources', '*.c *.cpp')
- self.link_cmd = options.get('link-cmd', '$(LINK)')
+ self.link_cmd = options.get('link-cmd', '$(LINK_LIB)')
self.external_lib = options.get('external-lib')
self.external_project = options.get('external-project')
@@ -659,6 +659,14 @@
self.msvc_force_static = options.get('msvc-force-static') == 'yes'
+ if self.install in ['test', 'bdb-test', 'sub-test', ]:
+ self.link_cmd = '$(LINK_TEST)'
+ elif self.install in ['bin', 'tools']:
+ self.link_cmd = '$(LINK_EXE)'
+ elif self.link_cmd == '$(LINK_LIB)':
+ raise GenError('ERROR: Unknown executable link type for ' + self.name + \
+ ': ' + self.link_cmd + ' (' + self.install + ')')
+
def add_dependencies(self):
TargetLinked.add_dependencies(self)
--- subversion-1.12.0/Makefile.in.linking
+++ subversion-1.12.0/Makefile.in
@@ -268,11 +268,14 @@
COMPILE_SVNXX = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) -o $@ -c
COMPILE_SVNXX_TEST = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) $(BOOST_TEST_CPPFLAGS) -o $@ -c
-LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
-LINK_LIB = $(LINK) $(LT_SO_VERSION)
-LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
-LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
-LINK_SVNXX_TEST = $(LINK_CXX) $(BOOST_TEST_LDFLAGS)
+LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS)
+LINK_LIB = $(LINK) $(LT_SO_VERSION) -rpath $(libdir)
+LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS)
+LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION) -rpath $(libdir)
+LINK_SVNXX_TEST = $(LINK_CXX) $(BOOST_TEST_LDFLAGS) -no-install
+LINK_TEST = $(LINK) -no-install
+LINK_TEST_LIB = $(LINK_TEST) -avoid-version
+LINK_EXE = $(LINK)
# special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS) -shared

View File

@ -1,14 +0,0 @@
Suppress gcc 10 warning.
--- subversion-1.14.0/subversion/tests/svn_test.h.testwarn
+++ subversion-1.14.0/subversion/tests/svn_test.h
@@ -128,7 +128,7 @@
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, \
"Strings not equal\n Expected: '%s'\n Found: '%s'" \
"\n at %s:%d", \
- tst_str2, tst_str1, __FILE__, __LINE__); \
+ tst_str2 ? tst_str2 : "(NULL)", tst_str1 ? tst_str1 : "(NULL)", __FILE__, __LINE__); \
} while(0)
/** Handy macro for testing integer equality.

View File

@ -1,30 +0,0 @@
See upstream dev@subversion thread. Fixes intermittent failure of
javahl tests, particularly reproducible on aarch64.
Message-ID: <11de5f5c-5059-b973-95a1-385e7913a63a@syntevo.com>
From: Alexandr Miloslavskiy
--- subversion-1.14.1/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java.fixjavatests
+++ subversion-1.14.1/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
@@ -4676,7 +4676,19 @@
// RuntimeException("Test exception") is expected here
}
- tunnelAgent.joinAndTest();
+ // In this test, there is a race condition that sometimes results in
+ // IOException when 'WAIT_TUNNEL' tries to read from a pipe that
+ // already has its read end closed. This is not an error, but
+ // it's hard to distinguish this case from other IOException which
+ // indicate a problem. To reproduce, simply wrap this test's body in
+ // a loop. The workaround is to ignore any detected IOException.
+ //
+ // tunnelAgent.joinAndTest();
+ try {
+ tunnelAgent.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace ();
+ }
}
/**

View File

@ -1,14 +0,0 @@
Use read_file instead of deprecated readfp - removed in Python 3.11
diff -ur subversion-1.14.1/build/generator/gen_base.py subversion-1.14.1-patched/build/generator/gen_base.py
--- subversion-1.14.1/build/generator/gen_base.py 2019-11-04 06:59:36.000000000 +0100
+++ subversion-1.14.1-patched/build/generator/gen_base.py 2021-12-15 14:04:50.041649320 +0100
@@ -76,7 +76,7 @@
# Now read and parse build.conf
parser = configparser.ConfigParser()
- parser.readfp(open(fname))
+ parser.read_file(open(fname))
self.conf = build_path(os.path.abspath(fname))

View File

@ -1,14 +0,0 @@
Fix intermittent failures when "svn add" guesses a near-empty file is binary and hence
the output is different.
--- subversion-1.14.1/subversion/tests/cmdline/svntest/main.py.testnoautoprops
+++ subversion-1.14.1/subversion/tests/cmdline/svntest/main.py
@@ -691,6 +691,7 @@
[miscellany]
interactive-conflicts = false
+enable-magic-file = no
"""
if exclusive_wc_locks:
config_contents += """

View File

@ -1,23 +0,0 @@
Subversion libraries don't get properly versioned so the library
names are always "libsvn_foo-1.so.0.0.0". Provide proper
versioning information to libtool *without* changing the soname
for compatibility with upstream, so on-disk filenames are
unique across different releases.
--- subversion-1.14.2/configure.ac.soversion
+++ subversion-1.14.2/configure.ac
@@ -112,7 +112,12 @@
SVN_APR_MAJOR_VERSION=1
fi
AC_SUBST(SVN_APR_MAJOR_VERSION)
-SVN_LT_SOVERSION="-version-info $svn_lib_ver"
+
+m4_define([svn_ver_minor], m4_bpatsubst(AC_PACKAGE_VERSION, [[0-9]*\.\([0-9]*\)\.[0-9]*], [\1]))
+m4_define([svn_ver_patch], m4_bpatsubst(AC_PACKAGE_VERSION, [[0-9]*\.[0-9]*\.\([0-9]*\)], [\1]))
+svn_ver_current="`expr $svn_lib_ver + svn_ver_minor`"
+
+SVN_LT_SOVERSION="-version-info $svn_ver_current:svn_ver_patch:svn_ver_minor"
AC_SUBST(SVN_LT_SOVERSION)
AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
[Subversion library major verson])

View File

@ -0,0 +1,32 @@
--- subversion/libsvn_wc/wc-metadata.sql 2015/04/09 11:21:12 1672294
+++ subversion/libsvn_wc/wc-metadata.sql 2015/04/09 11:31:12 1672295
@@ -619,6 +619,11 @@
INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1');
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('EXTERNALS','sqlite_autoindex_EXTERNALS_1', '100 100 1');
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('EXTERNALS','I_EXTERNALS_DEFINED', '100 100 3 1');
+
/* sqlite_autoindex_WORK_QUEUE_1 doesn't exist because WORK_QUEUE is
a INTEGER PRIMARY KEY AUTOINCREMENT table */
--- subversion/tests/libsvn_wc/wc-queries-test.c 2015/04/09 11:21:12 1672294
+++ subversion/tests/libsvn_wc/wc-queries-test.c 2015/04/09 11:31:12 1672295
@@ -927,6 +927,15 @@
"VALUES (1, '', '')",
NULL, NULL, NULL));
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "INSERT INTO EXTERNALS (wc_id, local_relpath,"
+ " parent_relpath, repos_id,"
+ " presence, kind, def_local_relpath,"
+ " def_repos_relpath) "
+ "VALUES (1, 'subdir', '', 1, 'normal', 'dir', '', '')",
+ NULL, NULL, NULL));
+
/* These are currently not necessary for query optimization, but it's better
to tell Sqlite how we intend to use this table anyway */
SQLITE_ERR(

View File

@ -0,0 +1,26 @@
The first half of this is certainly upstream-worthy, but the second half is presumably
some Fedora-specific KDE packaging thing. It's not obvious how to get
kde4-config to report the directory which contains the .so files.
--- subversion-1.8.0/build/ac-macros/kwallet.m4.kwallet
+++ subversion-1.8.0/build/ac-macros/kwallet.m4
@@ -63,15 +63,15 @@ AC_DEFUN(SVN_LIB_KWALLET,
fi
done
qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`"
- kde_dir="`$KDE4_CONFIG --prefix`"
- SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_dir/include"
+ kde_include_dirs="-I`$KDE4_CONFIG --path include`"
+ SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs $kde_include_dirs"
qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`"
SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options"
CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES"
LIBS="$LIBS $SVN_KWALLET_LIBS"
qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`"
kde_lib_suffix="`$KDE4_CONFIG --libsuffix`"
- LDFLAGS="$old_LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS($qt_lib_dirs -L$kde_dir/lib$kde_lib_suffix)`"
+ LDFLAGS="$old_LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS($qt_lib_dirs)` -L$libdir/kde4/devel"
AC_LANG(C++)
AC_LINK_IFELSE([AC_LANG_SOURCE([[
#include <kwallet.h>

View File

@ -0,0 +1,56 @@
diff -uap subversion-1.7.0/build/generator/gen_base.py.pie subversion-1.7.0/build/generator/gen_base.py
--- subversion-1.8.0/build/generator/gen_base.py.pie
+++ subversion-1.8.0/build/generator/gen_base.py
@@ -409,7 +409,7 @@ class TargetLinked(Target):
self.install = options.get('install')
self.compile_cmd = options.get('compile-cmd')
self.sources = options.get('sources', '*.c *.cpp')
- self.link_cmd = options.get('link-cmd', '$(LINK)')
+ self.link_cmd = options.get('link-cmd', '$(LINK_LIB)')
self.external_lib = options.get('external-lib')
self.external_project = options.get('external-project')
@@ -465,6 +465,11 @@ class TargetExe(TargetLinked):
self.manpages = options.get('manpages', '')
self.testing = options.get('testing')
+ if self.install == 'test' or self.install == 'bdb-test':
+ self.link_cmd = '$(LINK_TEST)'
+ else:
+ self.link_cmd = '$(LINK_EXE)'
+
def add_dependencies(self):
TargetLinked.add_dependencies(self)
@@ -515,8 +520,8 @@ class TargetLib(TargetLinked):
self.msvc_export = options.get('msvc-export', '').split()
### hmm. this is Makefile-specific
- if self.link_cmd == '$(LINK)':
- self.link_cmd = '$(LINK_LIB)'
+ if self.install == 'test':
+ self.link_cmd = '$(LINK_TEST_LIB)'
class TargetApacheMod(TargetLib):
--- subversion-1.8.0/Makefile.in.pie
+++ subversion-1.8.0/Makefile.in
@@ -203,6 +203,9 @@ COMPILE_CXXHL_CXX = $(LIBTOOL) $(LTCXXFL
LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS)
LINK_LIB = $(LINK) $(LT_SO_VERSION) -rpath $(libdir)
+LINK_TEST = $(LINK) -no-install
+LINK_TEST_LIB = $(LINK) -avoid-version
+LINK_EXE = $(LINK) -pie
LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
@@ -676,7 +679,7 @@ schema-clean:
$(PYTHON) $(top_srcdir)/build/transform_sql.py $< $(top_srcdir)/$@
.c.o:
- $(COMPILE) -o $@ -c $<
+ $(COMPILE) -fpie -o $@ -c $<
.cpp.o:
$(COMPILE_CXX) -o $@ -c $<

View File

@ -0,0 +1,47 @@
diff -uap subversion-1.7.0/build.conf.rpath subversion-1.7.0/build.conf
--- subversion-1.8.0/build.conf.rpath
+++ subversion-1.8.0/build.conf
@@ -501,7 +501,7 @@ type = swig_lib
lang = python
path = subversion/bindings/swig/python/libsvn_swig_py
libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_subr apriconv apr
-link-cmd = $(LINK)
+link-cmd = $(LINK_LIB)
install = swig-py-lib
# need special build rule to include -DSWIGPYTHON
compile-cmd = $(COMPILE_SWIG_PY)
@@ -524,7 +524,7 @@ type = swig_lib
lang = ruby
path = subversion/bindings/swig/ruby/libsvn_swig_ruby
libs = libsvn_client libsvn_wc libsvn_delta libsvn_subr apriconv apr
-link-cmd = $(LINK) $(SWIG_RB_LIBS)
+link-cmd = $(LINK_LIB) $(SWIG_RB_LIBS)
install = swig-rb-lib
# need special build rule to include
compile-cmd = $(COMPILE_SWIG_RB)
--- subversion-1.8.0/build/generator/gen_base.py.rpath
+++ subversion-1.8.0/build/generator/gen_base.py
@@ -514,6 +514,10 @@ class TargetLib(TargetLinked):
self.msvc_fake = options.get('msvc-fake') == 'yes' # has fake target
self.msvc_export = options.get('msvc-export', '').split()
+ ### hmm. this is Makefile-specific
+ if self.link_cmd == '$(LINK)':
+ self.link_cmd = '$(LINK_LIB)'
+
class TargetApacheMod(TargetLib):
def __init__(self, name, options, gen_obj):
--- subversion-1.8.0/Makefile.in.rpath
+++ subversion-1.8.0/Makefile.in
@@ -201,8 +201,8 @@ COMPILE_JAVAHL_JAVAH = $(JAVAH)
# special compilation for files destined for cxxhl
COMPILE_CXXHL_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=compile $(COMPILE_CXX) $(LT_CFLAGS) $(CXXHL_INCLUDES) -o $@ -c
-LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
-LINK_LIB = $(LINK) $(LT_SO_VERSION)
+LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS)
+LINK_LIB = $(LINK) $(LT_SO_VERSION) -rpath $(libdir)
LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)

View File

@ -0,0 +1,72 @@
Index: subversion/bindings/swig/ruby/test/my-assertions.rb
===================================================================
--- subversion/bindings/swig/ruby/test/my-assertions.rb (revision 1671099)
+++ subversion/bindings/swig/ruby/test/my-assertions.rb (working copy)
@@ -27,9 +27,7 @@
# make an intermediary assertion block handler
def _my_assert_block(&block)
if RUBY_VERSION > '1.9'
- assert_block do
- yield
- end
+ yield
else
_wrap_assertion do
yield
Index: subversion/bindings/swig/ruby/test/test-unit-ext.rb
===================================================================
--- subversion/bindings/swig/ruby/test/test-unit-ext.rb (revision 1671099)
+++ subversion/bindings/swig/ruby/test/test-unit-ext.rb (working copy)
@@ -18,6 +18,6 @@
# ====================================================================
require "test-unit-ext/always-show-result" if RUBY_VERSION < '1.9.3'
-require "test-unit-ext/priority"
+require "test-unit-ext/priority" if defined? MiniTest or defined? Minitest
require "test-unit-ext/backtrace-filter" if RUBY_VERSION < '1.9.3'
require "test-unit-ext/long-display-for-emacs" if RUBY_VERSION < '1.9.3'
Index: subversion/bindings/swig/ruby/test/test_repos.rb
===================================================================
--- subversion/bindings/swig/ruby/test/test_repos.rb (revision 1671099)
+++ subversion/bindings/swig/ruby/test/test_repos.rb (working copy)
@@ -679,7 +679,7 @@
dest_path = File.join(@tmp_path, "dest")
Svn::Repos.create(dest_path) do |repos|
assert_raises(NoMethodError) do
- repos.load_fs(nil)
+ repos.load_fs(Object.new)
end
end
Index: subversion/bindings/swig/ruby/test/test_wc.rb
===================================================================
--- subversion/bindings/swig/ruby/test/test_wc.rb (revision 1671099)
+++ subversion/bindings/swig/ruby/test/test_wc.rb (working copy)
@@ -411,7 +411,7 @@
end
end
- def test_status
+ def test_status2
source = "source"
file1 = "file1"
file2 = "file2"
@@ -540,7 +540,6 @@
result = yield(access.send(*args), source)
result ||= File.open(src_path, "rb") {|f| f.read}
assert_equal(crlf_source, result)
-
File.open(src_path, "wb") {|f| f.print(source)}
args = [method_name, src_path, cr_path, Svn::Wc::TRANSLATE_FROM_NF]
result = yield(access.send(*args), source)
@@ -1072,8 +1071,8 @@
assert_not_nil context
assert_kind_of Svn::Wc::Context, context
end
- if RUBY_VERSION > '1.9'
- assert_equal(result,true)
+ if defined? MiniTest or defined? Minitest
+ assert_equal(true, result)
else
assert_nil result
end

View File

@ -0,0 +1,38 @@
# ./pullrev.sh 1655262 1658347
http://svn.apache.org/viewvc?view=revision&revision=1655262
http://svn.apache.org/viewvc?view=revision&revision=1658347
--- subversion-1.8.13/subversion/bindings/swig/core.i
+++ subversion-1.8.13/subversion/bindings/swig/core.i
@@ -800,10 +800,11 @@
#endif
#ifdef SWIGPYTHON
-# The auth baton depends on the providers, so we preserve a
-# reference to them inside the wrapper. This way, if all external
-# references to the providers are gone, they will still be alive,
-# keeping the baton valid.
+/* The auth baton depends on the providers, so we preserve a
+ reference to them inside the wrapper. This way, if all external
+ references to the providers are gone, they will still be alive,
+ keeping the baton valid.
+ */
%feature("pythonappend") svn_auth_open %{
val.__dict__["_deps"] = list(args[0])
%}
--- subversion-1.8.13/subversion/bindings/swig/svn_delta.i
+++ subversion-1.8.13/subversion/bindings/swig/svn_delta.i
@@ -205,11 +205,11 @@
%include svn_delta_h.swg
#ifdef SWIGPYTHON
-%pythoncode {
+%pythoncode %{
# This function is for backwards compatibility only.
# Use svn_txdelta_window_t.ops instead.
svn_txdelta_window_t_ops_get = svn_txdelta_window_t._ops_get
-}
+%}
#endif
#ifdef SWIGRUBY

View File

@ -0,0 +1,47 @@
Fugly hack to fix build with SWIG 3.0.x. The pre-processor seems to
expand the %define correctly with only the change to %{..%}, but
%extend still breaks somehow.
https://github.com/swig/swig/issues/379
--- subversion-1.8.13/subversion/bindings/swig/include/proxy.swg.swigpython
+++ subversion-1.8.13/subversion/bindings/swig/include/proxy.swg
@@ -62,7 +62,7 @@
/* Default code for all wrapped proxy classes in Python */
%define %proxy_pythoncode(TYPE)
-%pythoncode {
+%pythoncode %{
def set_parent_pool(self, parent_pool=None):
"""Create a new proxy object for TYPE"""
import libsvn.core, weakref
@@ -83,13 +83,10 @@
value = _swig_getattr(self, self.__class__, name)
- # If we got back a different object than we have, we need to copy all our
- # metadata into it, so that it looks identical
members = self.__dict__.get("_members")
if members is not None:
_copy_metadata_deep(value, members.get(name))
- # Verify that the new object is good
_assert_valid_deep(value)
return value
@@ -98,13 +95,10 @@
"""Set an attribute on this object"""
self.assert_valid()
- # Save a copy of the object, so that the garbage
- # collector won't kill the object while it's in
- # SWIG-land
self.__dict__.setdefault("_members",{})[name] = value
return _swig_setattr(self, self.__class__, name, value)
-}
+%}
%enddef
/* Define a proxy for wrapping an existing struct */

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,11 @@
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target
Documentation=man:svnserve(8)
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS
PrivateTmp=yes
[Install]
WantedBy=multi-user.target