Commit Graph

461 Commits

Author SHA1 Message Date
dundargoc
e7da49d5bf
ci: don't install unnecessary dependencies 2023-05-01 07:39:27 +02:00
dundargoc
933fdff466
ci: make install_deps.sh more flexible
This will allow us to use it in containers as well as specify whether we
want to install test dependencies.
2023-04-29 15:43:54 +02:00
dundargoc
13a24b905e
ci: run lintcommit with cmake target
This increases CI time, but prevents situations where it works on CI but
not locally.
2023-04-29 14:30:54 +02:00
dundargoc
9f2fd89948
ci: install uncrustify through homebrew
It will result in less CI code, and the additional CI time is
negligible.
2023-04-29 13:39:36 +02:00
dundargoc
057af3203b
ci: replace stylua action with our own lint target
This will prevent situations where the linting works on CI but not
locally, at the cost of increased CI time.

Also manually ignore `runtime/vim/lua/re.lua`, as the .styluaignore
isn't respected when specifying a file instead of a directory.
2023-04-29 01:48:14 +02:00
Lewis Russell
ca7e488cfe
feat: add link in issue template to minimal config template 2023-04-28 16:09:05 +01:00
dundargoc
c50cdd6270
ci: replace stale bot with custom implementation
The stale action has a bug where it won't close an issue/PR if it has
comments after the stale label.
2023-04-27 22:07:44 +02:00
dundargoc
7d0479c558
ci: containerize the external dependencies test
Cirrus ci automatically pushes/caches docker images, which makes
containerization much simpler to handle. Moving this job to cirrus ci
shortens the job by a minute, and reduces github actions CI usage by two
minutes per PR.
2023-04-26 23:22:12 +02:00
dundargoc
6674d706d9
ci: update reviewers 2023-04-26 18:25:27 +02:00
dundargoc
664f2749e6
build: add "ci" configure preset to reduce verbosity
`cmake --preset ci`

is equivalent to

`cmake -B build -G Ninja -D CI_BUILD=ON`

Also remove build presets as they're not very useful without workflow
presets, which are only available in schema versions 6 and above.
2023-04-23 17:12:46 +02:00
dundargoc
943ac2be55
ci: reuse script to enable Developer Command Prompt 2023-04-23 16:35:49 +02:00
dundargoc
bf0ac4f241
ci(release): clean up wording and undeprecate tar.gz 2023-04-23 12:15:28 +02:00
dundargoc
eee97300ed
ci(labeler): reuse workflow to reduce duplication 2023-04-22 23:28:39 +02:00
dundargoc
8994389845
ci: make all linux releases work with same glibc version 2023-04-22 22:58:14 +02:00
dundargoc
801ac2accb
build: drop diff.exe from windows builds
The shipped versions of xdiff already does everything diff does, so this
duplication of tools isn't necessary. Furthermore, this setup is more
consistent overall, as the 'diffopt=external' option should be for
external programs rather than programs we bundle neovim with.

Install diffutils for oldtests in CI to avoid needing to modify tests.
2023-04-22 18:36:33 +02:00
dundargoc
ccce200cde
ci(lintcommit): fix error output
Using print() alone doesn't work properly, toggling the verbose option
is still required.
2023-04-22 17:37:45 +02:00
Lewis Russell
732cb9e1e0
ci(lintcommit): use nvim -l 2023-04-22 15:10:35 +02:00
dundargoc
669030ec08
ci: remove team reviewers
Team reviewers is a nice feature that comes with a severe drawback: it
makes testing the workflows incredibly difficult as they won't work
without a similar token by the tester.
2023-04-22 13:50:27 +02:00
luukvbaal
05928fe298
docs(gh): suggest distclean in issue template (#23222) 2023-04-21 08:09:11 +01:00
bfredl
e81331c2b0
Merge pull request #23106 from bfredl/nlua0
refactor(build): use vendored versions of mpack and luabitop
2023-04-19 21:11:12 +02:00
Lewis Russell
706f871014
build: update uncrustify to 0.76 2023-04-19 17:04:00 +01:00
bfredl
1e60e8c040 refactor(build): use vendored versions of mpack and luabitop 2023-04-19 10:44:25 +02:00
dundargoc
0a3645a723
build: find system luv on ubuntu
Also use the system luv in CI for the with-external-deps job.
2023-04-19 00:47:15 +02:00
zeertzjq
b98d195c55
ci(labeler): add back GitHub token for type-scope
It is required by `gh pr edit`.
2023-04-17 19:11:29 +08:00
dundargoc
55d346fc26
ci: remove unnecessary token usage 2023-04-16 14:16:19 +02:00
Vedant
58433285b9
ci(release/winget): get msi from previous job instead of downloading 2023-04-10 13:50:39 +02:00
Carlo Cabrera
5d387c3388
build(ci): ensure correct headers are used on macOS
Currently, the release build picks up headers in
`/Library/Frameworks/Mono.framework/Headers`. You can verify this by
downloading the latest nightly build and checking the output of `nvim
--version`.

These headers are likely to be from a different version of `libintl` than the
one we link to. Let's avoid usage of them by setting `CMAKE_FIND_FRAMEWORK` to
`NEVER`.
2023-04-09 20:31:13 +02:00
dundargoc
5d01d23389
ci: simplify backport workflow 2023-04-08 13:14:13 +02:00
dundargoc
8f1541fced
ci: use a set instead of array for team reviewers
Adding the same team multiple times will fail the review job.
2023-04-07 23:00:35 +02:00
dundargoc
d4398f4021
ci: don't automatically enable -Werror on CI environments
This catches downstream consumers of neovim off guard when using neovim in an
esoteric environment not tested in our own CI.

Closes https://github.com/neovim/neovim/issues/22932
2023-04-07 22:31:04 +02:00
Christian Clason
fbee2e4d9c
ci(release): promote appimage over tar.gz (#22908) 2023-04-06 11:09:33 +02:00
dundargoc
9d5cbd1b15
ci!: remove the .deb release (#22773)
Having multiple release artifacts per platform is a maintenance burden.
Furthermore, it is a maintenance burden that doesn't directly improve
the Nvim editor itself. The releases are meant to be a quick way for
users to try out and use neovim on their platform and was never intended
to be a buffet of releases for every conceivable setup.

Users are encouraged to the following replacements:

- Github action `action-setup-vim` to have neovim installed on their
  PATH for their CI jobs. See https://github.com/rhysd/action-setup-vim.
- Use the appimage, either as is or by extracting it
  - To use as is, run `chmod u+x nvim.appimage && ./nvim.appimage`
  - If your system does not have FUSE you can extract the appimage with
    `./nvim.appimage --appimage-extract && ./squashfs-root/usr/bin/nvim`
- Build it manually. See https://github.com/neovim/neovim/wiki/Building-Neovim.

Work on https://github.com/neovim/neovim/issues/22684
2023-04-05 09:22:29 +02:00
Lewis Russell
090ade4af6
refactor(treesitter): delegate region calculation to treesitter (#22576) 2023-04-04 13:58:16 +02:00
dundargoc
598ff4f7d1
ci: update reviewers 2023-04-02 17:37:05 +02:00
dundargoc
a478fd4175
ci: use "ci" as the commit type for dependabot updates 2023-03-24 05:39:18 +01:00
dependabot[bot]
b2253cd000
build(deps): bump actions/stale from 7 to 8
Bumps [actions/stale](https://github.com/actions/stale) from 7 to 8.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v7...v8)
2023-03-23 23:32:45 +07:00
zeertzjq
3875b1fc8d
ci(labeler): don't automatically add "lua" label (#22765)
The labeler adds "lua" label to too many files. When there is already
a "treesitter" or "lsp" label, a "lua" label isn't useful. Instead it's
better to add the label manually to PRs for general Lua support.
2023-03-23 21:40:50 +08:00
ii14
17ce634b8f build!: rename sanitizer options from CLANG_* to ENABLE_* 2023-03-17 03:40:57 +01:00
dundargoc
9d574f8dd7
ci: bump to windows 2022
Skip failing funcitonaltests. Use jobstart() instead termopen() for
oldtests to prevent CI freezing.
2023-03-11 22:56:16 +01:00
dundargoc
a1edbd3564
ci: skip ruby provider tests on Windows
Installing the ruby provider takes anything between 1 and 1.5 minutes on
Windows, which is a big drain on our CI. Remove it until we find a more
sustainable solution.
2023-03-11 09:41:58 +01:00
dundargoc
1a71e5c362 ci: don't install unused packages
The lua client is no longer needed after
d6279f9392. One of its dependencies,
mpack, is still needed however. Remove lua-nvim and replace it with
lua-mpack.

The other packages are most likely not needed as we no longer run tests
for external dependencies.
2023-03-11 09:38:29 +01:00
dundargoc
5aaed9cbfc ci: test build with external dependencies on every pull request
Only testing the build with external dependencies on build system
changes is too naive, as demonstrated by
b9f19d3e28.
2023-03-11 09:38:29 +01:00
dundargoc
6cd7b5eeef ci: remove environment variable DEPS_BUILD_DIR from CI
If one uses .deps when DEPS_BUILD_DIR is defined in another location it
leads to very surprising behaviors, as it looks for libraries in other
places other than .deps.
2023-03-11 09:38:29 +01:00
Christian Clason
898f902e00
ci(news): don't run on draft (#22574) 2023-03-08 18:18:03 +01:00
bfredl
30632dd21a refactor(build): make installation of runtime/ more effective
Currently files to install in runtime/ is detected by recursive glob
pattern which has two problems:

- cmake needs to do a of work at config time and
  build/runtime/cmake_install.cmake becomes HUGE (2.5MB, biggest config file)
- we need to explicitly specify each file suffix used in the entire
  runtime, which is duplication of information.

These globs specify every single file in a subdirectory.
Thus, we can just install every runtime/ subdirectory as a single
install command. Furthermore, at the top-level, only .vim and .lua files
need to be installed.

Further possible refactor: we could move files which does not belong
in $PREFIX/runtime out of $REPO/runtime. Then runtime could be installed
with a single install_helper(DIRECTORY ...) command.
2023-03-07 20:16:52 +01:00
dundargoc
af23d17388
test: move oldtests to test directory (#22536)
The new oldtest directory is in test/old/testdir. The reason for this is
that many tests have hardcoded the parent directory name to be
'testdir'.
2023-03-07 11:13:04 +08:00
dundargoc
d877aa32f2 ci: remove core dump checking from test.yml
There is already a superior core dump check in test/helpers.lua, which
makes this obsolete.
2023-03-05 14:52:05 +01:00
dundargoc
98876db155 ci: use the same deps directory location for all jobs
Having separate directory location causes failures to be inconsistent
and ultimately confusing. A common problem is a file with a particular
name is searched for the entire repository, which gives different
results if the dependency directory is inside the neovim directory or
outside of it.
2023-03-05 14:52:05 +01:00
dundargoc
3683d6b7a8
ci: move configuring cmake to the build part of the CI
If the configuration fails then lints shouldn't be run, as most lint
steps depends on a successful configuration.
2023-03-04 17:55:42 +01:00
dundargoc
521034edef
ci: build all build types on each PR (#22441)
Building with Release and RelWithDebInfo build types only on build
system changes is too optimistic, as shown by
https://github.com/neovim/neovim/pull/22436 and
659234c95a.
2023-02-27 22:47:34 +01:00
Justin M. Keyes
6752f1005d docs: naming conventions, guidelines
close #21063
2023-02-22 16:23:49 +01:00
dundargoc
d18f8d5c2d
ci: use multi-config generator on the multi-config test (#22352) 2023-02-21 14:01:49 +01:00
dundargoc
f0ee548137
ci(backport): bump zeebe-io/backport-action from 0 to 1 (#22348)
Notable changes are performance increases for fetching repositories and
simpler workflow file.
2023-02-21 07:43:17 +01:00
Vedant
96b6b27f74
ci: add dependabot to auto-update github actions (#22341)
This will ensure we don't accidentally have outdated actions.
2023-02-20 22:24:27 +01:00
Vedant
3264cb294e
fix(ci/release/winget): bump action version 2023-02-20 21:23:08 +01:00
dundargoc
b62c0c8d9c
docs: fix typos (#21961)
Co-authored-by: Ben Morgan <cassava@iexu.de>
2023-02-20 15:12:59 +08:00
dundargoc
9301abdf74
ci: enable CI_BUILD automatically if environment variable CI is true (#22312)
Having to specify CI_BUILD for every CI job requires boilerplate. More
importantly, it's easy to forget to enable CI_BUILD, as seen by
8a20f9f98a. It's simpler to remember to
turn CI_BUILD off when a job errors instead of remembering that every
new job should have CI_BUILD on.
2023-02-18 17:43:39 +01:00
dundargoc
6ed5a9ab8c
build: test multi-config generator (#22310)
Multi-config generators can be tricky so testing them would be good.
Also test GCC release and MinSizeRel build types as they're prone to
unusual warnings. Remove release testing from test.yml as this is a
sufficient replacement.
2023-02-18 16:54:19 +01:00
dundargoc
fc8c77a69f
ci: split ci.yml into a test workflow and a build test workflow (#22302)
Having a workflow that only builds neovim without running all of the
tests is a cheap way to test the build still works without burning too
much CI time.
2023-02-18 10:47:22 +01:00
dundargoc
fbb27a101f
ci: remove former dependencies that are no longer needed (#22301)
libtool, autoconf, automake and perl are no longer dependencies of
neovim and doesn't need to be installed in CI anymore. The dependencies
and the commit that removed them as dependencies are the following:

libtool: b05100a9ea
perl: 20a932cb72
autoconf+automake: e23c5fda0a
2023-02-18 00:09:51 +01:00
zeertzjq
d079c8cc5d
ci: change functionaltest timeout to 20 minutes (#22294)
15 minutes is too short for TSAN.
2023-02-17 11:06:56 +08:00
Kiyoon Kim
5688a9fb34
fix: lsp github issue template example (#22285) 2023-02-16 19:54:52 +01:00
dundargoc
f1c5887377
ci: add GCC Release testing (#22274)
ci: add GCC release testing

We currently have no release testing, so it's good to check for any
unwanted behavior on release builds as well. Prefer GCC over clang, as
GCC release builds seem to create more warnings on release compared to
debug.
2023-02-16 00:15:09 +01:00
dundargoc
bb9c673d2c
ci: automatically maximize MIN_LOG_LEVEL if CI detected (#22248)
Detect if on CI by checking that the CI environment variable is set to "true".
This is a common pattern among CI providers, including github actions and
cirrus.
2023-02-13 20:04:54 +01:00
dundargoc
9de9bd4bed
ci: replace cmake script with bash script (#22246)
Bash has better error handling than cmake, and seem overall slightly
more suited to scripting than cmake.
2023-02-13 18:26:01 +01:00
dundargoc
5d3769ea23
ci: install dependencies with a single script (#22241)
It's easier if the os-specific installations are done by the script itself
2023-02-12 22:09:10 +01:00
dundargoc
2b1c07a1d4
ci: remove unnecessary matrix from codeql workflow (#22239) 2023-02-12 18:12:17 +01:00
dundargoc
477d4bbf5f
ci: inline external environment scripts (#22237)
Scripts that define the build itself shouldn't be external as they lead
to hard to find bugs.
2023-02-12 18:08:37 +01:00
dundargoc
c099836168
ci: convert environment variables to matrix variables (#22224)
Having as few indirections as possible makes it easier to understand the
code.
2023-02-12 13:09:46 +01:00
dundargoc
e81b4274fc
ci: delete ci/ (#22227)
Having CI scripts that is separate from the build system causes
tremendous amounts of problems, headaches and bugs. Testing the validity
of the scripts locally become near impossible as time goes on as they're
only vetted if it works on whatever CI provider we happened to have at
the time, with their own quirks and behavior.

The extra indirection between "cmake <-> general CI scripts <-> GHA" is
also a frequent source of problems, as the orchestration needs to be
done with environment variables, cmake flags and github actions matrix
strategy. This combination has turned out to be exceptionally fragile.

Examples:
15394b6855
13aa23b62a
https://github.com/neovim/neovim/pull/22072#discussion_r1094390713

A lot of the code was inlined to .github/workflows/ci.yml without
further modifications. While this in itself doesn't integrate with our
build system any more than the current situation, it does
1. remove a level of indirection, and more importantly
2. allow us to slowly start integrating the CI into our build system now
   that all the relevant code is in one place.
2023-02-12 11:50:08 +01:00
dundargoc
3a5dddf24f
ci: show all logs at the end of a run (#22226)
* ci: show all logs at the end of a run

The current CI won't show the logs on error due to early exit. This will
at least show the logs, although for all tests at once.
2023-02-11 18:16:04 +01:00
dundargoc
883ec20d9f
ci: inline build commands and remove before_script.sh (#22202)
Abstracting the build commands to a separate script makes it more
difficult to reason about it and more error-prone.
2023-02-11 13:27:43 +01:00
dundargoc
b0d156c00b
ci: run lintcommit file from PR branch (#22219)
As the trigger type is no longer pull_request_target there is no longer
any risk of using the lintcommit script directly from the user PR.
2023-02-11 13:22:54 +01:00
dundargoc
ee87b848a2
ci: remove reviewers from the refactor label (#22216)
Anyone can review a refactor depending on what's being refactored.
2023-02-11 10:47:10 +01:00
bfredl
87d0809545 build(ci): let ASAN print tracebacks for more errors (SIGABORT, SIGILL) 2023-02-10 22:14:45 +01:00
dundargoc
d5b1712dc4
ci: remove unnecessary environment variables (#22175) 2023-02-10 13:56:07 +01:00
dundargoc
827947447e
ci: split functionaltest-lua into two separate jobs (#22201)
More specifically, move the job testing the oldest supported cmake into
its own job. This opens the way for other jobs to use powerful and
advanced cmake features such as choosing which files to use with the -S
flag.

Removed testing from this job as this probably won't reveal anything
that other jobs already doesn't already show, since the only difference
is the cmake version.
2023-02-10 12:04:00 +01:00
dundargoc
eb3f8989a0
ci(lintcommit): turn off debug tracing (#22196)
The default output is too verbose and messy for someone not already
familiar with lintcommit, which defeats it purpose.
2023-02-09 23:23:48 +01:00
dundargoc
2b09b39aec
ci: remove base branch from cache key (#22195)
Using the base branch as cache means that pull requests won't be able to
use the cache from the master branch, since the master branch cache
doesn't have a base_ref as it's generated from a push. Removing base_ref
makes the cache key from master and PR branch the same, provided the any
build files don't change.
2023-02-09 22:25:44 +01:00
dundargoc
ec932961cc
ci: inline internal caching script to Github actions (#22192)
I don't think it's possible to meaningfully abstract away caching on
multiple providers, as each provider has different mechanisms
on how they work.
2023-02-09 21:13:03 +01:00
dundargoc
05d3bef836
ci: add individual timeout limits for all tests (#22193)
The CI somtimes freezes on a specific test, wasting 45 minutes for the
entire job. Adding a timeout of 15 minutes to functionaltest and 5
minutes to unittests will mitigate the problem.
2023-02-09 20:13:05 +01:00
dundargoc
d6d3a92013
build: replace check-single-includes with clang-tidy (#22061)
Clang-tidy already does what check-single-includes does automatically on
top of its regular linting. It is also generator independent, so it
doesn't take an eternity to run on slower generators such as Visual
Studio.
2023-02-08 18:16:48 +01:00
dundargoc
81c5483dcb
ci: add universal macos job (#22156)
The universal macos release is particularly sensitive to build system
changes. Adding a job that builds a universal binary whenever a cmake
file is changed will help prevent future release breaks.
2023-02-07 23:09:08 +01:00
dundargoc
c1d76363ac
ci: simplify how environment variables are used (#22067)
Having a clear separation between when we manipulate variables and when
we export them to GITHUB_ENV makes it less error-prone.
2023-02-07 14:43:45 +01:00
bfredl
13aa23b62a refactor(tests): run unittests using main nvim binary in interpreter mode
This allows us to get rid of the separate "nvim-test" target
2023-01-31 19:28:26 +01:00
dundargoc
9cb3b276bd
ci(news): mention that ignoring news.txt is fine (#22043)
news.txt is only meant as a reminder, but contributors have no way of
knowing this automatically without such a message.
2023-01-29 17:03:53 +01:00
dundargoc
15394b6855
ci: fix lintc to use external dependencies instead of bundled (#21995)
Use the bundled libvterm dependency as the external package is outdated,
with the hopes of being able to use the external package once its
version meets our required version.

Co-authored-by: Christian Clason <c.clason@uni-graz.at>
2023-01-25 20:33:18 +01:00
Mathias Fußenegger
45d511574c
project: "steps to reproduce" in lsp_bug_report #21932 2023-01-23 02:11:53 -08:00
dundargoc
42d5142367
ci: enable CI_BUILD on windows (#21557)
This will ensure warnings are treated as errors when using MSVC.

Also fix const correctness warnings. The warnings in mbyte.c are false
positives that triggers this warning on MSVC v19.32 and lower, which our
CI still use. The (void *) casts can be removed once the CI MSVC version
has been upgraded to v19.33 or higher.
2023-01-18 20:23:46 +01:00
dundargoc
6383e454ab
ci: run each linter once (#21825)
Running "make lintlua" will run both stylua and luacheck if both exist.
But this is not necessary as we already lint with stylua with the
stylua-action, so we only need to lint with luacheck on our own.
2023-01-16 11:11:48 +01:00
dundargoc
909abfbd87
ci: deduplicate TEST_FILE environment variable (#21667) 2023-01-15 12:25:28 +01:00
zeertzjq
3d49d39cd8
ci(tsan): run functionaltests instead of oldtests (#21744)
With TUI as an external process oldtests no longer involve threads, so
TSAN isn't useful. Meanwhile functionaltests may involve threads.
2023-01-11 14:36:26 +01:00
dundargoc
d89290b453
ci(news): checkout to HEAD commit instead of merge commit (#21679)
The default merge branch is unreliable when trying to determine number
of commits in a PR. Using the HEAD branch of the PR removes this
ambiguity.
2023-01-07 16:51:52 +01:00
Justin M. Keyes
599e1d019a ci: use nvim -l in api-docs job 2023-01-05 17:10:02 +01:00
Justin M. Keyes
7c94bcd2d7 feat(lua)!: execute Lua with "nvim -l"
Problem:
Nvim has Lua but the "nvim" CLI can't easily be used to execute Lua
scripts, especially scripts that take arguments or produce output.

Solution:
- support "nvim -l [args...]" for running scripts. closes #15749
- exit without +q
- remove lua2dox_filter
- remove Doxyfile. This wasn't used anyway, because the doxygen config
  is inlined in gen_vimdoc.py (`Doxyfile` variable).
- use "nvim -l" in docs-gen CI job

Examples:

    $ nvim -l scripts/lua2dox.lua --help
    Lua2DoX (0.2 20130128)
    ...

    $ echo "print(vim.inspect(_G.arg))" | nvim -l - --arg1 --arg2
    $ echo 'print(vim.inspect(vim.api.nvim_buf_get_text(1,0,0,-1,-1,{})))' | nvim +"put ='text'" -l -

TODO?
  -e executes Lua code
  -l loads a module
  -i enters REPL _after running the other arguments_.
2023-01-05 17:10:02 +01:00
Justin M. Keyes
c889f75436 project: rearrange ISSUE_TEMPLATE/bug_report.yml
Problem:
The "system info" fields in the bug report take up a lot of space at the
top. That hides the most relevant part of the bug report. To read the
actual bug, you always have to scroll down.

Solution:
Move the "system info" fields to the bottom.
2023-01-05 10:48:48 +01:00
Justin M. Keyes
63e0e77bd9
project: update feature request template
- Ask for problem/solution format.
- Drop "Vim version" field, it is usually empty and takes up too much space.
2023-01-03 16:30:56 -08:00
dundargoc
ab11157808
ci: add platform:nix label when changing nix files (#21569)
Also update the reviewer list.
2022-12-28 15:19:23 +01:00
zeertzjq
2732759bff
ci(release): properly set multiline output variable (#21560) 2022-12-28 19:48:19 +08:00
dundargoc
788eb65494
ci: remove needs:response label if author responds (#21489)
ci: remove "needs:response" label if author responds

The default behavior of the stale action is to indiscriminately remove
the `needs:response` label for any activity whatsoever, from anyone. The
other option is to turn it off completely, meaning the maintainers needs
to manually remove the label themselves when the author responds for an
issue to not close automatically. Neither of these behaviors are useful
to us.
2022-12-23 12:54:30 +01:00