You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by br...@xbc.nu on 2003/11/17 14:57:32 UTC

Re: svn rev 7778: FAIL (i386-unknown-freebsdelf5.0 shared)

Quoting brane@xbc.nu:

> PASS: update apr
> PASS: update apr-util
> PASS: update subversion
> PASS: autogen.sh
> 
> BUILD: Revision 7778 on i386-unknown-freebsdelf5.0 shared
[snip]

> cd subversion/clients/cmdline && /usr/local/bin/bash
> /home/brane/svn/obj-sh/libtool --silent --mode=link gcc  -g -O2  -g -O2 
> -DNEON_ZLIB -DNEON_SSL  -L/usr/local/lib    -L/usr/local/lib  -rpath
> /home/brane/svn/inst/lib -o svn add-cmd.o blame-cmd.o cat-cmd.o
> checkout-cmd.o cleanup-cmd.o commit-cmd.o copy-cmd.o delete-cmd.o
> diff-cmd.o export-cmd.o help-cmd.o import-cmd.o info-cmd.o log-cmd.o
> ls-cmd.o main.o merge-cmd.o mkdir-cmd.o move-cmd.o notify.o prompt.o
> propdel-cmd.o propedit-cmd.o propget-cmd.o proplist-cmd.o props.o
> propset-cmd.o resolved-cmd.o revert-cmd.o status-cmd.o status.o
> switch-cmd.o update-cmd.o util.o
> ../../../subversion/libsvn_client/libsvn_client-1.la
> ../../../subversion/libsvn_wc/libsvn_wc-1.la
> ../../../subversion/libsvn_ra/libsvn_ra-1.la
> ../../../subversion/libsvn_delta/libsvn_delta-1.la
> ../../../subversion/libsvn_subr/libsvn_subr-1.la
> /home/brane/svn/obj-sh/apr-util/libaprutil-1.la -ldb4 -lexpat -liconv
> /home/brane/svn/obj-sh/apr/libapr-1.la -lm -lcrypt!
>   /home/brane/svn/obj-sh/neon/src/libneon.la -L/usr/local/lib
> -L/home/brane/svn/inst/lib  -lssl -lcrypto -lz -L/usr/lib -lgssapi
> -lkrb5 -lasn1 -lcrypto -lroken -lcrypt -lcom_err -lexpat 
> /home/brane/svn/obj-sh/subversion/libsvn_ra_svn/.libs/libsvn_ra_svn-1.so:
> undefined reference to `apr_poll'
> *** Error code 1

The apr_poll interface was removed from HEAD, so we have to use apr_pollset_poll
instead. Here's a proposed patch; unfortunetely, it doesn't work :-( and I can't
debug it right now. Apologies if the patch gets wrapped, this mailer isn't among
the smartest...

[[[
Use the apr_pollset_t-based polling fucntions in svnserve.

* subversion/libsvn_ra_svn/ra_svn.h: Include apr_poll.h.
  (svn_ra_svn_conn_t): Add pollfd and pollset members.

* subversion/libsvn_ra_svn/marshal.c
  (svn_ra_svn_create_conn): Create a pollset for this connection.
  (svn_ra_svn__input_waiting): Use the connection's pollset to
  call apr_pollset_poll instead of the deprecated and now-dead
  apr_poll.
]]]


Index: subversion/libsvn_ra_svn/marshal.c
===================================================================
--- subversion/libsvn_ra_svn/marshal.c	(revision 7778)
+++ subversion/libsvn_ra_svn/marshal.c	(working copy)
@@ -59,6 +59,24 @@
   conn->block_baton = NULL;
   conn->capabilities = apr_hash_make(pool);
   conn->pool = pool;
+
+  conn->pollfd.p = pool;
+  conn->pollfd.client_data = NULL;
+  if (conn->sock)
+    {
+      conn->pollfd.desc_type = APR_POLL_SOCKET;
+      conn->pollfd.desc.s = conn->sock;
+    }
+  else
+    {
+      conn->pollfd.desc_type = APR_POLL_FILE;
+      conn->pollfd.desc.f = conn->in_file;
+    }
+
+  if (apr_pollset_create(&conn->pollset, 1, pool, 0)
+      || apr_pollset_add(conn->pollset, &conn->pollfd))
+      abort();                /* FIXME: What to do, what to do... ? */
+
   return conn;
 }
 
@@ -105,22 +123,12 @@
 svn_boolean_t svn_ra_svn__input_waiting(svn_ra_svn_conn_t *conn,
                                         apr_pool_t *pool)
 {
-  apr_pollfd_t pfd;
+  const apr_pollfd_t *descriptors;
   int n;
-
-  if (conn->sock)
-    {
-      pfd.desc_type = APR_POLL_SOCKET;
-      pfd.desc.s = conn->sock;
-    }
-  else
-    {
-      pfd.desc_type = APR_POLL_FILE;
-      pfd.desc.f = conn->in_file;
-    }
-  pfd.p = pool;
-  pfd.reqevents = APR_POLLIN;
-  return (APR_STATUS_IS_SUCCESS(apr_poll(&pfd, 1, &n, 0)) && n);
+  conn->pollfd.reqevents = APR_POLLIN;
+  return (APR_STATUS_IS_SUCCESS(apr_pollset_poll(conn->pollset, 0, &n,
+                                                 &descriptors))
+          && n);
 }
 
 /* --- WRITE BUFFER MANAGEMENT --- */
Index: subversion/libsvn_ra_svn/ra_svn.h
===================================================================
--- subversion/libsvn_ra_svn/ra_svn.h	(revision 7778)
+++ subversion/libsvn_ra_svn/ra_svn.h	(working copy)
@@ -28,6 +28,7 @@
 #include <apr_network_io.h>
 #include <apr_file_io.h>
 #include <apr_thread_proc.h>
+#include <apr_poll.h>
 #include <svn_ra_svn.h>
 
 /* Handler for blocked writes. */
@@ -54,6 +55,10 @@
   void *block_baton;
   apr_hash_t *capabilities;
   apr_pool_t *pool;
+
+  /* These are used for polling */
+  apr_pollfd_t pollfd;
+  apr_pollset_t *pollset;
 };
 
 /* Set a callback for blocked writes on conn.  This handler may

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org