subversion: Upgrade 1.7.7 -> 1.8.9

Dropped neon patches as neon support was dropped.
Dropped CVE patches as applied in later version
Added patch to avoid OS-X check which doesn't cross compile
Add PACKAGECONFIG for gnome-keyring

Addition to license:

For the file subversion/libsvn_subr/utf_width.c
* Markus Kuhn -- 2007-05-26 (Unicode 5.0)
*
* Permission to use, copy, modify, and distribute this software
* for any purpose and without fee is hereby granted. The author
* disclaims all warranties with regard to this software.

(From OE-Core rev: 99c3225cfe39f8de89555df5bd3f1e93cd731269)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2014-07-16 12:31:59 +00:00
parent 24bee503bf
commit 76f75e91ce
9 changed files with 74 additions and 296 deletions

View File

@ -1,20 +0,0 @@
Allow neon 0.30 to be usable also
Upstream-Status: Pending
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Index: subversion-1.7.10/configure.ac
===================================================================
--- subversion-1.7.10.orig/configure.ac
+++ subversion-1.7.10/configure.ac
@@ -118,7 +118,7 @@ AC_PATH_PROG(PKG_CONFIG, pkg-config)
# Either a space-separated list of allowable Neon versions, or "any" to
# mean allow anything.
-NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28 0\.29"
+NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28 0\.29 0\.30"
NEON_RECOMMENDED_VER="0.29.6"
NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz"
dnl You can skip the neon version check only if you know what you are doing

View File

@ -1,48 +0,0 @@
install-neon-lib should depend on libsvn_delta's installation
install-neon-lib needs libsvn_delta-1.la which will be regenerated
during libsvn_delta-1.la's installation, if libsvn_delta-1.la is
in regenerating and at the same time install-neon-lib links it, the
error willl happen.
Let install-neon-lib run after libsvn_delta-1.la is installed will fix
the problem.
Upstream-Status: Pending
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
build-outputs.mk | 2 +-
build.conf | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
--- subversion-1.7.6.orig/build-outputs.mk
+++ subversion-1.7.6/build-outputs.mk
@@ -983,11 +983,11 @@ install-locale: subversion/po/de.mo subv
$(MKDIR) $(DESTDIR)$(localedir)/zh_CN/LC_MESSAGES
cd subversion/po ; $(INSTALL_LOCALE) zh_CN.mo $(DESTDIR)$(localedir)/zh_CN/LC_MESSAGES/$(PACKAGE_NAME).mo
$(MKDIR) $(DESTDIR)$(localedir)/zh_TW/LC_MESSAGES
cd subversion/po ; $(INSTALL_LOCALE) zh_TW.mo $(DESTDIR)$(localedir)/zh_TW/LC_MESSAGES/$(PACKAGE_NAME).mo
-install-neon-lib: subversion/libsvn_ra_neon/libsvn_ra_neon-1.la
+install-neon-lib: subversion/libsvn_ra_neon/libsvn_ra_neon-1.la $(SVN_FS_LIB_INSTALL_DEPS)
$(MKDIR) $(DESTDIR)$(neon_libdir)
cd subversion/libsvn_ra_neon ; $(INSTALL_NEON_LIB) libsvn_ra_neon-1.la $(DESTDIR)$(neon_libdir)/libsvn_ra_neon-1.la
install-ramod-lib: subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_ra_local/libsvn_ra_local-1.la
$(MKDIR) $(DESTDIR)$(ramod_libdir)
--- subversion-1.7.6.orig/build.conf
+++ subversion-1.7.6/build.conf
@@ -270,10 +270,12 @@ msvc-export = svn_ra.h private\svn_ra_pr
[libsvn_ra_neon]
type = ra-module
path = subversion/libsvn_ra_neon
install = neon-lib
libs = libsvn_delta libsvn_subr aprutil apriconv apr neon
+# conditionally add more dependencies
+add-install-deps = $(SVN_FS_LIB_INSTALL_DEPS)
msvc-static = yes
# Accessing repositories via DAV through serf
[libsvn_ra_serf]
type = ra-module

View File

@ -1,32 +0,0 @@
Fix to get correct SVN_NEON_CONFIG and CFLAGS when sysroot path contains '-D' and '-I'
characters.
Upstream-Status: Pending
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
index f951039..a813145 100644
--- a/build/ac-macros/neon.m4
+++ b/build/ac-macros/neon.m4
@@ -105,8 +105,8 @@ AC_DEFUN(SVN_NEON_CONFIG,
test "$svn_allowed_neon" = "any"; then
svn_allowed_neon_on_system="yes"
if test "$NEON_PKG_CONFIG" = "yes"; then
- SVN_NEON_INCLUDES=[`$PKG_CONFIG neon --cflags | $SED -e 's/-D[^ ]*//g'`]
- CFLAGS=["$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/-I[^ ]*//g'`"]
+ SVN_NEON_INCLUDES=["`$PKG_CONFIG neon --cflags | $SED -e 's/^-D[^ ]*//g' -e 's/ -D[^ ]*//g'`"]
+ CFLAGS=["$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/^-I[^ ]*//g' -e 's/ -I[^ ]*//g'`"]
old_CFLAGS="$CFLAGS"
old_LIBS="$LIBS"
NEON_LIBS=`$PKG_CONFIG neon --libs`
@@ -126,8 +126,8 @@ int main()
CFLAGS="$old_CFLAGS"
LIBS="$old_LIBS"
else
- SVN_NEON_INCLUDES=[`$neon_config --cflags | $SED -e 's/-D[^ ]*//g'`]
- CFLAGS=["$CFLAGS `$neon_config --cflags | $SED -e 's/-I[^ ]*//g'`"]
+ SVN_NEON_INCLUDES=[`$neon_config --cflags | $SED -e 's/^-D[^ ]*//g' -e 's/ -D[^ ]*//g'`]
+ CFLAGS=["$CFLAGS `$neon_config --cflags | $SED -e 's/^-I[^ ]*//g' -e 's/ -I[^ ]*//g'`"]
NEON_LIBS=`$neon_config --libs`
fi
svn_lib_neon="yes"

View File

@ -1,42 +0,0 @@
Upstream-Status: Backport
Index: subversion/mod_dav_svn/repos.c
===================================================================
--- a/subversion/mod_dav_svn/repos.c (revision 1503527)
+++ b/subversion/mod_dav_svn/repos.c (revision 1503528)
@@ -2408,21 +2408,12 @@
svn_boolean_t is_urlpath,
apr_pool_t *pool)
{
- apr_size_t len;
- char *tmp = apr_pstrdup(pool, path);
-
- len = strlen(tmp);
-
- if (len > 0)
+ if (*path != '\0') /* not an empty string */
{
- /* Remove any trailing slash; else svn_path_dirname() asserts. */
- if (tmp[len-1] == '/')
- tmp[len-1] = '\0';
-
if (is_urlpath)
- return svn_urlpath__dirname(tmp, pool);
+ return svn_urlpath__dirname(path, pool);
else
- return svn_fspath__dirname(tmp, pool);
+ return svn_fspath__dirname(path, pool);
}
return path;
@@ -2458,7 +2449,9 @@
parent->versioned = 1;
parent->hooks = resource->hooks;
parent->pool = resource->pool;
- parent->uri = get_parent_path(resource->uri, TRUE, resource->pool);
+ parent->uri = get_parent_path(svn_urlpath__canonicalize(resource->uri,
+ resource->pool),
+ TRUE, resource->pool);
parent->info = parentinfo;
parentinfo->uri_path =

View File

@ -1,15 +0,0 @@
Upstream-Status: Backport
--- a/subversion/svnserve/main.c
+++ b/subversion/svnserve/main.c
@@ -403,8 +403,9 @@ static svn_error_t *write_pid_file(const
const char *contents = apr_psprintf(pool, "%" APR_PID_T_FMT "\n",
getpid());
+ SVN_ERR(svn_io_remove_file2(filename, TRUE, pool));
SVN_ERR(svn_io_file_open(&file, filename,
- APR_WRITE | APR_CREATE | APR_TRUNCATE,
+ APR_WRITE | APR_CREATE | APR_EXCL,
APR_OS_DEFAULT, pool));
SVN_ERR(svn_io_file_write_full(file, contents, strlen(contents), NULL,
pool));

View File

@ -1,130 +0,0 @@
Upstream-Status: Backport
Index: tools/server-side/mod_dontdothat/mod_dontdothat.c
===================================================================
--- a/tools/server-side/mod_dontdothat/mod_dontdothat.c (revision 1239695)
+++ b/tools/server-side/mod_dontdothat/mod_dontdothat.c (revision 1542078)
@@ -30,12 +30,15 @@
#include <util_filter.h>
#include <ap_config.h>
#include <apr_strings.h>
+#include <apr_uri.h>
#include <expat.h>
#include "mod_dav_svn.h"
#include "svn_string.h"
#include "svn_config.h"
+#include "svn_path.h"
+#include "private/svn_fspath.h"
module AP_MODULE_DECLARE_DATA dontdothat_module;
@@ -161,26 +164,71 @@
}
}
+/* duplicate of dav_svn__log_err() from mod_dav_svn/util.c */
+static void
+log_dav_err(request_rec *r,
+ dav_error *err,
+ int level)
+{
+ dav_error *errscan;
+
+ /* Log the errors */
+ /* ### should have a directive to log the first or all */
+ for (errscan = err; errscan != NULL; errscan = errscan->prev) {
+ apr_status_t status;
+
+ if (errscan->desc == NULL)
+ continue;
+
+#if AP_MODULE_MAGIC_AT_LEAST(20091119,0)
+ status = errscan->aprerr;
+#else
+ status = errscan->save_errno;
+#endif
+
+ ap_log_rerror(APLOG_MARK, level, status, r,
+ "%s [%d, #%d]",
+ errscan->desc, errscan->status, errscan->error_id);
+ }
+}
+
static svn_boolean_t
is_this_legal(dontdothat_filter_ctx *ctx, const char *uri)
{
const char *relative_path;
const char *cleaned_uri;
const char *repos_name;
+ const char *uri_path;
int trailing_slash;
dav_error *derr;
- /* Ok, so we need to skip past the scheme, host, etc. */
- uri = ap_strstr_c(uri, "://");
- if (uri)
- uri = ap_strchr_c(uri + 3, '/');
+ /* uri can be an absolute uri or just a path, we only want the path to match
+ * against */
+ if (uri && svn_path_is_url(uri))
+ {
+ apr_uri_t parsed_uri;
+ apr_status_t rv = apr_uri_parse(ctx->r->pool, uri, &parsed_uri);
+ if (APR_SUCCESS != rv)
+ {
+ /* Error parsing the URI, log and reject request. */
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, ctx->r,
+ "mod_dontdothat: blocked request after failing "
+ "to parse uri: '%s'", uri);
+ return FALSE;
+ }
+ uri_path = parsed_uri.path;
+ }
+ else
+ {
+ uri_path = uri;
+ }
- if (uri)
+ if (uri_path)
{
const char *repos_path;
derr = dav_svn_split_uri(ctx->r,
- uri,
+ uri_path,
ctx->cfg->base_path,
&cleaned_uri,
&trailing_slash,
@@ -194,7 +242,7 @@
if (! repos_path)
repos_path = "";
- repos_path = apr_psprintf(ctx->r->pool, "/%s", repos_path);
+ repos_path = svn_fspath__canonicalize(repos_path, ctx->r->pool);
/* First check the special cases that are always legal... */
for (idx = 0; idx < ctx->allow_recursive_ops->nelts; ++idx)
@@ -228,7 +276,20 @@
}
}
}
+ else
+ {
+ log_dav_err(ctx->r, derr, APLOG_ERR);
+ return FALSE;
+ }
+
}
+ else
+ {
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r,
+ "mod_dontdothat: empty uri passed to is_this_legal(), "
+ "module bug?");
+ return FALSE;
+ }
return TRUE;
}

View File

@ -0,0 +1,68 @@
These tests don't work in cross compiling, just disable them for now, we don't
build subversion on OS-X at this time.
RP 1014/7/16
Upstream-Status: Pending [needs a rewrite to support a cache value]
Index: subversion-1.8.9/build/ac-macros/macosx.m4
===================================================================
--- subversion-1.8.9.orig/build/ac-macros/macosx.m4 2012-11-26 03:04:27.000000000 +0000
+++ subversion-1.8.9/build/ac-macros/macosx.m4 2014-07-16 12:28:58.357300403 +0000
@@ -24,21 +24,7 @@
AC_DEFUN(SVN_LIB_MACHO_ITERATE,
[
AC_MSG_CHECKING([for Mach-O dynamic module iteration functions])
- AC_RUN_IFELSE([AC_LANG_PROGRAM([[
- #include <mach-o/dyld.h>
- #include <mach-o/loader.h>
- ]],[[
- const struct mach_header *header = _dyld_get_image_header(0);
- const char *name = _dyld_get_image_name(0);
- if (name && header) return 0;
- return 1;
- ]])],[
- AC_DEFINE([SVN_HAVE_MACHO_ITERATE], [1],
- [Is Mach-O low-level _dyld API available?])
- AC_MSG_RESULT([yes])
- ],[
AC_MSG_RESULT([no])
- ])
])
dnl SVN_LIB_MACOS_PLIST
@@ -46,34 +32,7 @@
AC_DEFUN(SVN_LIB_MACOS_PLIST,
[
AC_MSG_CHECKING([for Mac OS property list utilities])
-
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <AvailabilityMacros.h>
- #if !defined(MAC_OS_X_VERSION_MAX_ALLOWED) \
- || !defined(MAC_OS_X_VERSION_10_0) \
- || (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_0)
- #error ProperyList API unavailable.
- #endif
- ]],[[]])],[
- dnl ### Hack. We should only need to pass the -framework options when
- dnl linking libsvn_subr, since it is the only library that uses Keychain.
- dnl
- dnl Unfortunately, libtool 1.5.x doesn't track transitive dependencies for
- dnl OS X frameworks like it does for normal libraries, so we need to
- dnl explicitly pass the option to all the users of libsvn_subr to allow
- dnl static builds to link successfully.
- dnl
- dnl This does mean that all executables we link will be linked directly
- dnl to these frameworks - even when building shared libraries - but that
- dnl shouldn't cause any problems.
-
- LIBS="$LIBS -framework CoreFoundation"
- AC_DEFINE([SVN_HAVE_MACOS_PLIST], [1],
- [Is Mac OS property list API available?])
- AC_MSG_RESULT([yes])
- ],[
AC_MSG_RESULT([no])
- ])
])
dnl SVN_LIB_MACOS_KEYCHAIN

View File

@ -11,24 +11,21 @@ inherit gettext
SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
file://libtool2.patch \
file://fix-install-depends.patch \
file://allow-updated-neon.patch \
file://neon.m4-fix-includes-and-cflags.patch \
file://subversion-CVE-2013-4505.patch \
file://subversion-CVE-2013-4131.patch \
file://subversion-CVE-2013-4277.patch \
file://disable_macos.patch \
"
SRC_URI[md5sum] = "4088a77e14232876c9b4ff1541e6e200"
SRC_URI[sha256sum] = "c1df222bec83d014d17785e2ceba6bc80962f64b280967de0285836d8d77a8e7"
SRC_URI[md5sum] = "bd495517a760ddd764ce449a891971db"
SRC_URI[sha256sum] = "45d708a5c3ffbef4b2a1044c4716a053e680763743d1f7ba99d0369f6da49e33"
LIC_FILES_CHKSUM = "file://LICENSE;md5=4a14fd2da3134e40a087eb4326a4ecd4"
LIC_FILES_CHKSUM = "file://LICENSE;md5=1c2f0119e478700b5428e26386cff923"
PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl"
PACKAGECONFIG[gnome-keyring] = "--with-gnome-keyring,--without-gnome-keyring,glib-2.0 gnome-keyring"
EXTRA_OECONF = " \
--without-berkeley-db --without-apxs \
--without-swig --with-apr=${STAGING_BINDIR_CROSS} \
--with-apr-util=${STAGING_BINDIR_CROSS} \
--disable-keychain \
ac_cv_path_RUBY=none"
inherit autotools