Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cmake version tracking issue #24004

Open
dundargoc opened this issue Jun 12, 2023 · 5 comments
Open

Cmake version tracking issue #24004

dundargoc opened this issue Jun 12, 2023 · 5 comments
Labels
build building and installing Neovim using the provided scripts
Milestone

Comments

@dundargoc
Copy link
Member

dundargoc commented Jun 12, 2023

A tracking issue of pros and cons of upgrading the minimum cmake version (currently 3.13).

Note: "Drops support" sounds worse than it actually is; it only means that
neovim can't be built with the cmake that is provided by the package manager by
default. It's still very easy to build and download any cmake version (either
manually or with something like PPA/backports).


3.14

  • FetchContent_MakeAvailable
    • Makes FetchContent easier to use with less boilerplate.

Drops support for

  • Debian 10

3.15

  • --install flag
    • Possible to install neovim the same way across all platforms and generators.
  • $<REMOVE_DUPLICATES> generator expression
    • Allows us to simplify some --version logic.
  • Possible to build on Windows without getting spammed by linker warnings.
  • CMAKE_GENERATOR to specify default generator if -G isn't provided
  • Possible to set log level on messages

Drops support for

  • Fedora 30-31

3.16

  • Message indenting (useful for debugging)

3.17

  • Didn't find anything useful

Drops support for

  • Ubuntu 20.04

3.18

  • CheckLinkerFlag module
  • REQUIRED option for all "find_" commands.

Drops support for

  • Fedora 32

3.19

  • string gained JSON subcommands
    • Allows us to specify dependencies in JSON instead of our bespoke format in cmake.deps/deps.txt

Drops support for

  • Debian 11
  • Fedora 33
@clason
Copy link
Member

clason commented Jun 12, 2023

And to complement this excellent write-up, a summary of which distro version comes with which CMake version:

Debian

  • Buster (oldstable, LTS until June 2024): 3.13 (backports: 3.18)
  • Bullseye (stable, LTS until June 2026): 3.18 (backports: 3.25)
  • Bookworm (new stable): 3.25

Ubuntu

  • 18.04 (End of standard support June 2023, EOL April 2028): 3.10 (updates: 3.10)
  • 20.04 (LTS until 2025): 3.16
  • 22.04 (LTS until 2027): 3.22
  • 22.10: 3.24
  • 23.04: 3.25

Fedora

  • 36 (EOL May 2023): 3.22 (updates: 3.26)
  • 37: 3.24 (updates: 3.26)
  • 38: 3.26

The biggest blocker is that we use an 18.04 image in our release workflow to support GLIBC 2.27. We'd either have to build a new CMake on that runner ourselves, or finally drop support for GLIBC 2.27 (20.04 has 2.29).

@dundargoc

This comment was marked as resolved.

@clason
Copy link
Member

clason commented Jun 12, 2023

I should probably also include cmake versions for some other popular distros.

https://repology.org/project/cmake/versions gotchu covered

@justinmk justinmk added the build building and installing Neovim using the provided scripts label Jun 12, 2023
@justinmk justinmk added this to the backlog milestone Jun 12, 2023
@dundargoc
Copy link
Member Author

I don't think we need to track backport/non-standard versions. I interpreted this issue to be about mainline/release distro versions only without any additional modifications. It is e.g. trivial to simply build latest cmake on any system.

@clason
Copy link
Member

clason commented Jun 13, 2023

Yup, just added that for the sake of completeness (and to prevent "but did you know you could install later versions manually?" comments).

dundargoc added a commit to dundargoc/neovim that referenced this issue Oct 16, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Oct 16, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Oct 17, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Nov 2, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Nov 3, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Nov 3, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 9, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 9, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 9, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 9, 2023
The benefits are primarily being able to transition from using
ExternalProject to FetchContent, which is more flexible and requires
less hacks than ExternalProject to work properly. Other various
quality-of-life features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 9, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 11, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 11, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 11, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 12, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 12, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 13, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

Reference: neovim#24004
dundargoc added a commit to dundargoc/neovim that referenced this issue Dec 14, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

This also removes broken `--version` generation as it does not work for
version 3.10 and 3.11 due to the `JOIN` generator expression.

Reference: neovim#24004
dundargoc added a commit that referenced this issue Dec 16, 2023
The benefits are primarily being able to use FetchContent, which allows
for a more flexible dependency handling. Other various quality-of-life
features such as `-B` and `-S` flags are also included.

This also removes broken `--version` generation as it does not work for
version 3.10 and 3.11 due to the `JOIN` generator expression.

Reference: #24004
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build building and installing Neovim using the provided scripts
Projects
None yet
Development

No branches or pull requests

3 participants