On Thu, 22 Jan 2026 at 15:01, Thomas Huth <[email protected]> wrote:
> The haiku VM bitrotted in the course of time. Make sure to use the
> latest version of the repositories here and install missing pieces
> like "pip" and "tomli" now.
>
> We also have to add a little "hack" to our configure script: For some
> weird reasons, the meson binary shows up as pyvenv/non-packaged/bin/meson
> here, and not in the expected location pyvenv/bin/meson. Use a symlink
> to fix it.

   -> 
https://github.com/haiku/haiku/blob/master/docs/user/storage/storageintro.dox

* Packages not available in the HPKG format are installed under the
"/non-packaged/" directory, it seems.

> For this new version, we also have to compile with "-pie", otherwise
> the linker complains about bad relocations in the object files, so
> allow compiling with PIE in the configure script now.
>
> Signed-off-by: Thomas Huth <[email protected]>
> ---
>  configure             | 8 +++++++-
>  tests/vm/haiku.x86_64 | 4 ++++
>  2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 9d7fd13a98b..587cd2a2fe6 100755
> --- a/configure
> +++ b/configure
> @@ -967,6 +967,12 @@ mkvenv="$python ${source_path}/python/scripts/mkvenv.py"
>  $mkvenv ensuregroup --dir "${source_path}/python/wheels" \
>       ${source_path}/pythondeps.toml meson || exit 1
>
> +# For some unknown reason, the meson binary shows up in the wrong
> +# folder on Haiku. Use a symlink to fix it.
> +if test "$host_os" = "haiku" && test ! -e pyvenv/bin/meson ; then
> +    ln -s "$PWD"/pyvenv/non-packaged/bin/meson pyvenv/bin/meson
> +fi
> +
>  # At this point, we expect Meson to be installed and available.
>  # We expect mkvenv or pip to have created pyvenv/bin/meson for us.
>  # We ignore PATH completely here: we want to use the venv's Meson
> @@ -1068,7 +1074,7 @@ static THREAD int tls_var;
>  int main(void) { return tls_var; }
>  EOF
>
> -if test "$host_os" = windows || test "$host_os" = haiku; then
> +if test "$host_os" = windows ; then
>    if test "$pie" = "yes"; then
>      error_exit "PIE not available due to missing OS support"
>    fi
> diff --git a/tests/vm/haiku.x86_64 b/tests/vm/haiku.x86_64
> index 71cf75a9a3e..529283c39f6 100755
> --- a/tests/vm/haiku.x86_64
> +++ b/tests/vm/haiku.x86_64
> @@ -78,6 +78,8 @@ class HaikuVM(basevm.BaseVM):
>          "devel:libusb_1.0",
>          "devel:libz",
>          "ninja",
> +        "pip",
> +        "tomli_python310",
>      ]
>
>      BUILD_SCRIPT = """
> @@ -109,6 +111,8 @@ class HaikuVM(basevm.BaseVM):
>          self.wait_ssh(wait_root=True, cmd="exit 0")
>
>          # Install packages
> +        self.ssh_root("echo yes | pkgman add-repo 
> https://eu.hpkg.haiku-os.org/haiku/r1beta5/$(getarch)/current")
> +        self.ssh_root("echo yes | pkgman add-repo 
> https://eu.hpkg.haiku-os.org/haikuports/r1beta5/$(getarch)/current")
>          self.ssh_root("pkgman install -y %s" % " ".join(self.requirements))
>          self.graceful_shutdown()
>
> --

* Instead of creating a symlink for meson, could we add
'/non-packaged/' directory to an appropriate PATH variable, so that
all such binaries are accessible from 'non-packaged/bin/' directory?
That way we avoid creating symlinks for many /non-packaged/ binaries.

* Otherwise change looks okay.
Reviewed-by: Prasad Pandit <[email protected]>

Thank you.
---
  - Prasad


Reply via email to