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

Migration for Boost 1.85 #3407

Open
wants to merge 1 commit into
base: develop-6
Choose a base branch
from

Conversation

arkamar
Copy link

@arkamar arkamar commented Feb 14, 2025

Gentoo users cannot compile MariaDB with columnstore because the oldest available Boost version in Gentoo is 1.85, see https://bugs.gentoo.org/932735. Migration seems to be straightforward, however, I noticed PR #3394, therefore, I am not sure, if this change is feasible for others.

I have set the base to develop-6 because I did the migration for Mariadb 10.6.21 and 10.11.11, both versions compile and pass tests. The change seems to apply to develop cleanly as well, but I didn't test it properly yet.


Boost 1.85 removed some deprecated code in filesystem module which is still used in columnstore:

  • The boost/filesystem/convenience.hpp was removed but columnstore does not use any functionality from that file except indirect includes. Therefore this include is removed or replaced with more general boost/filesystem.hpp. The convenience.hpp header file was deprecated in filesystem V3 introduced in Boost 1.46.0.
  • normalize method was removed and users are suggested to replace it with lexically_normal method, which was introduced in Boost 1.60.0.
  • The copy_option was removed in favor of copy_options (note the trailing 's'), but enum values were renamed. Namely, fail_if_exists is replaced with none and overwrite_if_exists is replaced with overwrite_existing. The copy_options was introduced in Boost 1.74.0

Boost 1.85 removed some deprecated code in filesystem module which is
still used in columnstore:

- The boost/filesystem/convenience.hpp was removed but columnstore does
  not use any functionality from that file except indirect includes.
  Therefore this include is removed or replaced with more general
  boost/filesystem.hpp. The convenience.hpp header file was deprecated
  in filesystem V3 introduced in Boost 1.46.0.

- `normalize` method was removed and users are suggested to replace it
  with `lexically_normal` method, which was introduced in Boost 1.60.0.

- The `copy_option` was removed in favor of `copy_options` (note the
  trailing 's'), but enum values were renamed. Namely, `fail_if_exists`
  is replaced with `none` and `overwrite_if_exists` is replaced with
  `overwrite_existing`. The `copy_options` was introduced in Boost 1.74.0
@drrtuy
Copy link
Collaborator

drrtuy commented Feb 14, 2025

Thx for the contribution @arkamar.
Pardon my ignorance which MDB versions do you now have in Gentoo? The actual Columnstore that comes with MariaDB > 11.1 uses a local version of boost(currently at 1.84 and defined here).
Given that Columnstore depends on system boost I assume this must be 10.6 but I want to double check this fact. Could you confirm the MariaDB version we are talking about?

@arkamar
Copy link
Author

arkamar commented Feb 14, 2025

We are talking about MariaDB 10.6 and 10.11 with respect to this PR.

I will apply this patch locally. My main intention with this PR is to increase awareness that the Boost 1.85 dropped some deprecated code. Maybe other downstreams might find this PR useful as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants