[gparted] Fix make distcheck build failing with missing *.Po files (#785308)



commit 38cb6f2770daa8b8fb72115ba9f4bba473783928
Author: Mike Fleetwood <mike fleetwood googlemail com>
Date:   Sun Jul 23 11:08:39 2017 +0100

    Fix make distcheck build failing with missing *.Po files (#785308)
    
    Make distcheck is failing like:
        <snip>
        Make distcheck
        Making distclean in tests
        make[2]: Entering directory
        '/home/gedakc/workspace/gparted/gparted-0.29.0-beta1/_build/sub/tests'
        Makefile:658: ../src/.deps/BlockSpecial.Po: No such file or directory
        Makefile:659: ../src/.deps/PipeCapture.Po: No such file or directory
        make[2]: *** No rule to make target '../src/.deps/PipeCapture.Po'.  Stop.
        make[2]: Leaving directory
        '/home/gedakc/workspace/gparted/gparted-0.29.0-beta1/_build/sub/tests'
        Makefile:596: recipe for target 'distclean-recursive' failed
        make[1]: *** [distclean-recursive] Error 1
        make[1]: Leaving directory
        '/home/gedakc/workspace/gparted/gparted-0.29.0-beta1/_build/sub'
        Makefile:805: recipe for target 'distcheck' failed
        make: *** [distcheck] Error 1
    
    Make distcheck started failing like this with this commit:
        f31808989ab7562ad411911c8b2dc16958708be8
        Silence subdir-objects warning from automake 1.14 (#781978)
    
    However, also need to be referring to source files from a sibling
    directory like this from tests/Makefile.am:
        test_BlockSpecial_SOURCES = test_BlockSpecial.cc ../src/BlockSpecial.cc
                                                         ^^^^^^^
    First introduced by this commit:
        c37be28148ec6c6b2b9be4cf097f4d20513c9a14
        Add unit tests for BlockSpecial constructors and internal caching (#781978)
    
    This failure, if not exactly common, has been seen a number of times
    before.  Using this hint from a GNU Automake forum post:
    
        converting to subdir-objects
        http://gnu-automake.7480.n7.nabble.com/converting-to-subdir-objects-td21724.html
    
        "I had the same issue and wouldn't care unless Automake 1.15 started
        to warn about "source file in a subdirectory". In my case 'bar.o' is
        also built from 'foo/Makefile' so I decided to skip using 'bar.c' as
        SOURCE and instead link in 'foo/bar.o'.
    
        http://dev.thep.lu.se/svndigest/changeset/1581
    
        Cheers,
        Peter
        "
    
    Fix by avoiding referring to source files from a sibling directory when
    building the unit test programs, instead refer to object files instead.
    
    Note that the automake subdir-objects option is still required to
    silence the warning because of the use of source files in subdirectories
    by lib/gtest/Makefile.am.
    
    Bug 785308 - make distcheck fails with *.Po: No such file or directory

 tests/Makefile.am |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 84d3744..1274cab 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -19,6 +19,14 @@ check_PROGRAMS =  \
 TESTS = $(check_PROGRAMS)
 
 test_dummy_SOURCES        = test_dummy.cc
-test_BlockSpecial_SOURCES = test_BlockSpecial.cc ../src/BlockSpecial.cc
-test_PipeCapture_SOURCES  = test_PipeCapture.cc ../src/PipeCapture.cc
-test_PipeCapture_LDADD    = $(GTEST_LIBS) $(top_builddir)/lib/gtest/lib/libgtest.la
+
+test_BlockSpecial_SOURCES = test_BlockSpecial.cc
+test_BlockSpecial_LDADD   =  \
+       $(top_builddir)/src/BlockSpecial.$(OBJEXT)  \
+       $(LDADD)
+
+test_PipeCapture_SOURCES  = test_PipeCapture.cc
+test_PipeCapture_LDADD    =  \
+       $(top_builddir)/src/PipeCapture.$(OBJEXT)  \
+       $(GTEST_LIBS)                              \
+       $(top_builddir)/lib/gtest/lib/libgtest.la


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]