Commit Graph

182 Commits

Author SHA1 Message Date
MarcoFalke dddd462137
Bump minimum python version to 3.7 2023-01-18 12:59:11 +01:00
MarcoFalke faddb7373a
ci: Bump --combinedlogslen to debug intermittent issues 2023-01-18 09:35:47 +01:00
MarcoFalke 01ec5308bf
Merge bitcoin/bitcoin#26716: ci: Build python from source in "lint" task
123043e99c ci: Bump lint task image to Ubuntu Jammy (Hennadii Stepanov)
9b86114058 ci: Use pyenv's `python-build` to install Python in lint task (Hennadii Stepanov)

Pull request description:

  This PR:
  - is an alternative to bitcoin/bitcoin#26581 and bitcoin/bitcoin#26637
  - closes bitcoin/bitcoin#26548

  Key advantages of this PR over others:
  - it uses pyenv's `python-build` [standalone](https://github.com/pyenv/pyenv/tree/master/plugins/python-build#using-python-build-standalone)
  - requires no additional computational resources

  Note for testing. The lint task must success regardless of whether the `python_cache` is populated or invalidated.

ACKs for top commit:
  MarcoFalke:
    ACK 123043e99c
  fanquake:
    ACK 123043e99c

Tree-SHA512: ba0fcdd4f2939a59692b173dcd1f5704444cfcfbb8111538c6f8160056d0536bba250e4f9b0f8c66f8b454e52034bf36ffe6afae76cdc0f7cc5b58b576d790ba
2023-01-17 18:35:47 +01:00
Hennadii Stepanov 123043e99c
ci: Bump lint task image to Ubuntu Jammy 2023-01-16 13:30:00 +00:00
Hennadii Stepanov 9b86114058
ci: Use pyenv's `python-build` to install Python in lint task 2023-01-16 13:29:44 +00:00
Hennadii Stepanov 46c31eea8c
ci: Bump `ccache` version to the latest 4.7.4 in "Win64 native" task 2023-01-13 20:50:38 +00:00
Hennadii Stepanov 1039ed44fb
ci: Bump vcpkg to the latest version 2023.01.09
Dependency changes (2022.09.27 - 2023.01.09):
 - boost 1.80.0#0 -> 1.81.0#0
 - libevent 2.1.12#6 -> libevent 2.1.12#7
 - sqlite3 3.39.2#0 -> 3.40.0#1
2023-01-13 20:50:15 +00:00
MarcoFalke fae885b98f
ci: Run one task with all tests on credits 2023-01-09 16:31:14 +01:00
MarcoFalke bf3b589413
Merge bitcoin/bitcoin#26791: ci: Properly set COMMIT_RANGE in lint task
fa5cbf2290 ci: Properly set COMMIT_RANGE in lint task (MarcoFalke)

Pull request description:

  Currently the variable holds (apart from the commits in the pull request) all commits to master since the pull was opened.

  This is problematic, because already merged commits are linted in unrelated pulls, leading to:

  * Wasted resources. For example, currently the lint task may take 9 minutes, when it should take 1. See https://cirrus-ci.com/task/6032782770569216?logs=lint#L1449
  * False failures. For example, when a "wrong" commit is in master it can lead to some pulls failing unrelatedly, and others not.

  Now that the CI has the `/merge` commit (since commit fad7281d78), `COMMIT_RANGE` can simply be set to `HEAD~..HEAD` to only hold the changes in the pull.

ACKs for top commit:
  fanquake:
    ACK fa5cbf2290

Tree-SHA512: e85fca4ca9d2615ddd2544403485e06885769a3f70bca297e23eefda2a1d28f47c5271f6adfa6ce0e5e972335c78098b76e0db4b109f59d0986bf508cef7528f
2023-01-04 13:56:45 +01:00
MarcoFalke fa5cbf2290
ci: Properly set COMMIT_RANGE in lint task 2023-01-02 14:05:23 +01:00
Suriyaa Sundararuban f84e445dee
doc: Correct linked Microsoft URLs 2022-12-31 16:54:13 +01:00
MarcoFalke fa5d9a0e24
Revert "ci: Use clang-15 in tsan task"
This reverts commit faa00ca78e.
2022-12-30 09:49:51 +01:00
MarcoFalke faa00ca78e
ci: Use clang-15 in tsan task 2022-12-29 16:30:13 +01:00
Hennadii Stepanov f1e89597c8
test: Drop no longer required bench output redirection 2022-11-10 16:26:44 +00:00
Hennadii Stepanov da16893474
ci: Use `macos-ventura-xcode:14.1` image for "macOS native" task 2022-10-25 13:39:03 +01:00
fanquake 3b85e17b49
Merge bitcoin/bitcoin#26297: ci: Use all available CPUs for functional tests in "Win64 native" task
6fbd173d8a ci: Use all available CPUs for functional tests in "Win64 native" task (Hennadii Stepanov)

Pull request description:

  On the [master](https://cirrus-ci.com/task/5422842484359168) branch:
  ![Screenshot from 2022-10-12 09-45-58](https://user-images.githubusercontent.com/32963518/195296883-3852ea09-7345-4166-b855-7704dcd87202.png)

  This [PR](https://cirrus-ci.com/task/6392972617973760) branch:
  ![Screenshot from 2022-10-12 11-11-15](https://user-images.githubusercontent.com/32963518/195315902-f667874a-8aeb-4f2f-bdc3-5ba432ae9353.png)

  Also consider "CPU Usage" charts provided by CI.

  Overlooked in cda62657e9 (bitcoin/bitcoin#25929).

ACKs for top commit:
  hebasto:
    Indeed. Reverted back to 6fbd173d8a ([pr26297.01](https://github.com/hebasto/bitcoin/commits/pr26297.01)), which was already [ACKed](https://github.com/bitcoin/bitcoin/pull/26297#pullrequestreview-1138724890) by @aureleoules.
  aureleoules:
    ACK 6fbd173d8a
  jarolrod:
    ACK 6fbd173d8a
  shaavan:
    ACK 6fbd173d8a

Tree-SHA512: ddd4b41af95bd735f881a3b2c64ee308de2725381f770e313e66555f929d88c8848c98cc5fcd15dfa6845b5dd84ca6c8764ef5d01602b0a62041820856af2b98
2022-10-14 11:37:44 +08:00
Hennadii Stepanov 98c389ccff
ci: Use Multi-ToolTask in "Win64 native" task
See https://devblogs.microsoft.com/cppblog/improved-parallelism-in-msbuild/
2022-10-12 11:50:57 +01:00
Hennadii Stepanov 6fbd173d8a
ci: Use all available CPUs for functional tests in "Win64 native" task 2022-10-11 22:10:19 +01:00
Hennadii Stepanov b8d361ab6f
ci: Workaround Windows filesystem executable bit loss 2022-10-04 15:20:32 +01:00
Hennadii Stepanov 37cf472063
ci: Use same `merge_script` implementation for Windows as for all 2022-10-04 08:51:55 +01:00
Hennadii Stepanov ac1d99240a
ci: Move `git config` commands into script where they are used 2022-10-04 08:51:55 +01:00
Hennadii Stepanov 91bee4d898
ci: Run `bench_bitcoin.exe --sanity-check` in "Win64 native" task
Also a better name used for the script as it follows GNU's `make check`.
2022-10-03 00:23:33 +01:00
Hennadii Stepanov 281e7c715d
ci: Bump vcpkg to the latest version `2022.09.27`
Dependency changes (2022.06.16.1 - 2022.09.27):
 - boost 1.79.0#0 -> 1.80.0#0
 - sqlite3 3.37.2#1 -> 3.39.2#0
 - zeromq 4.3.4#5 -> 4.3.4#6
2022-09-30 12:53:50 +01:00
MacroFake fad7281d78
ci: Use remote pull/merge ref instead of local git merge
The merge strategy on the remote may be different than the local one.
This may cause local merges to be different or fail completely. Fix this
by using the result of the remote merge.
2022-09-29 13:20:38 +02:00
Hennadii Stepanov cda62657e9
ci: Increase `windows_container` resources
Required to fit timeout when all build caches are invalidated.
2022-08-25 11:03:17 +01:00
Hennadii Stepanov 905f6142e7
ci: Force `ccache` package version for MSVC build
The ccache 4.6.2 is broken.
2022-08-25 08:12:10 +01:00
MacroFake eeb5a94e27
Merge bitcoin/bitcoin#25528: ci: run USDT interface tests in the CI
cc7335edc8 ci: run USDT interface test in a VM (0xb10c)
dba6f82342 test: adopt USDT utxocache interface tests (0xb10c)
220a5a2841 test: hook into PID in tracing tests (0xb10c)

Pull request description:

  Changes a CI task that runs test the previously not run `test/functional/interface_usdt_*.py` functional tests (added in https://github.com/bitcoin/bitcoin/pull/24358).

  This task is run as CirussCI `compute_engine_instance` VM as hooking into the tracepoints is not possible in CirrusCI docker containers (https://github.com/bitcoin/bitcoin/issues/23296#issuecomment-1024920845). We use an unoffical PPA and untrusted  `bpfcc-tools` package in the CI as the Ubuntu jammy and Debian bullseye packages are outdated. We hope use an official package when new Ubuntu/Debian releases are available for the use with Google Compute Engine.

  We make sure to hook into `bitcoind` binaries in USDT interface tests via their PID, instead of their path. This makes sure multiple functional tests running in parallel don't interfere with each other.

  The utxocache USDT interface tests is adopted to a change of the functional test framework that wasn't detected as the tests weren't run in the CI. As the tracepoints expose internals, it can happen that we need to adopt the interface test when internals change. This is a bit awkward, and if it happens to frequently, we should consider generalizing the tests a bit more. For now it's fine, I think.

  See the individual commit messages for more details on the changes.

  Fixes https://github.com/bitcoin/bitcoin/issues/24782
  Fixes https://github.com/bitcoin/bitcoin/issues/23296

  I'd like to hear from reviewers:
  - Are we OK with using the [`hadret/bpfcc`](https://launchpad.net/~hadret/+archive/ubuntu/bpfcc) PPA for now? There is a clear plan when to drop it and as is currently, it could only impact the newly added VM task.
  - ~~Adding a new task increases CI runtime and costs. Should an existing `container` CI task be ported to a VM and reused instead?~~ Yes, see https://github.com/bitcoin/bitcoin/pull/25528#issuecomment-1179509525

ACKs for top commit:
  MarcoFalke:
    cr ACK cc7335edc8

Tree-SHA512: b7fddccc0a77d82371229d048abe0bf2c4ccaa45906497ef3040cf99e7f05561890aef4c253c40e4afc96bb838c9787fae81c8454c6fd9db583276e005a4ccb3
2022-08-01 11:27:29 +02:00
Hennadii Stepanov ecb617fefe
build: Bump Qt to 5.15.5 in depends 2022-07-30 15:44:20 +01:00
0xb10c cc7335edc8
ci: run USDT interface test in a VM
Our CI tasks are run by CirrusCI in Docker containers in a Google
Compute Engine based Kubernetes environment. These containers have
limited capabilities - especially CAP_SYS_ADMIN is missing. See
https://github.com/bitcoin/bitcoin/issues/23296#issuecomment-1024920845

We need elevated privileges to hook into the USDT tracepoints. We use a
CirrusCI "compute_engine_instance" (a VM, not a container) where we have
the required privileges. The ubunut-mininmal-2204-lts was choosen with
debian-11 being an alternative. Both pack an outdated 'bpfcc-tools'
package (v0.18.0) from 2020. This version prints warnings to stderr
during BPF bytecode compilation, which causes our functional test runner
to fail. This is fixed in newer verison.

Until debian-12 or a newer Ubuntu release is avaliable as image in GCE
(https://cloud.google.com/compute/docs/images/os-details), we use a
third-party and untrusted PPA that releases up-to-date versions of the
package.

The official iovisor (authors of BCC) PPA is outdated too. An
alternative would be to compile BCC from source in the CI.

Co-authored-by: MacroFake <falke.marco@gmail.com>
2022-07-08 19:41:58 +02:00
Hennadii Stepanov b1d2fb4ceb
Revert "ci: Increase CPU number for "Win64 native" task"
This reverts commit 849cf967a3.
2022-06-27 14:01:08 +02:00
Hennadii Stepanov 05b2d9fe07
build: Bump default `PlatformToolset` for Visual Studio 2022 2022-06-26 11:29:36 +02:00
Hennadii Stepanov 849cf967a3
ci: Increase CPU number for "Win64 native" task
Currently, the time it takes to get the "Win64 native" task done with
all of the caches been invalidated is very close to the 2 hours limit.

This task is the only one which runs on Windows Community Cluster,
therefore this change should not affect other CI tasks.
2022-06-26 11:07:00 +02:00
Hennadii Stepanov a18c4c1871
ci: Bump vcpkg to the latest version
Dependency changes:
 - boost-* 1.78.0#0 -> 1.79.0#0
2022-06-25 13:56:13 +02:00
Hennadii Stepanov b9a5a9b68c
ci: Limit ccache cache size properly on "Win64 native" task 2022-06-25 12:36:04 +02:00
Hennadii Stepanov 156bc89788
ci: Update Windows task image up to visualstudio2022 2022-06-25 11:30:59 +02:00
Hennadii Stepanov 0bb7a1f71d
ci: Improve naming related to "macOS 12 native x86_64" task 2022-06-22 10:15:16 +02:00
Hennadii Stepanov 8e017f3288
ci, refactor: Add `MACOS_NATIVE_TASK_TEMPLATE`
A native macOS task does not aware of Linux container settings, and it
does not use the `depends_built_cache`.
2022-06-22 10:14:34 +02:00
Hennadii Stepanov 7739438811
ci, android: Update NDK up to r23c 2022-05-31 18:45:13 +02:00
Hennadii Stepanov ca40d6432e
ci: Bump vcpkg to the latest version
Dependency changes:
 - zeromq 4.3.4#4 -> 4.3.4#5
2022-04-13 23:26:23 +02:00
Hennadii Stepanov 5561f17e37
ci: Make Qt configure option change invalidate "msvc_qt_built_cache" 2022-04-13 23:26:14 +02:00
fanquake 372f1a3c25
Merge bitcoin/bitcoin#24753: ci: Add clang-tidy task
fab24f8c35 ci: Add clang-tidy task (MarcoFalke)

Pull request description:

  Fixes #24747

ACKs for top commit:
  fanquake:
    ACK fab24f8c35
  vincenzopalazzo:
    Code Review ACK fab24f8c35

Tree-SHA512: 87a5d67a23d540cea09925a6c186303c1249d4ca244b95940c5214860bf7a849fa12cc4fcf1bb9270b1004407124b3487902969d8ae9d2b14dae1fdfb57cc7e8
2022-04-06 10:10:41 +01:00
MarcoFalke fab24f8c35
ci: Add clang-tidy task 2022-04-04 11:57:06 +02:00
Pavol Rusnak ef20add4c9
build, qt: bump Qt5 version to 5.15.3
Qt 5.15.3 release is a patch release made on the top of Qt 5.15.2. As a patch
release, Qt 5.15.3 does not add any new functionality but provides bug fixes
and other improvements.

https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/5.15.3/release-note.md

* dropped patches:
  - patches/qt/dont_use_avx_android_x86_64.patch
  - patches/qt/fix_bigsur_style.patch
* adjusted patches:
  - patches/qt/fix_android_jni_static.patch
  - patches/qt/fix_limits_header.patch
  - patches/qt/use_android_ndk23.patch

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2022-04-01 16:54:38 +02:00
MarcoFalke ecf692b466
Merge bitcoin/bitcoin#24540: ci: Integrate ccache into MSVC build
3a53927f03 ci: Integrate ccache into MSVC build (Hennadii Stepanov)

Pull request description:

  [ccache 4.6](https://ccache.dev/releasenotes.html#_ccache_4_6):
  > Added support for caching calls to Microsoft Visual C++ (MSVC)

  Integrated into our native Windows CI task.

  [On master](url) (c109e7d51c):
  ![Screenshot from 2022-03-12 10-17-58](https://user-images.githubusercontent.com/32963518/158012098-7ac9d441-2eb0-481e-bcc5-3700c1ce2b15.png)

  [This PR](https://cirrus-ci.com/task/6572984340054016):
  ![Screenshot from 2022-03-12 10-25-33](https://user-images.githubusercontent.com/32963518/158012361-d6bf88bc-f98d-4771-8b4f-31bf5673d085.png)

  ```
  Summary:
    Hits:             222 /  222 (100.0 %)
      Direct:         222 /  222 (100.0 %)
      Preprocessed:     0 /    0
    Misses:             0
      Direct:           0
      Preprocessed:     0
    Errors:             7
    Uncacheable:        9
  Primary storage:
    Hits:             444 /  444 (100.0 %)
    Misses:             0
    Cache size (GB): 0.04 / 5.00 (0.86 %)

  Use the -v/--verbose option for more details.
  ```

Top commit has no ACKs.

Tree-SHA512: d8cf91d8e75a5187cf456960bdf759f857fb9a9b0c4087e5e46ccbe2202aca5f1b9b38a47ec54d98e885c0f5d78de93a3188fb966fa5b346e81907c211ba1e79
2022-03-29 20:22:48 +02:00
MarcoFalke faf8c736ba
ci: Use monterey-xcode-13.3 2022-03-28 14:42:29 +02:00
MarcoFalke fa76d8d4d7
test: Actually print TSan tracebacks 2022-03-15 19:16:35 +01:00
Hennadii Stepanov 3a53927f03
ci: Integrate ccache into MSVC build 2022-03-12 03:20:33 +01:00
Hennadii Stepanov 7ff43e5372
ci: Invalidate vcpkg binary cache if dependencies changed 2022-03-10 08:36:13 +01:00
fanquake c9ed9927bb
Merge bitcoin/bitcoin#24132: build: Bump minimum Qt version to 5.11.3
956f7322f6 build: Bump minimum Qt version to 5.11.3 (Hennadii Stepanov)
e22d10b936 ci: Switch from bionic to buster (Hennadii Stepanov)

Pull request description:

  The current minimum Qt version is 5.9.5 which has been set in bitcoin/bitcoin#21286.

  Distro support:
  - centos 7 -- unsupported since bitcoin/bitcoin#23511
  - centos 8 -- [5.15.2](http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/qt5-qtbase-5.15.2-3.el8.x86_64.rpm)
  - buster -- [5.11.3](https://packages.debian.org/buster/libqt5core5a)
  - bullseye  -- [5.15.2](https://packages.debian.org/bullseye/libqt5core5a)
  - _bionic_ -- [5.9.5](https://packages.ubuntu.com/bionic/libqt5core5a)
  - focal -- [5.12.8](https://packages.ubuntu.com/focal/libqt5core5a)

  As another Ubuntu LTS is coming soon, it seems unreasonable to stick to Qt 5.9 which support [ended](https://www.qt.io/blog/2017/06/07/renewed-qt-support-services) on 2020-05-31. Anyway, it's still possible to build Bitcoin Core GUI with depends on bionic system.

  Bumping the minimum Qt version allows to make code safer and more reliable, e.g.:
  - functor-parameter overload of [`QMetaObject::invokeMethod`](https://doc.qt.io/qt-5/qmetaobject.html#invokeMethod-4)
  - fixed https://bugreports.qt.io/browse/QTBUG-10907

  An example of the patch using the functor-overload of `QMetaObject::invokeMethod`:
  ```diff
  --- a/src/qt/walletmodel.cpp
  +++ b/src/qt/walletmodel.cpp
  @@ -349,7 +349,7 @@ bool WalletModel::changePassphrase(const SecureString &oldPass, const SecureStri
   static void NotifyUnload(WalletModel* walletModel)
   {
       qDebug() << "NotifyUnload";
  -    bool invoked = QMetaObject::invokeMethod(walletModel, "unload");
  +    bool invoked = QMetaObject::invokeMethod(walletModel, &WalletModel::unload);
       assert(invoked);
   }

  ```
  It uses the same new syntax as signal-slot connection with compile-time check. Also see bitcoin/bitcoin#16348.

  This PR is intended to be merged early [after](https://github.com/bitcoin/bitcoin/issues/22969) branching `23.x` off.

ACKs for top commit:
  MarcoFalke:
    cr ACK 956f7322f6
  fanquake:
    ACK 956f7322f6

Tree-SHA512: 3d652bcdcd990ce785ad412ed70234d4f27743895e535a53ed44b35d4afc3052e066c4c84f417e30bc53d0a3dd9ebed62444c57b7c765cb1e9aa687fbf866877
2022-03-07 14:53:23 +00:00
Hennadii Stepanov 68c4a9ed38
ci: Bump vcpkg to the latest version
Dependency changes:
- boost 1.75.0 -> 1.78.0
- double-conversion 3.1.5 -> 3.2.0
- sqlite3 3.35.4 -> 3.37.2
2022-03-07 08:51:20 +02:00