[sheepdog] [lttng-dev] [PATCH] configure: exit if urcu/uatomic.h is not found

Paul E. McKenney paulmck at linux.vnet.ibm.com
Sun May 20 17:56:11 CEST 2012


On Sun, May 20, 2012 at 11:28:29AM -0400, Mathieu Desnoyers wrote:
> * Christoph Hellwig (hch at infradead.org) wrote:
> > We could have a local include/uatomic.h that includes either based on
> > which one is available, still erroring out if none is present.
> > 
> > I've cced the LTTng list to se if using the old uatomic_arch.h header
> > from outside librcu is something we should do at all.
> 
> Hi Christoph,
> 
> Hrm, 0.4.1 is really old (2010-02-12). We did migrate some header names
> and clean up some API namespacing back then between 0.4 and 0.5, so we
> would not have to do it when the project would get more exposure. In
> terms of way forward, we were planning to remove urcu/uatomic_arch.h
> after a rather long deprecation period, being replaced by
> urcu/uatomic.h. As you noticed, there has been a deprecation #warning in
> place since the move has been done.
> 
> If you want to keep compatibility with the old 0.4.x version of liburcu
> for a longer time, my recommendation would be to add a configure.ac
> check for urcu/uatomic.h. It it is missing, then check for
> urcu/uatomic_arch.h. This would specify a preprocessor macro that will
> select either in a wrapper header within the sheepdog project.
> If you only rely on uatomic, doing so should handle deprecation of the
> older liburcu 0.4.x support within sheepdog at some point in the future
> if need be.

Another approach is to have sheepdog simply download the desired version
of liburcu if it doesn't like the one it finds.  ;-)

							Thanx, Paul

> It's good to be aware that between 0.4.x and 0.5, a namespace cleanup
> for all the smp_*mb() went in: those are now all prefixed with "cmm_",
> e.g.  cmm_smp_mb(). Same for a few other API members that were clashing
> with private project namespaces (all documented in the ChangeLog).
> uatomic_*() already had its namespace, so it did not need to be changed.
> 
> If in the future sheepdog starts using features for which the namespace
> changed at 0.5, you might want to consider dropping support for liburcu
> 0.4.x.
> 
> Whether you decide on just bailing out is urcu/uatomic.h is not found or
> use a detection macro is up to you, and depends on how far back you want
> to support old distros.
> 
> Thanks!
> 
> Mathieu
> 
> 
> > 
> > On Sun, May 20, 2012 at 09:17:39PM +0800, Liu Yuan wrote:
> > > On 05/20/2012 10:59 AM, MORITA Kazutaka wrote:
> > > 
> > > > 
> > > > On my environment (debian squeeze), the package version of liburcu is
> > > > too old (0.4.1) and I cannot compile the latest sheepdog because
> > > > urcu/uatomic.h is missing.
> > > > 
> > > > Is there any way to build Sheepdog with the older version of liburcu?
> > > > If no, we'd better check the existence of urcu/uatomic.h.
> > > 
> > > 
> > > urcu/uatomic_arch.h might be the compatible header to include, but it
> > > will issue a annoying warning for a recent version like following:
> > > 
> > > /usr/include/urcu/uatomic_arch.h:1: warning: #warning
> > > "urcu/uatomic_arch.h is deprecated. Please include urcu/uatomic.h instead."
> > > 
> > > Maybe we can use complex macros to check urcu version to get rid of this
> > > warning, but I think would be better use your patch directly to simplify
> > > the thing.
> > > 
> > > Thanks,
> > > Yuan
> > > -- 
> > > sheepdog mailing list
> > > sheepdog at lists.wpkg.org
> > > http://lists.wpkg.org/mailman/listinfo/sheepdog
> > ---end quoted text---
> > 
> > _______________________________________________
> > lttng-dev mailing list
> > lttng-dev at lists.lttng.org
> > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> 
> -- 
> Mathieu Desnoyers
> Operating System Efficiency R&D Consultant
> EfficiOS Inc.
> http://www.efficios.com
> 




More information about the sheepdog mailing list