You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Olaf Hering <ol...@suse.de> on 2008/01/23 15:04:51 UTC

[PATCH] close racecondition with make -j in header_wrappers.py

sometimes make -j fails. I came up with the change below.
This change is in use since Feb 2006.
Still applies to trunk.

/usr/bin/python /usr/src/packages/BUILD/subversion-1.3.x/build/generator/swig/header_wrappers.py /usr/src/packages/BUILD/subversion-1.3.x/build.conf /usr/bin/swig /usr/src/packages/BUILD/subversion-1.3.x/subversion/include/svn_auth.h

/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/core.i:613: Error: Unable to find 'svn_auth_h.swg'
/usr/bin/swig -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/include -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/proxy -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/proxy -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/include -I/usr/include  -I/usr/include/apr-1  -python -classic -w451 -w305 -o subversion/bindings/swig/python/core.c /usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/core.i

 build/generator/swig/header_wrappers.py |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/build/generator/swig/header_wrappers.py
+++ b/build/generator/swig/header_wrappers.py
@@ -239,7 +239,7 @@ class Generator(generator.swig.Generator
       self.proxy_filename(base_fname))
 
     # Open the output file
-    self.ofile = open(output_fname, 'w')
+    self.ofile = open(output_fname + "~", 'w')
     self.ofile.write('/* Proxy classes for %s\n' % base_fname)
     self.ofile.write(' * DO NOT EDIT -- AUTOMATICALLY GENERATED */\n')
 
@@ -264,6 +264,7 @@ class Generator(generator.swig.Generator
 
     # Close our output file
     self.ofile.close()
+    os.rename(output_fname + "~", output_fname)
 
   def process_header_file(self, fname):
     """Generate a wrapper around a header file"""

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

Re: [PATCH] do not use neon.la files

Posted by Arfrever Frehtes Taifersar Arahesis <ar...@gmail.com>.
2008-01-23 16:09:09 Olaf Hering napisaƂ(a):
> We removed most static libs and the .la files.
> Maybe the change below will work for everyone.
> 
> Index: build/ac-macros/neon.m4
> ===================================================================
> --- build/ac-macros/neon.m4.orig	2007-10-08 04:23:55.000000000 +0200
> +++ build/ac-macros/neon.m4	2007-11-26 23:12:19.000000000 +0100
> @@ -143,7 +143,7 @@ AC_DEFUN(SVN_NEON_CONFIG,
>             test "$svn_allowed_neon" = "any"; then
>              svn_allowed_neon_on_system="yes"
>              SVN_NEON_INCLUDES=[`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`]
> -            NEON_LIBS=`$neon_config --la-file`
> +            NEON_LIBS=`$neon_config --libs`
>              CFLAGS=["$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"]
>              svn_lib_neon="yes"
>              break
> 

-1 until `neon-config --libs` is fixed. Currently it contains LDFLAGS and
libraries which are dependencies of Neon.
It's still broken in Neon trunk.

`neon-config --la-file` doesn't cause any problems.

-- 
Arfrever Frehtes Taifersar Arahesis

Re: [PATCH] use ipv4 if the ipv6 address cant be reached

Posted by David Glasser <gl...@davidglasser.net>.
Has anyone familiar with these issues had the chance to review this?

--dave

On Jan 23, 2008 7:06 AM, Olaf Hering <ol...@suse.de> wrote:
>
> Fall back to ipv4 if the host has an ipv6 address,
> but doesnt respond to ipv6 right now.
> This change worked for us.
>
> https://bugzilla.novell.com/show_bug.cgi?id=193350
>
> ---
>  subversion/libsvn_ra_svn/client.c |   20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
>
> --- a/subversion/libsvn_ra_svn/client.c
> +++ b/subversion/libsvn_ra_svn/client.c
> @@ -145,10 +145,30 @@ static svn_error_t *make_connection(cons
>      return svn_error_wrap_apr(status, _("Can't create socket"));
>
>    status = apr_socket_connect(*sock, sa);
> +  if (!status)
> +         goto out;
> +  if (sa->family == APR_INET6) {
> +    status = apr_sockaddr_info_get(&sa, hostname, APR_INET, port, 0, pool);
> +    if (status)
> +      return svn_error_createf(status, NULL, _("Unknown hostname '%s'"),
> +                               hostname);
> +#ifdef MAX_SECS_TO_LINGER
> +    /* ### old APR interface */
> +    status = apr_socket_create(sock, sa->family, SOCK_STREAM, pool);
> +#else
> +    status = apr_socket_create(sock, sa->family, SOCK_STREAM, APR_PROTO_TCP,
> +                               pool);
> +#endif
> +    if (status)
> +      return svn_error_wrap_apr(status, _("Can't create socket"));
> +
> +    status = apr_socket_connect(*sock, sa);
> +  }
>    if (status)
>      return svn_error_wrap_apr(status, _("Can't connect to host '%s'"),
>                                hostname);
>
> +out:
>    return SVN_NO_ERROR;
>  }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: dev-help@subversion.tigris.org
>
>



-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

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

[PATCH] do not use neon.la files

Posted by Olaf Hering <ol...@suse.de>.
We removed most static libs and the .la files.
Maybe the change below will work for everyone.

Index: build/ac-macros/neon.m4
===================================================================
--- build/ac-macros/neon.m4.orig	2007-10-08 04:23:55.000000000 +0200
+++ build/ac-macros/neon.m4	2007-11-26 23:12:19.000000000 +0100
@@ -143,7 +143,7 @@ AC_DEFUN(SVN_NEON_CONFIG,
            test "$svn_allowed_neon" = "any"; then
             svn_allowed_neon_on_system="yes"
             SVN_NEON_INCLUDES=[`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`]
-            NEON_LIBS=`$neon_config --la-file`
+            NEON_LIBS=`$neon_config --libs`
             CFLAGS=["$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"]
             svn_lib_neon="yes"
             break

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

[PATCH] use ipv4 if the ipv6 address cant be reached

Posted by Olaf Hering <ol...@suse.de>.
Fall back to ipv4 if the host has an ipv6 address,
but doesnt respond to ipv6 right now.
This change worked for us.

https://bugzilla.novell.com/show_bug.cgi?id=193350

---
 subversion/libsvn_ra_svn/client.c |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

--- a/subversion/libsvn_ra_svn/client.c
+++ b/subversion/libsvn_ra_svn/client.c
@@ -145,10 +145,30 @@ static svn_error_t *make_connection(cons
     return svn_error_wrap_apr(status, _("Can't create socket"));
 
   status = apr_socket_connect(*sock, sa);
+  if (!status)
+	  goto out;
+  if (sa->family == APR_INET6) {
+    status = apr_sockaddr_info_get(&sa, hostname, APR_INET, port, 0, pool);
+    if (status)
+      return svn_error_createf(status, NULL, _("Unknown hostname '%s'"),
+                               hostname);
+#ifdef MAX_SECS_TO_LINGER
+    /* ### old APR interface */
+    status = apr_socket_create(sock, sa->family, SOCK_STREAM, pool);
+#else
+    status = apr_socket_create(sock, sa->family, SOCK_STREAM, APR_PROTO_TCP,
+                               pool);
+#endif
+    if (status)
+      return svn_error_wrap_apr(status, _("Can't create socket"));
+
+    status = apr_socket_connect(*sock, sa);
+  }
   if (status)
     return svn_error_wrap_apr(status, _("Can't connect to host '%s'"),
                               hostname);
 
+out:
   return SVN_NO_ERROR;
 }
 

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

Re: [PATCH] close racecondition with make -j in header_wrappers.py

Posted by David Glasser <gl...@davidglasser.net>.
On Jan 29, 2008 12:15 PM, Peter Samuelson <pe...@p12n.org> wrote:
>
> [David Glasser]
> > Ah, no wonder it fails for me if I put my swig commands under -j.
> > I'm not too familiar with the SWIG generation process, though; can
> > another commiter review this?  Why would "make" be trying to write
> > the same file multiple times anyway?  That seems wrong.
>
> From what I can see, it's not that the make process is writing the same
> file multiple times: it is that the output files in question are
> dependencies of other make targets.  If your make is threaded, one
> thread might notice a file's existence and decide to build other
> targets that depend on it - even if another thread is still writing to
> the original file.  By writing to a different filename then renaming it
> atomically, this won't happen.
>
> ...Though this does seem like it would be a common race condition with
> all kinds of build processes.  Perhaps 'make -j' tries to avoid the
> situation, but is thwarted by recursive $(MAKE) invocation, or
> something.

I'd like to see this issue fixed, but I'd still like to see somebody
explain why the same file is being generated multiple times by make
-j...  It seems like the right solution would be to not make our build
process do extra work!

--dave



-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

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

Re: [PATCH] close racecondition with make -j in header_wrappers.py

Posted by Peter Samuelson <pe...@p12n.org>.
[David Glasser]
> Ah, no wonder it fails for me if I put my swig commands under -j.
> I'm not too familiar with the SWIG generation process, though; can
> another commiter review this?  Why would "make" be trying to write
> the same file multiple times anyway?  That seems wrong.

Re: [PATCH] close racecondition with make -j in header_wrappers.py

Posted by David Glasser <gl...@davidglasser.net>.
Ah, no wonder it fails for me if I put my swig commands under -j.  I'm
not too familiar with the SWIG generation process, though; can another
commiter review this?  Why would "make" be trying to write the same
file multiple times anyway?  That seems wrong.

--dave

On Jan 23, 2008 7:04 AM, Olaf Hering <ol...@suse.de> wrote:
>
> sometimes make -j fails. I came up with the change below.
> This change is in use since Feb 2006.
> Still applies to trunk.
>
> /usr/bin/python /usr/src/packages/BUILD/subversion-1.3.x/build/generator/swig/header_wrappers.py /usr/src/packages/BUILD/subversion-1.3.x/build.conf /usr/bin/swig /usr/src/packages/BUILD/subversion-1.3.x/subversion/include/svn_auth.h
>
> /usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/core.i:613: Error: Unable to find 'svn_auth_h.swg'
> /usr/bin/swig -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/include -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/proxy -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/proxy -I/usr/src/packages/BUILD/subversion-1.3.x/subversion/include -I/usr/include  -I/usr/include/apr-1  -python -classic -w451 -w305 -o subversion/bindings/swig/python/core.c /usr/src/packages/BUILD/subversion-1.3.x/subversion/bindings/swig/core.i
>
>  build/generator/swig/header_wrappers.py |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> --- a/build/generator/swig/header_wrappers.py
> +++ b/build/generator/swig/header_wrappers.py
> @@ -239,7 +239,7 @@ class Generator(generator.swig.Generator
>        self.proxy_filename(base_fname))
>
>      # Open the output file
> -    self.ofile = open(output_fname, 'w')
> +    self.ofile = open(output_fname + "~", 'w')
>      self.ofile.write('/* Proxy classes for %s\n' % base_fname)
>      self.ofile.write(' * DO NOT EDIT -- AUTOMATICALLY GENERATED */\n')
>
> @@ -264,6 +264,7 @@ class Generator(generator.swig.Generator
>
>      # Close our output file
>      self.ofile.close()
> +    os.rename(output_fname + "~", output_fname)
>
>    def process_header_file(self, fname):
>      """Generate a wrapper around a header file"""
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: dev-help@subversion.tigris.org
>
>



-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

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