Maintain Haiku support

Bug #1715203 reported by kallisti5
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

It was pointed out that the 2.10 release notes are pushing to drop Haiku support. The qemu port is currently working as-is under Haiku.

Was there a reason this was recommended? Is there anything Haiku can do to keep it from being dropped?

We're working on a docker container to cross-compile rust-lang for Haiku, could this be of some use to qemu when complete?

Revision history for this message
Peter Maydell (pmaydell) wrote : Re: [Qemu-devel] [Bug 1715203] [NEW] Maintain Haiku support

On 5 September 2017 at 18:55, kallisti5 <email address hidden> wrote:
> It was pointed out that the 2.10 release notes are pushing to drop Haiku
> support. The qemu port is currently working as-is under Haiku.
>
> Was there a reason this was recommended? Is there anything Haiku can do
> to keep it from being dropped?

Basically we don't want to try to support host systems where we
have no access to hardware that will let us compile and run
the test suite, and where there's nobody interacting with us
upstream to help fix issues that are Haiku related.

If there's genuinely a community of Haiku QEMU users out there
who want to help us maintain the support in the QEMU codebase that's
great. What we don't want is to be carrying around code we can't
test and where we don't seem to have anybody using it. (For instance
we're about to drop support for AIX...)

> We're working on a docker container to cross-compile rust-lang for
> Haiku, could this be of some use to qemu when complete?

Cross-compilation won't let us run the test suite.

thanks
-- PMM

Revision history for this message
kallisti5 (kallisti5) wrote :

Haiku recently got a virtio driver, so running a Haiku system in cloud infrastructure seems possible now. (I've personally run it on vultr.com) Does QEMU have some infrastructure available so we can stand up a x86_64 system?

Revision history for this message
Peter Maydell (pmaydell) wrote : Re: [Qemu-devel] [Bug 1715203] Re: Maintain Haiku support

On 5 September 2017 at 19:14, kallisti5 <email address hidden> wrote:
> Haiku recently got a virtio driver, so running a Haiku system in cloud
> infrastructure seems possible now. (I've personally run it on vultr.com)
> Does QEMU have some infrastructure available so we can stand up a x86_64
> system?

Nope. We would be looking either for ssh login on a system somebody
else admins, or detailed instructions on how to set up a VM for it,
like the ones we have for BSD at https://wiki.qemu.org/index.php/Hosts/BSD

thanks
-- PMM

Revision history for this message
kallisti5 (kallisti5) wrote :

Contacting our board of directors to see if I can get a VM deployed at Vultr. I'll keep this ticket updated.

Revision history for this message
kallisti5 (kallisti5) wrote :

We're purchasing some new hardware, once we get it set up we'll setup a x86_64 Haiku machine to build qemu.

Revision history for this message
Thomas Huth (th-huth) wrote :

Is there any update on this? Could you provide a machine with ssh login to the QEMU project where QEMU could be built and tested on Haiku? Or can Haiku be installed automatically without graphical UI interactions? In that case, would it be feasible that you provide a VM setup for our tests/vm/ files in QEMU?

Changed in qemu:
status: New → Incomplete
Revision history for this message
kallisti5 (kallisti5) wrote :

Hi!

Sorry, I forgot about this one.

Haiku has a lot of options.. we can setup a vm image if needed to move this along.
Haiku is graphical, but has ssh and all the standard tools.

Vagrant also supports Haiku and provides some automation around it.
https://app.vagrantup.com/boxes/search?utf8=%E2%9C%93&sort=downloads&provider=&q=haiku-os

Let me check out tests/vm/ to see if I can PR something.

Revision history for this message
kallisti5 (kallisti5) wrote :
Download full text (10.3 KiB)

ok.. a Haiku vm for QEMU is WIP here:

https://github.com/kallisti5/qemu/tree/haiku-test-vm

```
$ ./haiku.x86_64 --build-image --image /tmp/haiku.img
### Downloading disk image ...
### Preparing disk image ...
./box.img
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repocache-2 [4.25 KiB]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
100% repocache-2 [1.26 MiB]
Validating checksum for HaikuPorts...done.
The following changes will be made:
  in system:
    install package bzip2_devel-1.0.8-1 from repository HaikuPorts
    install package libgpg_error_devel-1.36-1 from repository HaikuPorts
    install package gettext-0.19.8.1-7 from repository HaikuPorts
    install package ncurses6_devel-6.2-1 from repository HaikuPorts
    install package libtasn1_devel-4.15.0-1 from repository HaikuPorts
    install package capstone-4.0.2-1 from repository HaikuPorts
    install package dtc-1.4.7-2 from repository HaikuPorts
    install package libffi_devel-3.2.1-6 from repository HaikuPorts
    install package libpcre_devel-8.44-1 from repository HaikuPorts
    install package libiconv_devel-1.16-1 from repository HaikuPorts
    install package lzo-2.10-2 from repository HaikuPorts
    install package nettle-3.5.1-1 from repository HaikuPorts
    install package pixman-0.38.4-1 from repository HaikuPorts
    install package snappy-1.1.7-2 from repository HaikuPorts
    install package libssh2-1.9.0-2 from repository HaikuPorts
    install package libusb-1.0.23-1 from repository HaikuPorts
    install package p11_kit-0.23.18.1-1 from repository HaikuPorts
    install package libunistring-0.9.10-1 from repository HaikuPorts
    install package libidn2-2.0.5-1 from repository HaikuPorts
    install package libtool_libltdl-2.4.6-2 from repository HaikuPorts
    install package file_data-5.38-1 from repository HaikuPorts
    install package libgcrypt_devel-1.8.5-1 from repository HaikuPorts
    install package glib2-2.62.0-3 from repository HaikuPorts
    install package capstone_devel-4.0.2-1 from repository HaikuPorts
    install package dtc_devel-1.4.7-2 from repository HaikuPorts
    install package lzo_devel-2.10-2 from repository HaikuPorts
    install package nettle_devel-3.5.1-1 from repository HaikuPorts
    install package pixman_devel-0.38.4-1 from repository HaikuPorts
    install package snappy_devel-1.1.7-2 from repository HaikuPorts
    install package libssh2_devel-1.9.0-2 from repository HaikuPorts
    install package libusb_devel-1.0.23-1 from repository HaikuPorts
    install package p11_kit_devel-0.23.18.1-1 from repository HaikuPorts
    install package gnutls-3.6.10-2 from repository HaikuPorts
    install package libsdl2-2.0.10-1 from repository HaikuPorts
    install package file-5.38-1 from repository HaikuPorts
    install package gnutls_devel-3.6.10-2 from repository HaikuPorts
    install package libsdl2_devel-2.0.10-1 from repository HaikuPorts
    install package python3-3.7.7-2 from repository HaikuPorts
    install package glib2_devel-2.62.0-3 from repository HaikuPorts
Continue? [yes/no] (yes) : yes
100% bzip2_devel-1.0.8-1-x86_64.hp...

Revision history for this message
kallisti5 (kallisti5) wrote :

$ ./haiku.x86_64 --verbose --image /tmp/haiku.img uname
Haiku

./haiku.x86_64 --verbose --image /tmp/haiku.img "gcc -v"
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/lto-wrapper
Target: x86_64-unknown-haiku
Configured with: /sources/gcc-8.3.0/configure --build=x86_64-unknown-haiku --prefix=/packages/gcc-8.3.0_2019_05_24-7/.self/develop/tools --libexecdir=/packages/gcc-8.3.0_2019_05_24-7/.self/develop/tools/lib --mandir=/packages/gcc-8.3.0_2019_05_24-7/.self/documentation/man --docdir=/packages/gcc-8.3.0_2019_05_24-7/.self/documentation/packages/gcc --enable-threads=posix --disable-nls --enable-shared --with-gnu-ld --with-gnu-as --enable-version-specific-runtime-libs --enable-languages=c,c++,fortran,objc --enable-lto --enable-frame-pointer --with-pkgversion=2019_05_24 --enable-__cxa-atexit --with-system-zlib --enable-checking=release --with-bug-url=http://dev.haiku-os.org/ --with-default-libstdcxx-abi=gcc4-compatible --enable-libssp --disable-multilib
Thread model: posix
gcc version 8.3.0 (2019_05_24)

Revision history for this message
kallisti5 (kallisti5) wrote :
Download full text (4.6 KiB)

and away we go..

./haiku.x86_64 --image /tmp/haiku.img --build-qemu /home/kallisti5/Code/qemu
Submodule 'dtc' (https://git.qemu.org/git/dtc.git) registered for path 'dtc'
Submodule 'slirp' (https://git.qemu.org/git/libslirp.git) registered for path 'slirp'
Submodule 'meson' (https://github.com/mesonbuild/meson/) registered for path 'meson'
Submodule 'ui/keycodemapdb' (https://git.qemu.org/git/keycodemapdb.git) registered for path 'ui/keycodemapdb'
Submodule 'tests/fp/berkeley-softfloat-3' (https://git.qemu.org/git/berkeley-softfloat-3.git) registered for path 'tests/fp/berkeley-softfloat-3'
Submodule 'tests/fp/berkeley-testfloat-3' (https://git.qemu.org/git/berkeley-testfloat-3.git) registered for path 'tests/fp/berkeley-testfloat-3'
cross containers no

NOTE: guest cross-compilers enabled: cc
The Meson build system
Version: 0.55.1
Source dir: /boot/system/cache/tmp/qemu-test.oCwd7u/src
Build dir: /boot/system/cache/tmp/qemu-test.oCwd7u/build
Build type: native build
Project name: qemu
Project version: 5.1.50
C compiler for the host machine: cc (gcc 8.3.0 "cc (2019_05_24) 8.3.0")
C linker for the host machine: cc ld.bfd 2.31.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
../src/meson.build:10: WARNING: Module unstable-keyval has no backwards or forwards compatibility and might not exist in future releases.
Program sh found: YES
Program python3 found: YES (/boot/system/bin/python3)
C++ compiler for the host machine: c++ (gcc 8.3.0 "c++ (2019_05_24) 8.3.0")
C++ linker for the host machine: c++ ld.bfd 2.31.1
Configuring ninjatool using configuration
Library m found: YES
Library util found: NO
Library posix_error_mapper found: YES
Library network found: YES
Library bsd found: YES
Found pkg-config: /boot/system/bin/pkg-config (0.29.2)
Run-time dependency pixman-1 found: YES 0.38.4
Library aio found: NO
Run-time dependency zlib found: YES 1.2.11
Run-time dependency xkbcommon found: NO (tried pkgconfig)
Library rt found: NO
Run-time dependency sdl2 found: YES 2.0.10
Run-time dependency sdl2_image found: NO (tried pkgconfig)
Run-time dependency libpng found: YES 1.6.37
Has header "jpeglib.h" : YES
.
.
/boot/system/cache/tmp/qemu-test.oCwd7u/src/slirp/src/tftp.c:113:50: error: 'O_BINARY' undeclared (first use in this function); did you mean 'L_INCR'?
         spt->fd = open(spt->filename, O_RDONLY | O_BINARY);
                                                  ^~~~~~~~
                                                  L_INCR
/boot/system/cache/tmp/qemu-test.oCwd7u/src/slirp/src/tftp.c:113:50: note: each undeclared identifier is reported only once for each function it appears in
Makefile:45: recipe for target '/boot/system/cache/tmp/qemu-test.oCwd7u/build/slirp/src/tftp.o' failed
make[1]: *** [/boot/system/cache/tmp/qemu-test.oCwd7u/build/slirp/src/tftp.o] Error 1
make[1]: Leaving directory '/boot/system/cache/tmp/qemu-test.oCwd7u/src/slirp'
make[1]: *** Waiting for unfinished jobs....
make[1]: Entering directory '/boot/system/cache/tmp/qemu-test.oCwd7u/src/slirp'
  CC /boot/system/cache/tmp/qemu-test.oCwd7u/build/slirp/src/util.o
make[1]: Leaving directory '/boot/system/cache/tmp/qemu-test.oCwd7u/src/slirp'
make[1]: Entering directo...

Read more...

Thomas Huth (th-huth)
Changed in qemu:
status: Incomplete → Confirmed
Revision history for this message
kallisti5 (kallisti5) wrote :

A patch for this work has been posted to the qemu-dev ML.

Revision history for this message
Thomas Huth (th-huth) wrote :

https://git.qemu.org/?p=qemu.git;a=commitdiff;h=9fc33bf4e1d694225
... the test suite is still failing, but at least we can compile test Haiku now. Thanks!

Changed in qemu:
status: Confirmed → Fix Committed
Thomas Huth (th-huth)
Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.