appveyor: Use clcache to speed up build #14086

pull ken2812221 wants to merge 1 commits into bitcoin:master from ken2812221:patch-4 changing 2 files +37 −32
  1. ken2812221 commented at 7:31 pm on August 27, 2018: contributor

    https://ci.appveyor.com/project/ken2812221/bitcoin/build/patch-4.407

    The build time reduced from 18 mins to 7 mins.

    • clcache is a third-party software, act much like ccache. (Compile-time cache)
    • *.iobj and *.ipdb is a MSVC built-in cache. (Link-time cache)
  2. DrahtBot commented at 9:02 pm on August 27, 2018: member
  3. practicalswift commented at 10:36 pm on August 27, 2018: contributor
    @ken2812221 Promising numbers - nice work! Any potential drawbacks?
  4. fanquake added the label Tests on Aug 27, 2018
  5. ken2812221 commented at 7:22 am on August 28, 2018: contributor

    Any potential drawbacks?

    ~I am not sure if there is any. This is my first time trying this stuff.~

    Oh, there is one. We cannot use appveyor logger anymore, it’s incompatible with clcache.

  6. ken2812221 commented at 2:22 pm on August 28, 2018: contributor
    Update: It is really hard to see where the error is if it print a lot of warning messages, so I just disable the warnings.
  7. practicalswift commented at 2:38 pm on August 28, 2018: contributor

    @ken2812221 Actually there are only two warnings (C4244 and C4267) that make the log output unreadable due to the sheer amount of them. Could you try disabling those two warnings specifically instead of disabling all warnings?

    I analyzed the warnings:

    0$ grep ": warning " log.txt | cut -f4- -d" " | cut -f1 -d: | grep ^C | sort | uniq -c
    1   1 C4018 == signed/unsigned mismatch
    2   8 C4101 == unreferenced local variable
    32056 C4244 == conversion from [] to [], possible loss of data
    41482 C4267 == conversion from [] to [], possible loss of data
    5   1 C4305 == truncation from 'int' to 'bool'
    6   1 C4312 == conversion from 'int' to 'void *' of greater size
    7   1 C4334 == result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
    8   8 C4715 == not all control paths return a value 
    

    The total number of warnings 3558 is reduced to only 20 warnings when excluding C4244 and C4267.

    Having warnings enabled adds additional value to the appveyor integration by giving access to the MSVC warnings (which are good!) also to developers who don’t use Windows. I know I enjoy having access to them :-)

  8. ken2812221 force-pushed on Aug 28, 2018
  9. ken2812221 force-pushed on Aug 28, 2018
  10. ken2812221 force-pushed on Aug 28, 2018
  11. ken2812221 force-pushed on Aug 28, 2018
  12. ken2812221 force-pushed on Aug 28, 2018
  13. ken2812221 force-pushed on Aug 28, 2018
  14. ken2812221 commented at 4:59 pm on August 28, 2018: contributor
  15. practicalswift commented at 7:12 pm on August 28, 2018: contributor

    @ken2812221 Excellent!

    utACK 637f88c7e3142dde123b40982bb6418e640c3e42

  16. practicalswift commented at 7:16 pm on August 28, 2018: contributor
    @ken2812221 What about disabling C4715: '[…]': not all control paths return a value too? We intentionally assert(false); unconditionally (in default:) in eight places which we don’t want to change. This triggers C4715. That warning is not actionable in our case so I think disabling it is a net win.
  17. ken2812221 force-pushed on Aug 28, 2018
  18. practicalswift referenced this in commit 071500a09c on Aug 28, 2018
  19. practicalswift referenced this in commit f38517cae2 on Aug 28, 2018
  20. ken2812221 force-pushed on Aug 28, 2018
  21. practicalswift referenced this in commit 14e8ecc741 on Aug 28, 2018
  22. MarcoFalke referenced this in commit 13887f41f2 on Aug 29, 2018
  23. ken2812221 commented at 3:57 am on August 31, 2018: contributor
    @MarcoFalke Mind review this? @practicalswift Disabled C4715.
  24. MarcoFalke commented at 1:23 pm on August 31, 2018: member

    Concept ACK, but I don’t know enough of appveyor and clcache to actually review this.

    Maybe @sipsorcery ?

  25. sipsorcery commented at 8:15 am on September 1, 2018: member

    @ken2812221 are you currently able to get the build based on the appveyor.yml file to work? My attempts are failing with:

    LINK : fatal error C1047: The object or library file ‘C:\Tools\vcpkg\installed\x64-windows-static\lib\libzmq-mt-s-4_3_1.lib’ was created with an older compiler than other objects; rebuild old objects and libraries [C:\projects\bitcoin-72c17\build_msvc\bitcoind\bitcoind.vcxproj] LINK : fatal error LNK1257: code generation failed [C:\projects\bitcoin-72c17\build_msvc\bitcoind\bitcoind.vcxproj]

    So far I’ve been unsuccessful in getting the libzmq dependency to update (my mingw32 build is also failing because of libzmq so something has changed there recently). I have managed to get my custom AppVeyor Bitcoin build that doesn’t use appveyor.yml to work so I’m pretty sure this failure is due to the libzmq dependency needing to be updated.

  26. ken2812221 commented at 12:46 pm on September 1, 2018: contributor
    @sipsorcery You can just clear the cache by this. Every thing should work fine.
  27. sipsorcery commented at 3:35 pm on September 1, 2018: member

    tACK

    Build time is reduced from ~22mins to ~11mins. @ken2812221 do you think it would be worth adding artifacts to the AppVeyor? It would be nice to be able to use the results of the build even if it’s just for sanity testing.

    0artifacts:
    1- path: build_msvc\%PLATFORM%\%CONFIGURATION%\*.exe
    2  name: Executables
    
  28. ken2812221 commented at 3:42 pm on September 1, 2018: contributor

    do you think it would be worth adding artifacts to the AppVeyor?

    There is a previous discussion in #13855. Many devs thought that uploading executables is not a good idea.

  29. ken2812221 force-pushed on Sep 3, 2018
  30. ken2812221 force-pushed on Sep 3, 2018
  31. appveyor: Use clcache to speed up build e4a79b4b3a
  32. ken2812221 force-pushed on Sep 3, 2018
  33. practicalswift referenced this in commit 8ecaee13f7 on Sep 3, 2018
  34. laanwj referenced this in commit 564385f4bf on Sep 4, 2018
  35. MarcoFalke referenced this in commit c39fa34bfd on Sep 4, 2018
  36. MarcoFalke merged this on Sep 4, 2018
  37. MarcoFalke closed this on Sep 4, 2018

  38. ken2812221 deleted the branch on Sep 4, 2018
  39. pstratem referenced this in commit c5dbb55198 on Sep 6, 2018
  40. Bushstar referenced this in commit 4fbeaa151f on Oct 9, 2018
  41. jfhk referenced this in commit 6749fc99b2 on Nov 14, 2018
  42. HashUnlimited referenced this in commit e90018394e on Nov 26, 2018
  43. kallewoof referenced this in commit e51ed82876 on Oct 4, 2019
  44. deadalnix referenced this in commit 1b1bc9407a on Feb 6, 2020
  45. Munkybooty referenced this in commit a14593b6fa on Jun 14, 2021
  46. PastaPastaPasta referenced this in commit 502f2a0c27 on Jun 27, 2021
  47. PastaPastaPasta referenced this in commit b415c68084 on Jun 28, 2021
  48. PastaPastaPasta referenced this in commit b1a59e9977 on Jun 29, 2021
  49. PastaPastaPasta referenced this in commit 8d951c4222 on Jun 29, 2021
  50. Munkybooty referenced this in commit 27bd42c323 on Jul 1, 2021
  51. PastaPastaPasta referenced this in commit 2eb2051139 on Jul 19, 2021
  52. PastaPastaPasta referenced this in commit eeae2fcff5 on Jul 19, 2021
  53. PastaPastaPasta referenced this in commit 7152b78113 on Jul 19, 2021
  54. PastaPastaPasta referenced this in commit f0c65f2917 on Jul 19, 2021
  55. linuxsh2 referenced this in commit 4be166655c on Jul 29, 2021
  56. 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-09-28 22:12 UTC

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