SOURCES: rpm-no-neon.patch - updated for 4.4.8

qboosh qboosh at pld-linux.org
Sun Apr 8 20:10:16 CEST 2007


Author: qboosh                       Date: Sun Apr  8 18:10:15 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated for 4.4.8

---- Files affected:
SOURCES:
   rpm-no-neon.patch (1.8 -> 1.9) 

---- Diffs:

================================================================
Index: SOURCES/rpm-no-neon.patch
diff -u SOURCES/rpm-no-neon.patch:1.8 SOURCES/rpm-no-neon.patch:1.9
--- SOURCES/rpm-no-neon.patch:1.8	Tue Oct 17 22:36:14 2006
+++ SOURCES/rpm-no-neon.patch	Sun Apr  8 20:10:10 2007
@@ -1,43 +1,5 @@
-diff -ur rpm-4.4.7.org/configure.ac rpm-4.4.7/configure.ac
---- rpm-4.4.7.org/configure.ac	2006-10-17 22:12:03.110624000 +0200
-+++ rpm-4.4.7/configure.ac	2006-10-17 22:12:43.117124500 +0200
-@@ -530,33 +530,6 @@
- AC_SUBST(WITH_BEECRYPT_INCLUDE)
- AC_SUBST(WITH_BEECRYPT_LIB)
- 
--#=================
--# Check for neon library. Prefer external, otherwise internal.
--WITH_NEON_SUBDIR=
--WITH_NEON_INCLUDE=
--WITH_NEON_LIB=
--AC_CHECK_HEADER([neon/ne_session.h], [
--  AC_CHECK_LIB(neon, ne_session_create, [
--    AC_DEFINE(HAVE_LIBNEON, 1, [Define to 1 if you have the 'neon' library (-lneon).])
--    AC_CHECK_LIB(neon, ne_get_response_header, [
--      AC_DEFINE(HAVE_NEON_NE_GET_RESPONSE_HEADER, 1, [Define to 1 if you have ne_get_response_header() in libneon.])
--    ])
--    AC_CHECK_LIB(neon, ne_send_request_chunk, [
--	AC_DEFINE(HAVE_NEON_NE_SEND_REQUEST_CHUNK, 1, [Define to 1 if you have ne_send_request_chunk() in libneon.])
--    ])
--    WITH_NEON_INCLUDE="-I${includedir}/neon"
--    WITH_NEON_LIB="-lneon"
--  ])
--],[
--  if test -d neon ; then
--    AC_DEFINE(HAVE_LIBNEON, 1, [Define to 1 if you have the 'neon' library (-lneon).])
--# XXX HAVE_NEON_NE_GET_RESPONSE_HEADER assumes libneon-0.25 devel internal
--    AC_DEFINE(HAVE_NEON_NE_GET_RESPONSE_HEADER, 1, [Define to 1 if you have ne_get_response_header() in libneon.])
--    WITH_NEON_SUBDIR=neon
--    WITH_NEON_INCLUDE="-I\${top_srcdir}/${WITH_NEON_SUBDIR}/src"
--    WITH_NEON_LIB="\${top_builddir}/${WITH_NEON_SUBDIR}/src/libneon.la"
--  fi
--])
- AC_SUBST(WITH_NEON_SUBDIR)
- AC_SUBST(WITH_NEON_INCLUDE)
- AC_SUBST(WITH_NEON_LIB)
-diff -ur rpm-4.4.7.org/rpmio/rpmdav.c rpm-4.4.7/rpmio/rpmdav.c
---- rpm-4.4.7.org/rpmio/rpmdav.c	2006-04-17 17:23:29.000000000 +0200
-+++ rpm-4.4.7/rpmio/rpmdav.c	2006-10-17 22:14:01.150001250 +0200
+--- rpm-4.4.8/rpmio/rpmdav.c.orig	2007-02-20 00:51:07.000000000 +0100
++++ rpm-4.4.8/rpmio/rpmdav.c	2007-04-08 20:07:07.814412143 +0200
 @@ -9,31 +9,6 @@
  #include <pthread.h>
  #endif
@@ -70,21 +32,32 @@
  #include <rpmio_internal.h>
  
  #define _RPMDAV_INTERNAL
-@@ -69,1332 +44,6 @@
+@@ -69,1439 +44,6 @@
  }
  
  /* =============================================================== */
--static int davFree(urlinfo u)
+-int davFree(urlinfo u)
 -	/*@globals internalState @*/
 -	/*@modifies u, internalState @*/
 -{
--    if (u != NULL && u->sess != NULL) {
--	u->capabilities = _free(u->capabilities);
--	if (u->lockstore != NULL)
--	    ne_lockstore_destroy(u->lockstore);
--	u->lockstore = NULL;
--	ne_session_destroy(u->sess);
--	u->sess = NULL;
+-    if (u != NULL) {
+-	if (u->sess != NULL) {
+-	    ne_session_destroy(u->sess);
+-	    u->sess = NULL;
+-	}
+-	switch (u->urltype) {
+-	default:
+-	    /*@notreached@*/ break;
+-	case URL_IS_HTTPS:
+-	case URL_IS_HTTP:
+-	case URL_IS_HKP:
+-	    u->capabilities = _free(u->capabilities);
+-	    if (u->lockstore != NULL)
+-		ne_lockstore_destroy(u->lockstore);
+-	    u->lockstore = NULL;
+-	    ne_sock_exit();
+-	    break;
+-	}
 -    }
 -    return 0;
 -}
@@ -284,18 +257,36 @@
 -    /* HACK: where should server capabilities be read? */
 -    (void) urlPath(u->url, &path);
 -    /* HACK: perhaps capture Allow: tag, look for PUT permitted. */
+-    /* XXX [hdr] Allow: GET,HEAD,POST,OPTIONS,TRACE */
 -    rc = ne_options(u->sess, path, u->capabilities);
 -    switch (rc) {
 -    case NE_OK:
--	break;
+-    {	ne_server_capabilities *cap = u->capabilities;
+-	if (cap->dav_class1)
+-	    u->allow |= RPMURL_SERVER_HASDAVCLASS1;
+-	else
+-	    u->allow &= ~RPMURL_SERVER_HASDAVCLASS1;
+-	if (cap->dav_class2)
+-	    u->allow |= RPMURL_SERVER_HASDAVCLASS2;
+-	else
+-	    u->allow &= ~RPMURL_SERVER_HASDAVCLASS2;
+-	if (cap->dav_executable)
+-	    u->allow |= RPMURL_SERVER_HASDAVEXEC;
+-	else
+-	    u->allow &= ~RPMURL_SERVER_HASDAVEXEC;
+-    }	break;
 -    case NE_ERROR:
 -	/* HACK: "301 Moved Permanently" on empty subdir. */
 -	if (!strncmp("301 ", ne_get_error(u->sess), sizeof("301 ")-1))
 -	    break;
--	/*@fallthrough@*/
--    case NE_CONNECT:
+-	errno = EIO;		/* HACK: more precise errno. */
+-	goto bottom;
 -    case NE_LOOKUP:
+-	errno = ENOENT;		/* HACK: errno same as non-existent path. */
+-	goto bottom;
+-    case NE_CONNECT:		/* HACK: errno set already? */
 -    default:
+-bottom:
 -if (_dav_debug)
 -fprintf(stderr, "*** Connect to %s:%d failed(%d):\n\t%s\n",
 -		   u->host, u->port, rc, ne_get_error(u->sess));
@@ -383,7 +374,7 @@
 -
 -exit:
 -/*@-boundswrite@*/
--    if (rc == 0 && uret != NULL)
+-    if (uret != NULL)
 -	*uret = urlLink(u, __FUNCTION__);
 -/*@=boundswrite@*/
 -    u = urlFree(u, "urlSplit (davInit)");
@@ -458,6 +449,8 @@
 -    int ac;
 -    int nalloced;
 -    ARGV_t av;
+-/*@null@*/ /*@shared@*/
+-    struct stat *st;
 -    mode_t * modes;
 -    size_t * sizes;
 -    time_t * mtimes;
@@ -485,7 +478,7 @@
 -}
 -
 -/*@null@*/
--static void *fetch_create_context(const char *uri)
+-static void *fetch_create_context(const char *uri, /*@null@*/ struct stat *st)
 -	/*@globals internalState @*/
 -	/*@modifies internalState @*/
 -{
@@ -500,6 +493,8 @@
 -    ctx = ne_calloc(sizeof(*ctx));
 -    ctx->uri = xstrdup(uri);
 -    ctx->u = urlLink(u, __FUNCTION__);
+-    if ((ctx->st = st) != NULL)
+-	memset(ctx->st, 0, sizeof(*ctx->st));
 -    return ctx;
 -}
 -
@@ -702,7 +697,7 @@
 -    (void) urlPath(u->url, &path);
 -    pfh = ne_propfind_create(u->sess, ctx->uri, depth);
 -
--    /* HACK: need to set u->httpHasRange here. */
+-    /* HACK: need to set RPMURL_SERVER_HASRANGE in u->allow here. */
 -
 -    ctx->resrock = resrock;
 -    ctx->include_target = include_target;
@@ -782,7 +777,70 @@
 -	current = fetch_destroy_item(current);
 -    }
 -    ctx->resrock = NULL;	/* HACK: avoid leaving stack reference. */
+-    /* HACK realloc to truncate modes/sizes/mtimes */
+-
+-    return rc;
+-}
+-
+-/* HACK this should be rewritten to use davReq/davResp w callbacks. */
+-static int davHEAD(urlinfo u, struct stat *st) 
+-	/*@modifies *st @*/
+-{
+-    ne_request *req;
+-    const char *htag;
+-    const char *value = NULL;
+-    int rc;
+-
+-    st->st_mode = S_IFREG;
+-    st->st_blksize = 4 * 1024;	/* HACK correct for linux ext */
+-    st->st_size = -1;
+-    st->st_atime = -1;
+-    st->st_mtime = -1;
+-    st->st_ctime = -1;
+-
+-    req = ne_request_create(u->sess, "HEAD", u->url);
+-
+-    rc = ne_request_dispatch(req);
+-    switch (rc) {
+-    default:
+-	goto exit;
+-	/*@notreached@*/
+-    case NE_OK:
+-	if (ne_get_status(req)->klass != 2) {
+-	    rc = NE_ERROR;
+-	    goto exit;
+-	}
+-	break;
+-    }
+-
+-#ifdef	NOTYET
+-    htag = "ETag";
+-    value = ne_get_response_header(req, htag); 
+-    if (value) {
+-	/* inode-size-mtime */
+-    }
+-#endif
+-
+-    htag = "Content-Length";
+-#if defined(HAVE_NEON_NE_GET_RESPONSE_HEADER)
+-    value = ne_get_response_header(req, htag); 
+-#endif
+-    if (value) {
+-	st->st_size = strtoll(value, NULL, 10);
+-	st->st_blocks = (st->st_size + 511)/512;
+-    }
+-
+-    htag = "Last-Modified";
+-#if defined(HAVE_NEON_NE_GET_RESPONSE_HEADER)
+-    value = ne_get_response_header(req, htag); 
+-#endif
+-    if (value) {
+-	st->st_mtime = ne_httpdate_parse(value);
+-	st->st_atime = st->st_ctime = st->st_mtime;	/* HACK */
+-    }
 -
+-exit:
+-    ne_request_destroy(req);
 -    return rc;
 -}
 -
@@ -798,11 +856,19 @@
 -    if (rc || u == NULL)
 -	goto exit;
 -
--    rc = davFetch(u, ctx);
+-/* HACK do PROPFIND through davFetch iff enabled, otherwise HEAD Content-length/ETag/Last-Modified */
+-    if (u->allow & RPMURL_SERVER_HASDAV)
+-	   rc = davFetch(u, ctx);	/* use PROPFIND to get contentLength */
+-    else
+-	   rc = davHEAD(u, ctx->st);	/* use HEAD to get contentLength */
+-
 -    switch (rc) {
 -    case NE_OK:
 -        break;
 -    case NE_ERROR:
+-	/* HACK: "405 Method Not Allowed" for PROPFIND on non-DAV servers. */
+-	/* XXX #206066 OPTIONS is ok, but PROPFIND from Stat() fails. */
+-	/* rpm -qp --rpmiodebug --davdebug http://people.freedesktop.org/~sandmann/metacity-2.16.0-2.fc6/i386/metacity-2.16.0-2.fc6.i386.rpm */
 -	/* HACK: "301 Moved Permanently" on empty subdir. */
 -	if (!strncmp("301 ", ne_get_error(u->sess), sizeof("301 ")-1))
 -	    break;
@@ -815,8 +881,7 @@
 -    }
 -
 -exit:
--    if (rc)
--	xx = davFree(u);
+-    xx = davFree(u);
 -    return rc;
 -}
 -
@@ -867,9 +932,9 @@
 -if (_dav_debug < 0)
 -fprintf(stderr, "*** u %p Accept-Ranges: %s\n", u, value);
 -    if (!strcmp(value, "bytes"))
--	u->httpHasRange = 1;
+-	u->allow |= RPMURL_SERVER_HASRANGE;
 -    if (!strcmp(value, "none"))
--	u->httpHasRange = 0;
+-	u->allow &= ~RPMURL_SERVER_HASRANGE;
 -}
 -/*@=mustmod@*/
 -
@@ -1306,8 +1371,9 @@
 -    int rc = -1;
 -
 -/* HACK: neon really wants collections with trailing '/' */
--    ctx = fetch_create_context(path);
+-    ctx = fetch_create_context(path, st);
 -    if (ctx == NULL) {
+-fprintf(stderr, "==> %s fetch_create_context ctx %p\n", __FUNCTION__, ctx);
 -/* HACK: errno = ??? */
 -	goto exit;
 -    }
@@ -1317,10 +1383,11 @@
 -	goto exit;
 -    }
 -
--    memset(st, 0, sizeof(*st));
--    st->st_mode = ctx->modes[0];
--    st->st_size = ctx->sizes[0];
--    st->st_mtime = ctx->mtimes[0];
+-    if (st->st_mode == 0)
+-	st->st_mode = (ctx->ac > 1 ? S_IFDIR : S_IFREG);
+-    st->st_size = (ctx->sizes ? ctx->sizes[0] : st->st_size);
+-    st->st_mtime = (ctx->mtimes ? ctx->mtimes[0] : st->st_mtime);
+-    st->st_atime = st->st_ctime = st->st_mtime;	/* HACK */
 -    if (S_ISDIR(st->st_mode)) {
 -	st->st_nlink = 2;
 -	st->st_mode |= 0755;
@@ -1333,9 +1400,10 @@
 -    /* XXX fts(3) needs/uses st_ino, make something up for now. */
 -    if (st->st_ino == 0)
 -	st->st_ino = dav_st_ino++;
+-
+-exit:
 -if (_dav_debug < 0)
 -fprintf(stderr, "*** davStat(%s) rc %d\n%s", path, rc, statstr(st, buf));
--exit:
 -    ctx = fetch_destroy_context(ctx);
 -    return rc;
 -}
@@ -1351,7 +1419,7 @@
 -    int rc = -1;
 -
 -/* HACK: neon really wants collections with trailing '/' */
--    ctx = fetch_create_context(path);
+-    ctx = fetch_create_context(path, st);
 -    if (ctx == NULL) {
 -/* HACK: errno = ??? */
 -	goto exit;
@@ -1362,10 +1430,11 @@
 -	goto exit;
 -    }
 -
--    memset(st, 0, sizeof(*st));
--    st->st_mode = ctx->modes[0];
--    st->st_size = ctx->sizes[0];
--    st->st_mtime = ctx->mtimes[0];
+-    if (st->st_mode == 0)
+-	st->st_mode = (ctx->ac > 1 ? S_IFDIR : S_IFREG);
+-    st->st_size = (ctx->sizes ? ctx->sizes[0] : st->st_size);
+-    st->st_mtime = (ctx->mtimes ? ctx->mtimes[0] : st->st_mtime);
+-    st->st_atime = st->st_ctime = st->st_mtime;	/* HACK */
 -    if (S_ISDIR(st->st_mode)) {
 -	st->st_nlink = 2;
 -	st->st_mode |= 0755;
@@ -1403,7 +1472,7 @@
  /*@unchecked@*/
  int avmagicdir = 0x3607113;
  
-@@ -1518,171 +167,4 @@
+@@ -1625,171 +167,3 @@
  }
  /*@=boundswrite@*/
  
@@ -1461,7 +1530,7 @@
 -    dp->d_reclen = 0;		/* W2DO? */
 -
 -#if !(defined(hpux) || defined(__hpux) || defined(sun))
--#if !defined(__APPLE__)
+-#if !defined(__APPLE__) && !defined(__FreeBSD_kernel__)
 -    dp->d_off = 0;		/* W2DO? */
 -#endif
 -/*@-boundsread@*/
@@ -1489,7 +1558,7 @@
 -    char * t;
 -    int ac, nac;
 -    int rc;
- 
+-
 -    /* HACK: glob does not pass dirs with trailing '/' */
 -    nb = strlen(path)+1;
 -/*@-branchstate@*/
@@ -1505,7 +1574,7 @@
 -fprintf(stderr, "*** davOpendir(%s)\n", path);
 -
 -    /* Load DAV collection into argv. */
--    ctx = fetch_create_context(path);
+-    ctx = fetch_create_context(path, NULL);
 -    if (ctx == NULL) {
 -/* HACK: errno = ??? */
 -	return NULL;
@@ -2431,18 +2500,9 @@
   { "rpmiodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmio_debug, -1,
  	N_("debug rpmio I/O"), NULL},
   { "urldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_url_debug, -1,
-diff -ur rpm-4.4.7.org/rpmio/url.c rpm-4.4.7/rpmio/url.c
---- rpm-4.4.7.org/rpmio/url.c	2006-08-06 02:31:18.000000000 +0200
-+++ rpm-4.4.7/rpmio/url.c	2006-10-17 22:21:51.747411750 +0200
-@@ -148,7 +148,6 @@
-     }
-     if (u->sess != NULL) {
- 	/* HACK: neon include has prototype. */
--	ne_session_destroy(u->sess);
- 	u->sess = NULL;
-     }
-     u->buf = _free(u->buf);
-@@ -352,9 +351,6 @@
+--- rpm-4.4.8/rpmio/url.c.orig	2007-01-20 21:33:50.000000000 +0100
++++ rpm-4.4.8/rpmio/url.c	2007-04-08 19:57:45.646376012 +0200
+@@ -348,9 +348,6 @@
  } urlstrings[] = {
      { "file://",	URL_IS_PATH },
      { "ftp://",		URL_IS_FTP },
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/rpm-no-neon.patch?r1=1.8&r2=1.9&f=u



More information about the pld-cvs-commit mailing list