[sheepdog] [PATCH 1/2] configure: shut up autotool warning "but option 'subdir-objects' is disabled"

Liu Yuan namei.unix at gmail.com
Fri Mar 6 09:20:56 CET 2015


On Fri, Mar 06, 2015 at 03:58:45PM +0800, Liu Yuan wrote:
> On Thu, Mar 05, 2015 at 12:16:51PM -0500, Alexander Guy wrote:
> > On Thu, Mar 05, 2015 at 04:20:08PM +0800, Liu Yuan wrote:
> > > From: Liu Yuan <liuyuan at cmss.chinamobile.com>
> > > 
> > > Signed-off-by: Liu Yuan <liuyuan at cmss.chinamobile.com>
> > > ---
> > >  configure.ac | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/configure.ac b/configure.ac
> > > index 9f2e7f3..cece3d8 100644
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -24,7 +24,7 @@ m4_define([git_version],
> > >  
> > >  AC_INIT([sheepdog], m4_default(git_version, sheepdog_version),
> > >  	[sheepdog at lists.wpkg.org])
> > > -AM_INIT_AUTOMAKE([-Wno-portability])
> > > +AM_INIT_AUTOMAKE([-Wno-portability, subdir-objects])
> > >  
> > >  AC_CONFIG_SRCDIR([dog/dog.c])
> > >  AC_CONFIG_HEADER([include/config.h])
> > > -- 
> > > 1.9.1
> > 
> > Hello Liu,
> >     I had the same subdir-objects change in a local branch, but
> > hadn't submitted it because I ran into a problem with broken dependency
> > generation causing distclean to break.  This in turn breaks other things
> > (e.g. make deb).
> > 
> > I haven't had time to go through and figure out the right fix, but
> > maybe the correction will be clear to you.  Reordering targets might
> > cover-up the issue, but there's a deeper problem with where automake
> > thinks dependencies should live for the unit tests.
> > 
> > For example, on a freshly checked-out sheepdog tree:
> > 
> > ./autogen.sh && ./configure && make distclean
> > 
> > make[2]: Leaving directory '/home/alexander/sandbox/sheepdog/tests/unit/mock'
> > Making distclean in dog
> > make[2]: Entering directory '/home/alexander/sandbox/sheepdog/tests/unit/dog'
> > Makefile:555: ../../../dog/.deps/common.Po: No such file or directory
> > make[2]: *** No rule to make target '../../../dog/.deps/common.Po'.  Stop.
> > make[2]: Leaving directory '/home/alexander/sandbox/sheepdog/tests/unit/dog'
> > Makefile:342: recipe for target 'distclean-recursive' failed
> > make[1]: *** [distclean-recursive] Error 1
> > make[1]: Leaving directory '/home/alexander/sandbox/sheepdog/tests/unit'
> > Makefile:452: recipe for target 'distclean-recursive' failed
> > make: *** [distclean-recursive] Error 1
> > 
> > The depedencies are removed before the unit tests get distcleaned, which
> > causes make to fail.
> > 
> > There's also another interesting symptom caused by the use of
> > $(top_srcdir) in automake *_SOURCES, e.g. inside
> > sheepdog/tests/unit/dog/Makefile.am:
> > 
> > test_common_SOURCES     = test_common.c mock_dog.c                      \
> >                           $(top_srcdir)/dog/common.c
> > 
> > 
> > ... when used with subdir-objects, it's causing automake to create
> > dependencies under a literal '$(top_srcdir)' directory:
> > 
> > $ (cd sheepdog/tests/unit/ && find . -type d)
> > .
> > ./dog
> > ./dog/$(top_srcdir)
> > ./dog/$(top_srcdir)/dog
> > ./dog/$(top_srcdir)/dog/.deps
> > ./dog/.deps
> > ./mock
> > ./sheep
> > ./sheep/$(top_srcdir)
> > ./sheep/$(top_srcdir)/sheep
> > ./sheep/$(top_srcdir)/sheep/.deps
> > ./sheep/$(top_srcdir)/sheep/cluster
> > ./sheep/$(top_srcdir)/sheep/cluster/.deps
> > ./sheep/.deps
> > 
> > .. which is clearly not right.
> > 
> > Thanks.
> > 
> > 
> > Alexander
> > 
> 
> After some googling, seems that it is a bug of autoconf.
> 
> See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13928
> 
> Yuan

following patch can workaround the problem, but I'm not sure if we could put
it in our master branch. how do you think?

  
diff --git a/debian/rules b/debian/rules
index a917780..2b92022 100755
--- a/debian/rules
+++ b/debian/rules
@@ -26,7 +26,7 @@ ifeq ($(UNAME),Linux)
 endif
 
 override_dh_auto_configure:
-       dh_auto_configure -- ${ZOOKEEPER}
+       dh_auto_configure -- ${ZOOKEEPER} --disable-dependency-tracking
 
 override_dh_install:
        dh_install



More information about the sheepdog mailing list