build: Avoid rebuilding makefiles #22486

pull dgoncharov wants to merge 2 commits into bitcoin:master from dgoncharov:avoid_rebuilding_makefiles changing 39 files +39 −0
  1. dgoncharov commented at 8:34 pm on July 18, 2021: none

    The purpose of this commit is to reduce the amount of work make does. This simplifies make -d output and improves performance (this performance gain is hardly noticeable).

    By default make remakes all makefiles. This build system does not have rules to remake makefiles. This commit adds an explicit rule for each makefile.

    Each rule serves 2 purposes.

    Each rule prevents make from searching for an implicit rule.
    Once found, the rule prevents make from remaking the makefile.
    That's why the rule is double colon. Make won't use a double colon rule to
    remake a makefile. See
    https://www.gnu.org/software/make/manual/make.html#Remaking-Makefiles.
    

    $ # on this branch. $ make -d print-host |grep expat Reading makefile ‘packages/expat.mk’ (search path) (no ~ expansion)… Makefile ‘packages/expat.mk’ might loop; not remaking it. $ git co master Switched to branch ‘master’ Your branch is up-to-date with ‘origin/master’. $ make -d print-host |grep expat |wc 367 1916 19918 $

    Make prints 367 lines per makefile. With this change make prints 2 lines per makefile.

    This changeset was originally submitted as pr #22237. I am closing #22237 and resubmitting the same changeset here.

  2. Avoid remaking makefiles.
    The purpose of this commit is to reduce the amount of work make does.
    This simplifies make -d output and improves performance (this
    performance gain is hardly noticeable).
    
    By default make remakes all makefiles.
    This build system does not have rules to remake makefiles.
    This commit adds an explicit rule for each makefile.
    
    Each rule serves 2 purposes.
    1. Each rule prevents make from searching for an implicit rule.
    2. Once found, the rule prevents make from remaking the makefile.
    That's why the rule is double colon. Make won't use a double colon rule to
    remake a makefile. See
    https://www.gnu.org/software/make/manual/make.html#Remaking-Makefiles.
    
    $ # on this branch.
    $ make -d print-host |grep expat
    Reading makefile 'packages/expat.mk' (search path) (no ~ expansion)...
    Makefile 'packages/expat.mk' might loop; not remaking it.
    $ git co master
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
    $ make -d print-host |grep expat |wc
        367    1916   19918
    $
    
    Make prints 367 lines per makefile.
    With this change make prints 2 lines per makefile.
    f7353a1e47
  3. Merge branch 'master' into avoid_rebuilding_makefiles
    * master: (436 commits)
      Test that descriptor wallet upgrade does nothing
      Make IsSegWitOutput return true for taproot outputs
      bench: fix 32-bit narrowing warning in bench/peer_eviction.cpp
      Change ScriptPubKeyMan::Upgrade to default to return true
      test: move rpc_rawtransaction tests to < 30s group
      test: whitelist rpc_rawtransaction peers to speed up tests
      test: Fix wallet_listdescriptors.py if bdb is not compiled
      Move implementations of non-template fuzz helpers
      refactor: move UpdateTip into CChainState
      refactor: no mempool arg to GetCoinsCacheSizeState
      refactor: move UpdateMempoolForReorg into CChainState
      validation: make CChainState::m_mempool optional
      init: remove straggling boost thread_group code
      fix incorrect testmempoolaccept doc
      doc: mention that we enforce port=0 in I2P
      addrman: reset I2P ports to 0 when loading from disk
      test: ensure I2P ports are handled as expected
      net: do not connect to I2P hosts on port!=0
      net: distinguish default port per network
      net: change I2P seeds' ports to 0
      ...
    bd41834f48
  4. DrahtBot added the label Build system on Jul 18, 2021
  5. DrahtBot commented at 0:00 am on July 19, 2021: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #23603 (build: Fix x86_64 <-> arm64 cross-compiling for macOS by hebasto)
    • #22380 (build: add and use C_STANDARD and CXX_STANDARD in depends by fanquake)
    • #22283 (build: Replace $(AT) with .SILENT by dgoncharov)
    • #21778 (POC: LLVM 13 & LLD based macOS toolchain by fanquake)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  6. maflcko added the label Needs Guix build on Jul 19, 2021
  7. DrahtBot removed the label DrahtBot Guix build requested on Jul 21, 2021
  8. hebasto commented at 11:07 pm on August 19, 2021: member

    Concept ACK.

    It seems this PR should be rebased on top of the recent master branch.

  9. DrahtBot added the label Needs rebase on Dec 9, 2021
  10. DrahtBot commented at 3:05 pm on December 9, 2021: contributor

    🐙 This pull request conflicts with the target branch and needs rebase.

    Want to unsubscribe from rebase notifications on this pull request? Just convert this pull request to a “draft”.

  11. DrahtBot commented at 9:11 am on January 3, 2022: contributor
    • Is it still relevant? ➡️ Please solve the conflicts to make it ready for review and to ensure the CI passes.
    • Is it no longer relevant? ➡️ Please close.
    • Did the author lose interest or time to work on this? ➡️ Please close it and mark it ‘Up for grabs’ with the label, so that it can be picked up in the future.
  12. achow101 commented at 6:34 pm on October 12, 2022: member

    Closing this as it has not had any activity in a while. If you are interested in continuing work on this, please leave a comment so that it can be reopened.

    cc @dongcarl

  13. achow101 closed this on Oct 12, 2022

  14. achow101 added the label Up for grabs on Oct 12, 2022
  15. bitcoin locked this on Oct 12, 2023

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-20 09:12 UTC

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