"Building from source" instructions are outdated

### Describe the issue linked to the documentation

https://scikit-learn.org/stable/developers/advanced_installation.html#building-from-source seems to be a few years old, and doesn't leverage Meson. https://scikit-learn.org/stable/developers/advanced_installation.html#building-with-meson states that Meson is experimental, but it seems to be required on `main`. If not installed, I get:

```bash
(sklearn-dev) deepyaman@deepyaman-mac scikit-learn % pip install -v --no-use-pep517 --no-build-isolation -e .                  
Using pip 24.0 from /opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip (python 3.9)
Obtaining file:///Users/deepyaman/github/scikit-learn/scikit-learn
ERROR: Disabling PEP 517 processing is invalid: project specifies a build backend of mesonpy in pyproject.toml
(sklearn-dev) deepyaman@deepyaman-mac scikit-learn % pip install -v --no-build-isolation -e . 
Using pip 24.0 from /opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip (python 3.9)
Obtaining file:///Users/deepyaman/github/scikit-learn/scikit-learn
  Running command Checking if build backend supports build_editable
  Checking if build backend supports build_editable ... done
ERROR: Exception:
Traceback (most recent call last):
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 245, in wrapper
    return func(self, options, args)
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 377, in run
    requirement_set = resolver.resolve(
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 76, in resolve
    collected = self.factory.collect_root_requirements(root_reqs)
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 534, in collect_root_requirements
    reqs = list(
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 490, in _make_requirements_from_install_req
    cand = self._make_base_candidate_from_link(
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 207, in _make_base_candidate_from_link
    self._editable_candidate_cache[link] = EditableCandidate(
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 315, in __init__
    super().__init__(
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 222, in _prepare
    dist = self._prepare_distribution()
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 325, in _prepare_distribution
    return self._factory.preparer.prepare_editable_requirement(self._ireq)
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 696, in prepare_editable_requirement
    dist = _get_prepared_distribution(
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py", line 67, in prepare_distribution_metadata
    self.req.prepare_metadata()
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/req/req_install.py", line 571, in prepare_metadata
    and self.supports_pyproject_editable()
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_internal/req/req_install.py", line 257, in supports_pyproject_editable
    return "build_editable" in self.pep517_backend._supported_features()
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 153, in _supported_features
    return self._call_hook('_supported_features', {})
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 321, in _call_hook
    raise BackendUnavailable(data.get('traceback', ''))
pip._vendor.pyproject_hooks._impl.BackendUnavailable: Traceback (most recent call last):
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
    obj = import_module(mod_path)
  File "/opt/miniconda3/envs/sklearn-dev/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'mesonpy'
```

### Suggest a potential alternative/fix

* State the need to install `meson-python` and `ninja`
* Drop the `--no-use-pep-517` flag, else you get `ERROR: Disabling PEP 517 processing is invalid: project specifies a build backend of mesonpy in pyproject.toml`
* Generally update instructions? Recommendation is Python 3.9, which will soon exit NEP 29 support window

I can help update the instructions if so desired, but I don't have experience with Meson, and I only know what's working for me on an M1 Mac, hence I opened an issue first.

COMMENT:
> Indeed. The documentation has been fixed in the development/preview on the webpage https://scikit-learn.org/dev/developers/advanced_installation.html#building-from-source but the stable version hasn't been updated yet. This will happen when we release v1.5, which is going to happen soon. So while it is annoying to have the stable page out of date, I think we should wait for the release instead of backporting things.

Thanks for the response; I'm embarrassed I didn't check `dev`!

Labels: Documentation, Needs Triage