Build bitcoin-cli unconditionally. #4690

pull jgarzik wants to merge 1 commits into bitcoin:master from jgarzik:2014_without_cli changing 2 files +1 −15
  1. jgarzik commented at 0:54 am on August 13, 2014: contributor

    Extremely small value in making this optional. bitcoin-cli almost always has utility.

    Further, distro builders and other packagers typically build everything, then cherry-pick if something needs to be elided. Developers normally build bitcoin-cli.

    The target audience for this option approaches zero. I’m sure it satisfies some engineer’s OCD somewhere, but is otherwise of little practical value. :)

  2. Build bitcoin-cli unconditionally.
    Extremely small value in making this optional.  Reduce complexity slightly.
    3a87a7665b
  3. BitcoinPullTester commented at 1:08 am on August 13, 2014: none
    Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/p4690_3a87a7665b80a47cc6058e7fad771f0da03be550/ 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.
  4. theuni commented at 1:23 am on August 13, 2014: member

    Heh, I suppose that engineer would be me.

    I have no case against the removal, but I can’t see any real benefit in it either.

    FYI, my reasoning for always giving the option to disable (this happens quite often): I’m building a program/lib for an architecture where the binary I want builds fine, but compile borks on some other binary that the upstream devs decide is super-mega-important (it’s not). Now I have to patch my build to work-around.

    Granted that’s not likely to happen here. Just explaining the logic.

    ACK if others agree, but that doesn’t mean I like it :)

  5. jgarzik commented at 2:21 am on August 13, 2014: contributor

    @theuni It’s really a question of scale. A zen balance must be achieved. :) For the GUI, with massive additional dependencies and compiled modules, it makes a lot of sense.

    The default, on the other hand, should be to avoid adding options without good reason. I would rather fix a bug, normally, than add a –paper-over-bug option that is very rarely used, in highly unusual and soon fixed scenarios.

    In theory, every additional option increases the test matrix. Removing options reduces complexity. In this case, admittedly, it is a very tiny marginal move.

  6. luke-jr commented at 2:27 am on August 13, 2014: member
    I see three possibilities: forced, optional, and “unsupported optional”. Forced is, as mentioned, an annoyance for engineers. Optional is debatably more maintenance work. I don’t see any harm in leaving the option, but simply taking the policy that when/if someone notices it breaks, either someone who cares fixes it or it gets removed.
  7. jgarzik commented at 4:39 am on August 13, 2014: contributor
    If you run into an incredibly unlikely situation where –without-cli is needed, you likely have the skills to handle it without the need to permanently burden the codebase with an option unused 99.9% of the time.
  8. laanwj commented at 4:57 am on August 13, 2014: member

    I tend towards NACK. It’s not that I disagree with you, and were the build system to be redesigned from scratch again in maybe 5 years, I’m fine with not adding an option for this triviality.

    But this is already in releases (starting from 0.9). I don’t see why I’d want to burden anyone that already uses this option with having to change their script because somehow it is not ‘pure’. Imagine being on the side of the user and being annoyed about this.

    It adds trivial overhead, and insisting on removing it seems like a bit of “OCD” as well. Sorry.

  9. jgarzik commented at 5:05 am on August 13, 2014: contributor

    Where is the evidence that anyone uses this? The feature was added speculatively “not likely to happen here” - The author. The builders of the binaries that reach the vast majority of users don’t use it.

    It was a minor bit of over-engineering. Feature added before there was a need or call for it.

    You should not add features that might, in theory, be used in some rare case sometime in the future by somebody.

  10. jgarzik commented at 5:08 am on August 13, 2014: contributor

    Come on, is it really so hard to type “make bitcoind” etc. rather than just “make”?

    You don’t need to build extra gadgetry to selectively build binaries.

  11. laanwj commented at 5:11 am on August 13, 2014: member

    You’re proposing a change so IMO the burden of evidence is on you. We don’t have statistics about this at all.

    To be clear: If it were broken and no one noticed for a long time, you’d have a good case for removing it.

    You can argue that this should not have been added, my retort then would be that you should have catched it either before it was added, or at least sooner.

    Come on, this is just a few trivial lines in the build script. What are you worried about? Is this even worth the time discussing this?

  12. jgarzik commented at 5:11 am on August 13, 2014: contributor

    By that logic we are burdened with useless crap forever…

    If removing unused bits of lesser importance is so difficult, it is disappointing to consider deprecating and removing anything more ambitious. We’re talking about a feature where the -intended target audience- is a handful of knowledgable devs.

  13. luke-jr commented at 5:12 am on August 13, 2014: member

    It’d be nice if “make bitcoind” worked…

    Side note: Gentoo does in fact use this option. bitcoin-cli and bitcoind are separate packages.

  14. laanwj commented at 5:14 am on August 13, 2014: member

    @luke-jr: make src/bitcoind works.

    Anyhow - this is not ‘useless crap’. Being able to choose what to build is a useful kind of modularity. Although I agree it was taken too far in this case, it’s not a clinical case of uselessness either.

  15. sipa commented at 7:50 am on August 13, 2014: member

    IMHO bitcoin-cli and bitcoin-tx should be similar. Neither has additional dependencies, and both are only optionally needed. So either have an option for both, or for neither.

    I lean towards having an option for both, as it’s a tiny change only, and is consistent with –with-gui which is hard to avoid with so many extra dependencies. I agree with Jeff about minimizing configuration combinations, but these are examples of building some more binaries from the same source. The ways that this can result in modified behavior are very minimal imho (as opposed to say –disable-wallet, which actually changes the code being built).

  16. laanwj commented at 7:58 am on August 13, 2014: member
    @sipa We could also group bitcoin-tx and bitcoin-cli under the same build-system option, maybe –with[out]-utils. Though that would still break backwards compatibility w/ current –with[out]-cli in scripts. But this division would make sense for distributions as well.
  17. laanwj added the label Build system on Aug 13, 2014
  18. theuni commented at 3:19 pm on August 13, 2014: member
    @sipa agreed @jgarzik ‘make bitcoind’ isn’t the issue. The issue is that there are countless packaging systems (and devs) that rely on the canned: ./configure –with-foo –disable-bar && make && make install. When you can disable binaries via configure, that all works with no further intervention. With the option removed, there’s no way to avoid packaging the unwanted binaries other than postprocessing. @laanwj Yea, that’s what we should’ve done from the start :. I think a one-time move would probably be reasonable… distros like gentoo are going to have to update their build recipes to cope with the new binaries anyway. @luke-jr I must run ‘make bitcoind’ 100 times per day, for just about every conceivable build config. No problems here. If it’s not working for you, please create a bug report as I wasn’t aware of any brokenness.
  19. laanwj commented at 8:51 am on August 15, 2014: member

    Ok, conclusion: let’s change –with[out]-cli to –with[out]-utils, and include bitcoin-tx in the same bag.

    We could make --with[out]-cli a temporary alias for the other one if we really care about not breaking things.

    Are you going to update this @jgarzik or should we make a new pull?

  20. jgarzik commented at 10:31 am on August 15, 2014: contributor
    ACK –with-utils
  21. jgarzik commented at 4:48 pm on August 16, 2014: contributor
    Superceded by #4711
  22. jgarzik closed this on Aug 16, 2014

  23. jgarzik deleted the branch on Aug 24, 2014
  24. MarcoFalke 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: 2024-12-19 03:12 UTC

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