Build failure under Termux: can not execute sklearn/_build_utils/version.py

### Describe the bug

When attempting to install the newest (and older) versions of scikit-learn-1.6.dev0 using regular pip install, the installation fails due to a missing version.py file. This issue occurs on an Android system using Termux.
Environment details:
OS: Linux localhost 4.14.186+ (Android)
Architecture: aarch64
Python: 3.11
The error occurs during the Meson build process, which tries to execute a non-existent file:
/data/data/com.termux/files/home/downloads/scikit-learn/sklearn/_build_utils/version.py
A workaround patch has been developed to address this issue:
```
#!/bin/bash

# Navigate to the scikit-learn directory, e.g.:
cd ~/downloads/scikit-learn

# Extract version from pyproject.toml and remove "dev" suffix
VERSION=$(grep 'version =' pyproject.toml | sed 's/version = "\(.*\)"/\1/' | sed 's/\.dev0//')

# Create the directory if it doesn't exist
mkdir -p sklearn/_build_utils

# Create the version.py file with the correct content
cat << EOF > sklearn/_build_utils/version.py
#!/usr/bin/env python
print('${VERSION}')
EOF

# Make the file executable
chmod +x sklearn/_build_utils/version.py

echo "Created sklearn/_build_utils/version.py with version ${VERSION}"
```
This patch:
- Extracts the version number from pyproject.toml
- Removes the "dev" suffix
- Creates the missing version.py file with a generic Python shebang
- Makes the file executable

After applying this patch, the Meson build process completes successfully, and the installation can proceed: 
```
cpu family: aarch64
Host machine cpu: aarch64
Compiler for C supports arguments -Wno-unused-but-set-variable: YE
Compiler for C supports arguments -Wno-unused-function: YES
Compiler for C supports arguments -Wno-conversion: YES
Compiler for C supports arguments -Wno-misleading-indentation: YES
Library m found: YES
Program python3 found: YES (/data/data/com.termux/files/usr/bin/python3.11)
Run-time dependency OpenMP for c found: YES 5.1
Found pkg-config: YES (/data/data/com.termux/files/usr/bin/pkg-config) 0.29.2
Run-time dependency python found: YES 3.11    Build targets in project: 111
Found ninja-1.11.1.git.kitware.jobserver-1 ...
```
and:
```
Successfully installed scikit-learn-1.6.dev0  ~/downloads/scikit-learn $
```

### Steps/Code to Reproduce

pip install -U -v scikit-learn

### Expected Results

.

### Actual Results

.

### Versions

```shell
scikit-learn-1.6.dev0, and older
```

COMMENT:
FYI, after the fix:
(downlading all via git clone etc). 
```
 Running command Preparing metadata (pyproject.toml)
  + meson setup /data/data/com.termux/files/home/downloads/scikit-learn /data/data/com.termux/files/home/downloads/scikit-learn/.mesonpy-1hzjaqq3 -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=/data/data/com.termux/files/home/downloads/scikit-learn/.mesonpy-1hzjaqq3/meson-python-native-file.ini
  The Meson build system
  Version: 1.4.1
  Source dir: /data/data/com.termux/files/home/downloads/scikit-learn
  Build dir: /data/data/com.termux/files/home/downloads/scikit-learn/.mesonpy-1hzjaqq3
  Build type: native build
  Project name: scikit-learn
  Project version: 1.6
  C compiler for the host machine: clang (clang 18.1.8 "clang version 18.1.8")
  C linker for the host machine: clang ld.lld 18.1.8
  C++ compiler for the host machine: clang++ (clang 18.1.8 "clang version 18.1.8")
  C++ linker for the host machine: clang++ ld.lld 18.1.8
  Cython compiler for the host machine: cython (cython 3.0.10)
  Host machine cpu family: aarch64
  Host machine cpu: aarch64
  Compiler for C supports arguments -Wno-unused-but-set-variable: YES
  Compiler for C supports arguments -Wno-unused-function: YES
  Compiler for C supports arguments -Wno-conversion: YES
  Compiler for C supports arguments -Wno-misleading-indentation: YES
  Library m found: YES
  Program python found: YES (/data/data/com.termux/files/usr/bin/python3.11)
  Run-time dependency OpenMP for c found: YES 5.1
  Found pkg-config: YES (/data/data/com.termux/files/usr/bin/pkg-config) 0.29.2
  Run-time dependency python found: YES 3.11
  Build targets in project: 111

  scikit-learn 1.6

    User defined options
      Native files: /data/data/com.termux/files/home/downloads/scikit-learn/.mesonpy-1hzjaqq3/meson-python-native-file.ini
      buildtype   : release
      b_ndebug    : if-release
      b_vscrt     : md

  Found samurai-1.9 at /data/data/com.termux/files/usr/bin/samu
  + /data/data/com.termux/files/usr/bin/samu
  [1/249] Compiling C++ object sklearn/svm/libliblinear-skl.a.p/src_liblinear_tron.cpp.o
... 
```
so it works. 

My use case? Banal. Many of these require it:

`Required-by: audiolm-pytorch, hdbscan, librosa, lm-eval, mlflow, nemo-toolkit, pyannote.metrics, pyannote.pipeline, pynndescent, pytorch-metric-learning, sentence-transformers, seqeval, shap, top2vec, TTS, umap-learn ...`  

And when trying to install it via their requirements it errors out as above. (Only in Termux - Ubuntu etc work fine as they use ready compiled bits, so no meson.) I have a vague recollection that the older scikit learn versions, possibly pre 1.5 worked fine there.

Labels: Build / CI, Low Priority