Commit Graph

173 Commits

Author SHA1 Message Date
Yuri Sizov 16a93563bf
Merge pull request #73777 from myaaaaaaaaa/enable-tsan
Add a Linux ThreadSanitizer job to CI
2023-08-04 21:28:42 +02:00
Rémi Verschelde a890457693
CI: Make extension API compatibility check mandatory
This means that any PR which breaks the extension API should
handle it properly, that is:

- Add compatibility methods to ensure that existing function hashes work
- Document the changes in the relevant misc/extension_api_validation/ file
2023-08-03 15:56:34 +02:00
Rémi Verschelde 4646762c81
CI: Allow skipping our GHA workflows with `DISABLE_GODOT_CI` variable
Useful for custom forks of Godot which don't want to run our CI for any
reason.

This is configured in `settings/variables/actions` for the repository,
setting it to any value aside from an empty string will skip all jobs.
2023-08-02 17:48:47 +02:00
Yuri Sizov deb6025781 CI: Extract godot-cpp testing into its own job
This ensures that the godot-cpp job has plenty of resources
to run its build and avoid being affected by the main build.

Additionally:
- Extract test tasks into dedicated actions.
- Upload artifacts as early as possible.
- Ensure that we check master cache before random cache.
2023-08-01 20:41:45 +02:00
Rémi Verschelde 611123f7fd
CI: Free disk space on Linux runners
Removing the Android toolchain saves 14 GiB, which gives us more room
for growth and to avoid running into out-of-space errors in the Linux
sanitizers + debug symbols builds.

Related to #79919, though the caches were just one part of the problem,
the real issue is that our Linux sanitizers builds take 12 GiB, and
adding godot-cpp on top with 2 GiB leaves only a few GiB left for the
cache itself.
2023-08-01 14:29:20 +02:00
Hugo Locurcio c16db0935f
Fix `doc_status.py` trying to get removed `version` tag from XML
This also runs `doc_status.py` on CI to catch potential future regressions.
2023-07-13 16:25:54 +02:00
myaaaaaaaaa 8b78ad5fc4 Add a Linux ThreadSanitizer job to CI 2023-06-26 11:47:42 -04:00
Rémi Verschelde 8c564cd974
CI: Use SCU build for Linux w/ sanitizers build
It's the slowest build so a speedup from SCU is welcome.
The other purpose of this change is to actually catch global scope
conflicts which would break the SCU build.

SCU builds have drawbacks as they won't fully validate that the
includes are correct, but we should have enough other builds in the CI
build matrix to catch this type of bug.
2023-06-20 13:15:34 +02:00
Rémi Verschelde c9c941e339
CI: Update static checks to black 23.3.0
And apply it to the codebase, removing empty lines at the start of blocks.
2023-06-19 23:33:02 +02:00
Rémi Verschelde 6fb391bc23
Fix various typos with codespell
And ignore some false positives introduced by recent versions of codespell.
2023-06-16 08:45:35 +02:00
RedworkDE 0cf491bcb5 Allow validating the extension api against a reference version and a list of known changes. 2023-05-19 18:43:04 +02:00
Rémi Verschelde a28c9701ed
CI: Use GODOT_BASE_BRANCH for the godot-cpp checkout 2023-05-18 16:22:25 +02:00
Rémi Verschelde 78f9da7a9f
Merge pull request #76887 from RedworkDE/ci-fix-windows-unit-tests
CI: Fix running the unit tests on windows
2023-05-15 10:57:04 +02:00
Rémi Verschelde c7a5ce656c
CI: Skip codespell check if `CHANGED_FILES` is empty
This can happen when only thirdparty files are changed, since we grep them out.
Re-add `bin` and `thirdparty` to the skip list for good measure.
2023-05-10 09:44:44 +02:00
RedworkDE adbb323163 CI: Fix running the unit tests on windows 2023-05-10 00:02:27 +02:00
Rémi Verschelde b3bb92ae5e
CI: Use gh-cli for changed files, and workaround codespell skip list bug
For PRs, this should give a more accurate list, as the previous method would
diff to the tip of the `master` branch, which could include new commits (and
thus changed files) not present in the PR branch.

codespell's `--skip` option doesn't work at all with folders when used
together with an explicit list of paths to work with, so let's not use it.
2023-05-08 15:36:17 +02:00
Rémi Verschelde b226f7e587
CI: Make codespell checks blocking, but only check changed files 2023-05-08 11:50:55 +02:00
Yuri Sizov 3ae282b452 Create an "Editor-only" section in the online class reference
This helps to find such classes without digging
through the rest of the class reference.
Editor-only classes can still be found under
your normal "Node" and "Resource" types.

This also fixes a typo and a missed case from the recent platform docs PR.
2023-04-24 21:06:55 +02:00
Rémi Verschelde 39d24ee80b
CI: Fix checks fallback logic when changed files listing is missing
The file would be one byte (newline) so the check with '-s' failed.
2023-04-20 18:22:48 +02:00
Rémi Verschelde 9063e907a7
CI: Fixup failure to get changed files on merge
The checkout might be too shallow so the before commit isn't available.
The logic was already written to take this into account (it then generates
an empty 'changed.txt' which falls back to testing everything), but the
error code would still force terminate the job.

Hopefully we can find a way to make the logic work for merge events too in
the future, but for now this is a quick fix.
2023-04-20 17:51:53 +02:00
Rémi Verschelde 5e7b6cd75a
Merge pull request #76263 from akien-mga/ci-gotta-go-fast-with-style
CI: Speed up static checks by checking only changed files
2023-04-20 12:44:06 +02:00
Rémi Verschelde 068f893072
CI: Speed up static checks by checking only changed files
- file_format, header_guards and clang-format benefit from this short list.
- dotnet-format, Python and JS checks don't, but they're only relevant for
  PRs changing a specific set of files, so we skip them when those files
  aren't modified.

The logic to get changed files only works reliably for:
- Pull request events
- Non-force pushed push events

So when force pushing a branch in your fork, or creating a new branch,
it will still scan all files as fallback.

Upgraded CI runner to Ubuntu 22.04 so we get clang-format 14 out of the box,
so we don't need to install a custom version (saves ~15 s). We also cache
the APT dependencies to speed up the build and avoid flaky Ubuntu/Microsoft
repos.
2023-04-20 11:40:09 +02:00
bruvzg a5128e71bb
[Export docs] Move docs to platform folders. 2023-04-20 11:02:12 +03:00
Rémi Verschelde fba9416fe0
Merge pull request #75700 from akien-mga/ci-visible-whitespace
CI: Visibly print trailing whitespace when static checks fail
2023-04-05 20:21:19 +02:00
Rémi Verschelde 266280ffca
CI: Visibly print trailing whitespace when static checks fail
GitHub Actions seems to be hiding colored whitespace, and after lots of
attempts I couldn't find a way to work it around.

So instead I'm using a perl expression to replace trailing spaces with
`·` and tabs with `<TAB>` in the ANSI colored diff output. This ensure
that they're visible, and they are properly colored as expected too.
2023-04-05 18:31:46 +02:00
umarcor 2abadbb58b [ci/windows] remove obsolete 'tools' in the name 2023-04-05 14:10:52 +02:00
yedpodtrzitko 93b7bcb33d ci: wait for static check results before starting builds 2023-04-04 22:05:15 +07:00
Unai Martinez-Corral dcb974700b [ci/web] update mymindstorm/setup-emsdk to v12 2023-03-26 02:12:53 +01:00
Rémi Verschelde 17da86eb7b
CI: Disable debug_symbols for Linux + all sanitizers build
We're running out of disk space so builds are failing...
2023-02-18 23:41:44 +01:00
Rémi Verschelde 57d0afb365
CI: Remove flaky packages.microsoft.com Ubuntu repository
We don't need it.
2023-02-11 17:05:05 +01:00
Rémi Verschelde da124e9d04
CI: Remove custom Linux deps and SwiftShader
The default environment already includes everything we need to build
all our configurations.

Remove custom SwiftShader setup as lavapipe should now be good enough,
but we need to install the latest one.
2023-02-06 18:21:15 +01:00
Rémi Verschelde 435bf4e030
CI: Add official codespell action with PR annotations 2023-02-01 12:11:36 +01:00
bruvzg 8cb7bd5230
[CI] Remove packages that are no longer necessary. 2023-01-25 10:55:34 +02:00
bruvzg daad4aed62
Cleanup and unify keyboard input.
- Unify keycode values (secondary label printed on a key), remove unused hardcoded Latin-1 codes.
- Unify IME behaviour, add inline composition string display on Windows and X11.
- Add key_label (localized label printed on a key) value to the key events, and allow mapping actions to the unshifted Unicode events.
- Add support for physical keyboard (Bluetooth or Sidecar) handling on iOS.
- Add support for media key handling on macOS.

Co-authored-by: Raul Santos <raulsntos@gmail.com>
2023-01-23 15:08:12 +02:00
Aaron Franke 06450bfb0f
Fix file formatting script dependencies and cleanup 2023-01-12 16:25:21 -06:00
Rémi Verschelde 02a1a335f7
CI: Use clang-format 15
No change compared to version 13 in our codebase.
2023-01-10 18:18:57 +01:00
Rémi Verschelde de5aaf1d13
CI: Fix dumping GDExtension interface and API for godot-cpp
Follow-up to https://github.com/godotengine/godot-cpp/pull/960.

Fix exit code for --dump-extension-api and --dump-gdextension-interface.

Removed the planned API validation step as we still didn't implement
anything, and maintaining a stub isn't useful.
2022-12-14 16:42:14 +01:00
Rémi Verschelde f1edd03d4c
Merge pull request #69718 from groud/finally_rename_gdnative_to_gdextension
Rename all gdnative occurences to gdextension
2022-12-12 11:43:59 +01:00
Gilles Roudière be1c9d677d Rename all gdnative occurences to gdextension
Non-exhaustive list of case-sensitive renames:

GDExtension -> GDNative
GDNATIVE -> GDEXTENSION
gdextension -> gdnative
ExtensionExtension ->Extension (for where there was GDNativeExtension)
EXTENSION_EXTENSION ->EXTENSION (for where there was GDNATIVE_EXTENSION)
gdnlib -> gdextension
gdn_interface -> gde_interface
gdni -> gde_interface
2022-12-12 11:04:57 +01:00
Hugo Locurcio 063637ec77
Rename `float=64` SCons option to `precision=double`
This avoids confusion with the old `bits=64` option and building
for 64-bit CPUs in general.
2022-12-10 16:43:45 +01:00
Rémi Verschelde ee43b7da28
Merge pull request #68543 from DarkKilauea/msvc-problem-matcher 2022-11-11 22:57:01 +01:00
Josh Jones ed2c1d1c51 Add MSVC problem matcher to CI 2022-11-11 13:23:59 -08:00
Raul Santos d3641c9d0d
Add GCC problem matcher to CI 2022-11-11 19:41:36 +01:00
bruvzg 0103af1ddd
Fix MSVC warnings, rename shadowed variables, fix uninitialized values, change warnings=all to use /W4. 2022-10-07 11:32:33 +03:00
TechnoPorg f124616a5f Various enhancements to Visual Studio solution generation.
This adds support for building solutions with dev_mode and/or float=64 enabled.
Additionally, it adds solution generation to the Windows CI to catch future regressions.
2022-10-04 19:10:02 -06:00
Rémi Verschelde 0056acf46f CI: Update target for godot-cpp after https://github.com/godotengine/godot-cpp/pull/867 2022-10-04 16:51:58 +02:00
Jiri Suchan c5bd2f9dce ci: add Python static analysis check via mypy 2022-09-30 19:03:17 +07:00
Rémi Verschelde 39facb35a0 SCons: Unify tools/target build type configuration
Implements https://github.com/godotengine/godot-proposals/issues/3371.

New `target` presets
====================

The `tools` option is removed and `target` changes to use three new presets,
which match the builds users are familiar with. These targets control the
default optimization level and enable editor-specific and debugging code:

- `editor`: Replaces `tools=yes target=release_debug`.
  * Defines: `TOOLS_ENABLED`, `DEBUG_ENABLED`, `-O2`/`/O2`
- `template_debug`: Replaces `tools=no target=release_debug`.
  * Defines: `DEBUG_ENABLED`, `-O2`/`/O2`
- `template_release`: Replaces `tools=no target=release`.
  * Defines: `-O3`/`/O2`

New `dev_build` option
======================

The previous `target=debug` is now replaced by a separate `dev_build=yes`
option, which can be used in combination with either of the three targets,
and changes the following:

- `dev_build`: Defines `DEV_ENABLED`, disables optimization (`-O0`/`/0d`),
  enables generating debug symbols, does not define `NDEBUG` so `assert()`
  works in thirdparty libraries, adds a `.dev` suffix to the binary name.

Note: Unlike previously, `dev_build` defaults to off so that users who
compile Godot from source get an optimized and small build by default.
Engine contributors should now set `dev_build=yes` in their build scripts or
IDE configuration manually.

Changed binary names
====================

The name of generated binaries and object files are changed too, to follow
this format:

`godot.<platform>.<target>[.dev][.double].<arch>[.<extra_suffix>][.<ext>]`

For example:
- `godot.linuxbsd.editor.dev.arm64`
- `godot.windows.template_release.double.x86_64.mono.exe`

Be sure to update your links/scripts/IDE config accordingly.

More flexible `optimize` and `debug_symbols` options
====================================================

The optimization level and whether to generate debug symbols can be further
specified with the `optimize` and `debug_symbols` options. So the default
values listed above for the various `target` and `dev_build` combinations
are indicative and can be replaced when compiling, e.g.:

`scons p=linuxbsd target=template_debug dev_build=yes optimize=debug`
will make a "debug" export template with dev-only code enabled, `-Og`
optimization level for GCC/Clang, and debug symbols. Perfect for debugging
complex crashes at runtime in an exported project.
2022-09-26 16:31:46 +02:00
Rémi Verschelde b353336037 CI: Downgrade Emscripten to 3.1.18
Emscripten 3.1.19 and 3.1.20 have a showstopping regression that breaks
calling our main function for the editor build.
2022-09-09 14:02:16 +02:00
Gergely Kis 20bf72751c Fix UTF-8 validation in static checks
Use isutf8 instead of recode to detect invalid UTF-8 sequences.

Also add the necessary dependencies to run the static checks locally
using act (https://github.com/nektos/act) with the Medium size image.
2022-09-05 13:18:27 +02:00