Autoconf improvements, part 3 #3242

pull luke-jr wants to merge 8 commits into bitcoin:master from luke-jr:autoconf_pt3 changing 4 files +114 −48
  1. luke-jr commented at 9:02 PM on November 12, 2013: member

    No description provided.

  2. codeboost commented at 1:01 PM on November 22, 2013: none

    Tested on OSX 10.9 with homebrew: No more 'No working boost sleep implementation found' error during ./configure Builds fine.

  3. theuni commented at 11:52 PM on December 1, 2013: member

    Not internal files and build-targets. What's the benefit? Edit: Whoops, replied in the wrong place. I'm sure you'll find it :p

  4. luke-jr commented at 1:05 AM on December 2, 2013: member

    Makes testing against an alternative LevelDB easier.

  5. luke-jr commented at 1:46 PM on December 3, 2013: member

    Split out bitcoin-cli from bitcoind and rebased.

  6. theuni commented at 6:36 PM on December 3, 2013: member

    @luke-jr You missed my point. Please re-read cae63be6c95b19c236a2333c1f2456e016e13f0f. This is not theoretical, it was fixed because it was seen by devs. See here for another explanation: http://stackoverflow.com/questions/17216048/parallel-gnu-make-and-rules-that-create-several-targets-at-once

    I really don't like the leveldb changes, -1 to those. The helper libs are becoming a mess as well, I'd like the opportunity to clean those up a bit first before adding more fuel.

  7. luke-jr commented at 7:23 PM on December 3, 2013: member

    @theuni Ugh, that affects multi-target rules too? How annoying. What are your thoughts on the suggestions in that StackOverflow link (a dummy rule that does the real build and depended on by the real targets)?

  8. theuni commented at 8:14 PM on December 3, 2013: member

    All you should need to do is to ensure that they're chained:

    $(LIBLEVELDB): $(LIBMEMENV)
    $(LIBLEVELDB) $(LIBMEMENV): [@echo](/bitcoin-bitcoin/contributor/echo/)...
    

    But this is a good example of why these targets need to be handled in makefiles and not in configure. How 'bout we compromise by setting the path there instead?

    (untested)

    # if x$enable_external_leveldb != xno; then
    #  AC_CHECK_LIB([leveldb])
    #  AC_CHECK_LIB([memenv])
    #  use_external_leveldb=yes
    # fi
    # ...
    # AM_CONDITIONAL([EXTERNAL_LEVELDB],[test x$use_external_leveldb = xyes])
    
    $(LIBLEVELDB): $(LIBMEMENV)
    $(LIBLEVELDB) $(LIBMEMENV): [@echo](/bitcoin-bitcoin/contributor/echo/) ...
    
    if !EXTERNAL_LEVELDB
    LIBLEVELDB=leveldb/libleveldb.a
    LIBMEMENV=leveldb/libmemenv.a
    bitcoind_LDADD += $(LIBLEVELDB) $(LIBMEMENV)
    endif
    
    
  9. theuni commented at 1:05 AM on December 4, 2013: member

    Once those two things are resolved, I retract my -1. I still don't think the leveldb work is useful/warranted, but afaics it's technically sound and I won't stand in the way of it.

    +1 to the rest.

  10. theuni commented at 1:30 AM on December 4, 2013: member

    thanks, -1 retracted.

  11. gavinandresen commented at 2:10 AM on December 4, 2013: contributor

    Testing on my Mac with 'git test-sequence upstream/master.. 'make clean && make -j 8 check' I got a weird failure on one of the commits:

    rm -f libmemenv.a
    rm -f libmemenv.a
    /usr/bin/ar -rs libmemenv.a helpers/memenv/memenv.o
    ar: creating archive libmemenv.a
    /usr/bin/ar -rs libmemenv.a helpers/memenv/memenv.o
    ar: creating archive libmemenv.a
    /usr/bin/ranlib: archive member: libmemenv.a(memenv.o) size too large (archive member extends past the end of the file)
    /usr/bin/ar: internal ranlib command failed
    
    Broke on 8f342eb7cbc2efb64fbc1f3eb0bf411a24dfbf35
    

    Checking out that commit, I get flaky results running 'make check' -- looks to me like a dependency is messed up, and the leveldb .a's are being created while the .o's inside them are not quite cooked. E.g. another run produces:

    ar: creating archive libleveldb.a
    /usr/bin/ranlib: file: libleveldb.a(env_win.o) has no symbols
    /usr/bin/ranlib libbitcoin_server.a
    make[1]: *** [check-recursive] Error 1
    make: *** [check-recursive] Error 1
    
  12. theuni commented at 2:30 AM on December 4, 2013: member

    @gavinandresen that should've been fixed with the last round of changes. It appears to be the race that I referred to above.

  13. jgarzik commented at 12:13 AM on December 13, 2013: contributor

    Looks good at untested first glance. --enable-frontends=XXX seems annoyingly complex. That's a taste issue; depends on whether others agree.

  14. luke-jr commented at 4:25 AM on December 13, 2013: member

    Given the recent name changes, I imagine --enable-frontends= will become a list of cli,daemon,gui - maybe that's more tasteful?

  15. laanwj commented at 4:37 AM on December 13, 2013: member

    Given that the frontends are our code, and not some auxiliary setting that should be buried deeply, I'd still prefer

    --enable-cli
    --enable-daemon
    --enable-gui
    
  16. Bugfix: configure: Allow user-provided CXXFLAGS to override default optimisation, debug, and warning flags 123e4f878e
  17. Bugfix: Undefine _FORTIFY_SOURCE before redefining it, to avoid warnings on compilers that define it by default 9b4e03b27b
  18. Cleanup LevelDB library dependencies 4a290b526c
  19. configure: Internal changes to make building bitcoind and bitcoin-cli optional f930341d81
  20. Bugfix: Correct captitalisation of Qt f47299038d
  21. configure: Change --with[out]-qt to --with[out]-gui and add --with[out]-cli and --with[out]-daemon to support more build configurations a9dbcf036b
  22. configure: Minor grammatical changes to be more clear e18e1001eb
  23. Bugfix: Use BOOST_CPPFLAGS when testing for boost sleep vs sleep_for 2041365c8c
  24. luke-jr commented at 9:11 PM on January 18, 2014: member

    Rebased and refactored for --enable-gui/cli/daemon per @jgarzik and @laanwj request.

  25. BitcoinPullTester commented at 9:30 PM on January 18, 2014: none

    Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/2041365c8c2d0f8e83715b2a643c3fd2cf6eb4cb for binaries and test log. This test script verifies pulls every time they are updated. It, however, dies sometimes and fails to test properly. If you are waiting on a test, please check timestamps to verify that the test.log is moving at http://jenkins.bluematt.me/pull-tester/current/ Contact BlueMatt on freenode if something looks broken.

  26. laanwj commented at 10:26 AM on January 19, 2014: member

    Code changes look good to me, going to test this with the various gitian builds.

  27. laanwj commented at 11:44 AM on January 19, 2014: member

    Works for me (TM)

  28. laanwj referenced this in commit a682bc7e46 on Jan 21, 2014
  29. laanwj merged this on Jan 21, 2014
  30. laanwj closed this on Jan 21, 2014

  31. luke-jr deleted the branch on Jan 1, 2015
  32. DrahtBot locked this on Sep 8, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-14 15:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me