ci: Optimize build matrix #1048

pull real-or-random wants to merge 13 commits into bitcoin-core:master from real-or-random:202112-ci-matrix changing 8 files +178 −60
  1. real-or-random commented at 12:32 pm on December 21, 2021: contributor

    We should try to merge #995 before this PR to avoid conflicts.

    This tries to get more coverage of “useful” configurations with fewer tasks. I think what I suggest here is good but on the other hand there’s no real need to reduce the number of tasks right now, so please suggest additional configs if you think they’re worth testing. Maybe we could add a -UVERIFY build? (Even nicer would be to run with and without VERIFY on the same seed and compare the results – but that needs more work.)

    This now always runs make check and then make distcheck but ensures that the latter skips the tests already run during make check.

    I refrained from reducing the number of tasks on macOS further. Testing clang on macOS is useful because it’s “Apple clang” and testing gcc is useful because it’s gcc 9 (as opposed to gcc 10 on Linux). Moreover, the changes in #1047 make macOS tasks quicker again. The annoying thing about these macOS tasks is not that they run too long, but just that there is more demand/scheduling pressure for macOS machines on Cirrus, so they often sit there for hours scheduled and waiting to be run. But there’s nothing we can do about this.

  2. real-or-random force-pushed on Dec 22, 2021
  3. real-or-random commented at 2:10 pm on December 22, 2021: contributor

    Hm, my plan was to always run make distcheck but I need to rethink that change. So make distcheck includes make check but does in a clean tree which is removed afterwards (including the test logs… -.-), so maybe it’s not a good idea to always run it. On the other hand, this means we have this bug with test files being removed already now with the single distcheck task on CI: https://cirrus-ci.com/task/4941156000727040.

    Maybe we should stick to the idea of always running distcheck and rescue the test logs. Or just introduce a separate distcheck build.

  4. bench: Make benchmarks compile on MSVC 1a6be5745f
  5. configure: Output message when checking for valgrind cca8cbbac8
  6. real-or-random force-pushed on Mar 17, 2022
  7. real-or-random commented at 8:45 am on March 17, 2022: contributor

    This now runs make check and then make distcheck but ensures that the latter skips the tests already run during make check. Rebased and ready for review.

    edit: also edited the PR description to mention the distcheck change.

  8. real-or-random marked this as a draft on Mar 17, 2022
  9. configure: Don't abort if the compiler does not define __STDC__
    This removes a check for $ac_cv_prog_cc_c89 which is set by AC_PROG_CC
    if defined(__STDC__) in the preprocessor. (Standard compliant compilers
    are supposed to define __STDC__ to 1 but the value is actually not
    checked here.)
    
    Unfortunately, MSVC doesn't define it, so configure fails for MSVC.
    
    This check is not very useful in practice. Over 30 years after C89 has
    been released, there are no C compilers out there that are not
    sufficiently compliant with C89 for the project. The only practically
    relevant case was that the check rejected C++ compilers. A different
    method to reject C++ compilers will be introduced in a later commit.
    1cc0941414
  10. build: Reject C++ compilers in the preprocessor 3b4f3d0d46
  11. configure: Add a few CFLAGS for MSVC 09f3d71c51
  12. schnorrsig bench: Suppress a stupid warning in MSVC b97256d88b
  13. configure: Convince autotools to work with MSVC's archiver lib.exe 3bdc4e0ccb
  14. ci: Add MSVC builds
    This adds MSVC builds built on Linux using wine. This requires some
    settings of tools and flags because the autotools support for MSVC is
    naturally somewhat limited.
    
    The advantage of this approach is that it is compatible with our
    existing CI scripts, so there's no need to write a Windows CI script
    (in PowerShell or similar). If we want to test building and running on
    Windows native (e.g., as supported by Cirrus CI) we could still do this
    in the future.
    
    Another advantage of this approach is that contributors can simply use
    the docker image if they need a MSVC installation in a non-Windows
    environment.
    
    This commit also improves the Dockerfile by grouping RUN commands
    according to Docker docs:
    https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
    6a9513f587
  15. ci: Add 32-bit MinGW64 build
    This commit also raises the TEST_ITERS for wine tasks to the default.
    The overhead of wine is negligible, so we can certainly afford the same
    number of iterations as for native Linux tests.
    93e9d11211
  16. ci: Run persistent wineserver to speed up wine 0e31871a60
  17. ci: Add a C++ job that compiles the public headers without -fpermissive c16afd001a
  18. ci: Optimize build matrix 3a1a16cc8c
  19. ci: Always run make distcheck 1c0a8ae0e5
  20. real-or-random force-pushed on Mar 19, 2022
  21. MarcoFalke commented at 10:06 am on October 1, 2023: none
    What is the status here?
  22. real-or-random commented at 9:29 am on October 2, 2023: contributor
    Yeah, this is obsolete. It still makes sense to take a look at the build matrix and see if we’re happy with it. Let me track this in #1392.
  23. real-or-random closed this on Oct 2, 2023


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin-core/secp256k1. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-22 08:15 UTC

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