From: Thomas Huth <[email protected]>

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.

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()
 
-- 
2.52.0


Reply via email to