Message ID | 20220227223522.91937-12-wwcohen@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | 9p: Add support for darwin | expand |
On Sonntag, 27. Februar 2022 23:35:22 CET Will Cohen wrote: > From: Keno Fischer <keno@juliacomputing.com> > > To allow VirtFS on darwin, we need to check that pthread_fchdir_np is > available, which has only been available since macOS 10.12. > > Additionally, virtfs_proxy_helper is disabled on Darwin. This patch > series does not currently provide an implementation of the proxy-helper, > but this functionality could be implemented later on. > > Signed-off-by: Keno Fischer <keno@juliacomputing.com> > [Michael Roitzsch: - Rebase for NixOS] > Signed-off-by: Michael Roitzsch <reactorcontrol@icloud.com> > [Will Cohen: - Rebase to master] > Signed-off-by: Will Cohen <wwcohen@gmail.com> > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Paolo, could you have a look at this patch, please? It has changed quite a bit since your review. Best regards, Christian Schoenebeck > [Will Cohen: - Add check for pthread_fchdir_np to virtfs > - Add comments to patch commit > - Note that virtfs_proxy_helper does not work > on macOS > - Fully adjust meson virtfs error note to specify > macOS > - Rebase to master] > Signed-off-by: Will Cohen <wwcohen@gmail.com> > --- > fsdev/meson.build | 1 + > meson.build | 12 +++++++----- > 2 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/fsdev/meson.build b/fsdev/meson.build > index adf57cc43e..b632b66348 100644 > --- a/fsdev/meson.build > +++ b/fsdev/meson.build > @@ -7,6 +7,7 @@ fsdev_ss.add(when: ['CONFIG_FSDEV_9P'], if_true: files( > 'qemu-fsdev.c', > ), if_false: files('qemu-fsdev-dummy.c')) > softmmu_ss.add_all(when: 'CONFIG_LINUX', if_true: fsdev_ss) > +softmmu_ss.add_all(when: 'CONFIG_DARWIN', if_true: fsdev_ss) > > if have_virtfs_proxy_helper > executable('virtfs-proxy-helper', > diff --git a/meson.build b/meson.build > index 3f8dca2c7a..ba52ed9e9a 100644 > --- a/meson.build > +++ b/meson.build > @@ -1450,14 +1450,16 @@ dbus_display = get_option('dbus_display') \ > .allowed() > > have_virtfs = get_option('virtfs') \ > - .require(targetos == 'linux', > - error_message: 'virtio-9p (virtfs) requires Linux') \ > - .require(libattr.found() and libcap_ng.found(), > - error_message: 'virtio-9p (virtfs) requires libcap-ng-devel and libattr-devel') \ > + .require(targetos == 'linux' or targetos == 'darwin', > + error_message: 'virtio-9p (virtfs) requires Linux or macOS') \ > + .require(targetos == 'linux' or cc.has_function('pthread_fchdir_np'), > + error_message: 'virtio-9p (virtfs) on macOS requires the presence of pthread_fchdir_np') \ > + .require(targetos == 'darwin' or (libattr.found() and libcap_ng.found()), > + error_message: 'virtio-9p (virtfs) on Linux requires libcap-ng-devel and libattr-devel') \ > .disable_auto_if(not have_tools and not have_system) \ > .allowed() > > -have_virtfs_proxy_helper = have_virtfs and have_tools > +have_virtfs_proxy_helper = targetos != 'darwin' and have_virtfs and have_tools > > foreach k : get_option('trace_backends') > config_host_data.set('CONFIG_TRACE_' + k.to_upper(), true)
On Mon, Feb 28, 2022 at 8:11 AM Christian Schoenebeck < qemu_oss@crudebyte.com> wrote: > On Sonntag, 27. Februar 2022 23:35:22 CET Will Cohen wrote: > > From: Keno Fischer <keno@juliacomputing.com> > > > > To allow VirtFS on darwin, we need to check that pthread_fchdir_np is > > available, which has only been available since macOS 10.12. > > > > Additionally, virtfs_proxy_helper is disabled on Darwin. This patch > > series does not currently provide an implementation of the proxy-helper, > > but this functionality could be implemented later on. > > > > Signed-off-by: Keno Fischer <keno@juliacomputing.com> > > [Michael Roitzsch: - Rebase for NixOS] > > Signed-off-by: Michael Roitzsch <reactorcontrol@icloud.com> > > [Will Cohen: - Rebase to master] > > Signed-off-by: Will Cohen <wwcohen@gmail.com> > > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > > Paolo, could you have a look at this patch, please? It has changed quite a > bit > since your review. > > Best regards, > Christian Schoenebeck Yes. I probably should have noted that in the cover letter. The code style itself totally changed in this last version as well, but now conforms to the other changes made to HEAD during this last rebase. > > > [Will Cohen: - Add check for pthread_fchdir_np to virtfs > > - Add comments to patch commit > > - Note that virtfs_proxy_helper does not work > > on macOS > > - Fully adjust meson virtfs error note to specify > > macOS > > - Rebase to master] > > Signed-off-by: Will Cohen <wwcohen@gmail.com> > > --- > > fsdev/meson.build | 1 + > > meson.build | 12 +++++++----- > > 2 files changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/fsdev/meson.build b/fsdev/meson.build > > index adf57cc43e..b632b66348 100644 > > --- a/fsdev/meson.build > > +++ b/fsdev/meson.build > > @@ -7,6 +7,7 @@ fsdev_ss.add(when: ['CONFIG_FSDEV_9P'], if_true: files( > > 'qemu-fsdev.c', > > ), if_false: files('qemu-fsdev-dummy.c')) > > softmmu_ss.add_all(when: 'CONFIG_LINUX', if_true: fsdev_ss) > > +softmmu_ss.add_all(when: 'CONFIG_DARWIN', if_true: fsdev_ss) > > > > if have_virtfs_proxy_helper > > executable('virtfs-proxy-helper', > > diff --git a/meson.build b/meson.build > > index 3f8dca2c7a..ba52ed9e9a 100644 > > --- a/meson.build > > +++ b/meson.build > > @@ -1450,14 +1450,16 @@ dbus_display = get_option('dbus_display') \ > > .allowed() > > > > have_virtfs = get_option('virtfs') \ > > - .require(targetos == 'linux', > > - error_message: 'virtio-9p (virtfs) requires Linux') \ > > - .require(libattr.found() and libcap_ng.found(), > > - error_message: 'virtio-9p (virtfs) requires > libcap-ng-devel and libattr-devel') \ > > + .require(targetos == 'linux' or targetos == 'darwin', > > + error_message: 'virtio-9p (virtfs) requires Linux or > macOS') \ > > + .require(targetos == 'linux' or > cc.has_function('pthread_fchdir_np'), > > + error_message: 'virtio-9p (virtfs) on macOS requires the > presence of pthread_fchdir_np') \ > > + .require(targetos == 'darwin' or (libattr.found() and > libcap_ng.found()), > > + error_message: 'virtio-9p (virtfs) on Linux requires > libcap-ng-devel and libattr-devel') \ > > .disable_auto_if(not have_tools and not have_system) \ > > .allowed() > > > > -have_virtfs_proxy_helper = have_virtfs and have_tools > > +have_virtfs_proxy_helper = targetos != 'darwin' and have_virtfs and > have_tools > > > > foreach k : get_option('trace_backends') > > config_host_data.set('CONFIG_TRACE_' + k.to_upper(), true) > > >
diff --git a/fsdev/meson.build b/fsdev/meson.build index adf57cc43e..b632b66348 100644 --- a/fsdev/meson.build +++ b/fsdev/meson.build @@ -7,6 +7,7 @@ fsdev_ss.add(when: ['CONFIG_FSDEV_9P'], if_true: files( 'qemu-fsdev.c', ), if_false: files('qemu-fsdev-dummy.c')) softmmu_ss.add_all(when: 'CONFIG_LINUX', if_true: fsdev_ss) +softmmu_ss.add_all(when: 'CONFIG_DARWIN', if_true: fsdev_ss) if have_virtfs_proxy_helper executable('virtfs-proxy-helper', diff --git a/meson.build b/meson.build index 3f8dca2c7a..ba52ed9e9a 100644 --- a/meson.build +++ b/meson.build @@ -1450,14 +1450,16 @@ dbus_display = get_option('dbus_display') \ .allowed() have_virtfs = get_option('virtfs') \ - .require(targetos == 'linux', - error_message: 'virtio-9p (virtfs) requires Linux') \ - .require(libattr.found() and libcap_ng.found(), - error_message: 'virtio-9p (virtfs) requires libcap-ng-devel and libattr-devel') \ + .require(targetos == 'linux' or targetos == 'darwin', + error_message: 'virtio-9p (virtfs) requires Linux or macOS') \ + .require(targetos == 'linux' or cc.has_function('pthread_fchdir_np'), + error_message: 'virtio-9p (virtfs) on macOS requires the presence of pthread_fchdir_np') \ + .require(targetos == 'darwin' or (libattr.found() and libcap_ng.found()), + error_message: 'virtio-9p (virtfs) on Linux requires libcap-ng-devel and libattr-devel') \ .disable_auto_if(not have_tools and not have_system) \ .allowed() -have_virtfs_proxy_helper = have_virtfs and have_tools +have_virtfs_proxy_helper = targetos != 'darwin' and have_virtfs and have_tools foreach k : get_option('trace_backends') config_host_data.set('CONFIG_TRACE_' + k.to_upper(), true)