[Qemu-devel] [PATCH] char: Enable build of pty on macOS

Roman Bolshakov posted 1 patch 7 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180821172324.29331-1-r.bolshakov@yadro.com
Test docker-clang@ubuntu failed
Test checkpatch passed
chardev/char-pty.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH] char: Enable build of pty on macOS
Posted by Roman Bolshakov 7 years, 2 months ago
For some reason __APPLE__ was not checked in pty code. pty chardev
should be available on macOS, according to man page.

Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
---
 chardev/char-pty.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chardev/char-pty.c b/chardev/char-pty.c
index 68fd4e20c3..cb00257ebe 100644
--- a/chardev/char-pty.c
+++ b/chardev/char-pty.c
@@ -33,7 +33,7 @@
 
 #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__)      \
     || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
-    || defined(__GLIBC__)
+    || defined(__GLIBC__) || defined(__APPLE__)
 
 typedef struct {
     Chardev parent;
-- 
2.15.2 (Apple Git-101.1)


Re: [Qemu-devel] [PATCH] char: Enable build of pty on macOS
Posted by Eric Blake 7 years, 2 months ago
On 08/21/2018 12:23 PM, Roman Bolshakov wrote:
> For some reason __APPLE__ was not checked in pty code. pty chardev
> should be available on macOS, according to man page.
> 
> Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
> ---
>   chardev/char-pty.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/chardev/char-pty.c b/chardev/char-pty.c
> index 68fd4e20c3..cb00257ebe 100644
> --- a/chardev/char-pty.c
> +++ b/chardev/char-pty.c
> @@ -33,7 +33,7 @@
>   
>   #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__)      \
>       || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
> -    || defined(__GLIBC__)
> +    || defined(__GLIBC__) || defined(__APPLE__)
> 

Rather than maintaining an ever-growing fragile list of platforms, could 
we instead replace this whole mess with a single define determined at 
configure time based on a feature test?

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [PATCH] char: Enable build of pty on macOS
Posted by Peter Maydell 7 years, 2 months ago
On 21 August 2018 at 18:23, Roman Bolshakov <r.bolshakov@yadro.com> wrote:
> For some reason __APPLE__ was not checked in pty code. pty chardev
> should be available on macOS, according to man page.
>
> Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
> ---
>  chardev/char-pty.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/chardev/char-pty.c b/chardev/char-pty.c
> index 68fd4e20c3..cb00257ebe 100644
> --- a/chardev/char-pty.c
> +++ b/chardev/char-pty.c
> @@ -33,7 +33,7 @@
>
>  #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__)      \
>      || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
> -    || defined(__GLIBC__)
> +    || defined(__GLIBC__) || defined(__APPLE__)

We should fix this by figuring out what the code is actually looking
for (ie what OS functions), having a configure test for those
functions, and dropping the big long list of OS ifdefs. Otherwise
we've just got exactly the same problem for the next unix-ish
OS that comes along...

thanks
-- PMM

Re: [Qemu-devel] [PATCH] char: Enable build of pty on macOS
Posted by Paolo Bonzini 7 years, 2 months ago
On 21/08/2018 20:29, Peter Maydell wrote:
>>
>>  #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__)      \
>>      || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
>> -    || defined(__GLIBC__)
>> +    || defined(__GLIBC__) || defined(__APPLE__)
> We should fix this by figuring out what the code is actually looking
> for (ie what OS functions), having a configure test for those
> functions, and dropping the big long list of OS ifdefs. Otherwise
> we've just got exactly the same problem for the next unix-ish
> OS that comes along...

It's really looking only for qemu_openpty_raw, which in turn is compiled
for all CONFIG_POSIX systems.  Because the file is already compiled for
CONFIG_POSIX only, the #ifdef is a legacy of the time before
chardev/char-pty.c was split out of qemu-char.c.  It can be removed.

Paolo