Build failure with dbi enabled

Geert Janssens geert.gnucash at kobaltwit.be
Sat Apr 25 03:37:13 EDT 2015


On Friday 24 April 2015 14:29:39 John Ralls wrote:
> > On Apr 24, 2015, at 8:54 AM, Geert Janssens
> > <geert.gnucash at kobaltwit.be> wrote:> 
> > On Friday 24 April 2015 07:31:02 John Ralls wrote:
> >>> On Apr 24, 2015, at 6:36 AM, Geert Janssens
> >>> <geert.gnucash at kobaltwit.be> wrote:
> >>> 
> >>> I upgraded to Fedora 21 a couple of days ago and today I reran a
> >>> gnucash build for the first time since that upgrade.
> >>> 
> >>> As the upgrade changes lots of libraries I decided to start clean.
> >>> That is, remove build directory and start with a call to
> >>> autogen.sh.
> >>> 
> >>> The call to autogen.sh triggers the same subdir-objects warnings
> >>> Alex already reported earlier. I'm conveniently ignoring them for
> >>> now. The related bug will apparently be fixed in automake 1.16
> >>> (not
> >>> yet in Fedora 21).
> >>> 
> >>> However when I ran configure (from a clean build directory), it
> >>> exited with this error: ...
> >>> checking for dbi/dbi.h... yes
> >>> /kobaltnet/janssege/Development/EclipseGnuCash/GnuCash-git/configu
> >>> re
> >>> 
> >>> : line 22003: LD_LIBRARY_PATH: command not found
> >>> 
> >>> /kobaltnet/janssege/Development/EclipseGnuCash/GnuCash-git/configu
> >>> re
> >>> 
> >>> : line 22004: LD_LIBRARY_PATH: command not found
> >>> 
> >>> configure: Search Path
> >>> checking Looking for at least one supported DBD module...
> >>> configure:
> >>> error: Unable to find any of the supported dbd modules
> >>> (libdbdsqlite3, libdbdmysql, or libdbdpgsql) needed to actually
> >>> use
> >>> the SQL backend. ...
> >>> 
> >>> I fixed this by changing
> >>> AC_MSG_NOTICE([Search Path $(LD_LIBRARY_PATH)])
> >>> to
> >>> AC_MSG_NOTICE([Search Path $LD_LIBRARY_PATH])
> >>> in configure.ac
> >>> 
> >>> I'm surprised this wasn't detected before. Is this new behavior of
> >>> the automake tools ?
> >>> 
> >>> 
> >>> The next configure run exited again due to no DBD modules being
> >>> found even though the "LD_LIBRARY_PATH: command not found" errors
> >>> were now gone:
> >>> ...
> >>> checking for dbi/dbi.h... yes
> >>> configure: Search Path :/usr/lib64/dbd
> >>> checking Looking for at least one supported DBD module...
> >>> configure:
> >>> error: Unable to find any of the supported dbd modules
> >>> (libdbdsqlite3, libdbdmysql, or libdbdpgsql) needed to actually
> >>> use
> >>> the SQL backend. ...
> >>> 
> >>> Looking at config.log it seems to me the LD_LIBRARY_PATH should be
> >>> exported before running the dbi driver tests. On my system, I can
> >>> make configure work by applying the attached patch.
> >>> 
> >>> Before committing it however, I'd like some feedback on how it
> >>> behaves on OS X. John, can you look at this patch ?
> >> 
> >> Geert,
> >> 
> >> The patch should be harmless. I think it odd that only that one
> >> environment variable needs to be exported and to have its brackets
> >> removed.
> >> 
> >> I wonder, though, if this is really due to a change in autotools.
> >> Are
> >> you able to compare a configure made with F20 to the one made with
> >> F21?
> > 
> > My initial message may have been misleading. I tested on another
> > machine still running F20 and I hit the exact same errors. So this
> > is clearly not a autotools change. I'm actually surprised you don't
> > see these errors on your OSX build because
> > $(LD_LIBRARY_PATH) is shell syntax for "execute the command named
> > LD_LIBRARY_PATH".
> > 
> > I'm aware configure.ac is not really shell but a macro language with
> > snippets of shell code intermingled. On my system at least the
> > $(LD_LIBRARY_PATH) construct is not interpreted by autotools and is
> > left in the remaining configure shell script unmodified. Hence the
> > errors when configure is run.
> > 
> > I have also looked in the most recent build logs on our Windows
> > build server. These errors pop up there as well, but don't appear
> > to be fatal there. Maybe that's the same on your OS X build ?
> OSX's bash just ignores the first problem:
>   configure:23024: checking for dbi/dbi.h
>   configure:23024: result: yes
>   configure:23069: Search Path
>   configure:23071: checking Looking for at least one supported DBD
> module

That snippet appears to come from config.log which indeed doesn't print the bash error 
message. The error message is printed on stderr, which I happened to see because configure 
stops right after it due to the real error below.

> > That probably justifies the first part of my patch (ie removing the
> > parenthesis around LD_LIBRARY_PATH).
> > 
> > More interesting now it figuring out why my build depends on
> > LD_LIBRARY_PATH being exported while the OS X and Windows builds
> > don't.
> 
> I just looked at the history of that, and I changed it in 1d6fd557:
> -      export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$EXTRA_SEARCH_LIBS"
> -      AC_MSG_CHECKING([Looking for at least one supported DBD
> module]) -      AC_RUN_IFELSE([AC_LANG_PROGRAM([$LDINC],
> +    old_ld_library_path="$LD_LIBRARY_PATH"
> +    LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$EXTRA_SEARCH_LIBS"
> +    AC_MSG_NOTICE([Search Path $(LD_LIBRARY_PATH)])
> +    AC_MSG_CHECKING([Looking for at least one supported DBD module])
> +    AC_RUN_IFELSE([AC_LANG_PROGRAM([$LDINC],
> 
> which answers the "why didn't it fail for you before" question. I can
> only guess that Mac and MinGW are using a different process model so
> that the test executables run in configure's environment rather than
> a new one.

Doh. I had looked up that commit as well to check where the AC_MSG_CHECKING came from 
(which printed the shell errors), but I failed to notice the export command had been dropped...


More information about the gnucash-devel mailing list