All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] tests: Do not include lutil on SunOS
@ 2017-09-03 16:49 Kamil Rytarowski
  2017-09-04  9:32 ` Peter Maydell
  2017-09-11 17:16 ` [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure Kamil Rytarowski
  0 siblings, 2 replies; 9+ messages in thread
From: Kamil Rytarowski @ 2017-09-03 16:49 UTC (permalink / raw)
  To: qemu-trivial; +Cc: qemu-devel, Kamil Rytarowski

This fixes build on SmartOS (Joyent).

Patch cherry-picked from pkgsrc by jperkin (Joyent).

Signed-off-by: Kamil Rytarowski <n54@gmx.com>
---
 tests/Makefile.include | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/Makefile.include b/tests/Makefile.include
index f08b7418f0..0e5e6cb9b8 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -810,8 +810,10 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
 	rmdir $(INITRD_WORK_DIR)
 
 ifeq ($(CONFIG_POSIX),y)
+ifneq ($(CONFIG_SOLARIS),y)
 LIBS += -lutil
 endif
+endif
 
 # QTest rules
 
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] tests: Do not include lutil on SunOS
  2017-09-03 16:49 [Qemu-devel] [PATCH] tests: Do not include lutil on SunOS Kamil Rytarowski
@ 2017-09-04  9:32 ` Peter Maydell
  2017-09-04 23:46   ` Kamil Rytarowski
  2017-09-11 17:16 ` [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure Kamil Rytarowski
  1 sibling, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2017-09-04  9:32 UTC (permalink / raw)
  To: Kamil Rytarowski; +Cc: QEMU Trivial, QEMU Developers

On 3 September 2017 at 17:49, Kamil Rytarowski <n54@gmx.com> wrote:
> This fixes build on SmartOS (Joyent).
>
> Patch cherry-picked from pkgsrc by jperkin (Joyent).
>
> Signed-off-by: Kamil Rytarowski <n54@gmx.com>
> ---
>  tests/Makefile.include | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index f08b7418f0..0e5e6cb9b8 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -810,8 +810,10 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
>         rmdir $(INITRD_WORK_DIR)
>
>  ifeq ($(CONFIG_POSIX),y)
> +ifneq ($(CONFIG_SOLARIS),y)
>  LIBS += -lutil
>  endif
> +endif

I don't object to this patch in principle, but I don't think
this is the best way to fix the underlying problem.

My assumption is that the issue is that Solaris doesn't
have a -lutil (it's helpful to quote the linker or
compiler error message for this kind of patch to clarify
what the failure is that we're trying to fix).

It looks like we use libutil here for openpty, which
is used in the test-char test. But the condition we're
using in tests/Makefile.include isn't the same as the
one we used to decide whether to add -lutil to the
emulator binary link line, which is in configure:

if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
        "$aix" != "yes" -a "$haiku" != "yes" ; then
    libs_softmmu="-lutil $libs_softmmu"
fi

So I think I'd prefer it if we have:
 * a configure test for "is openpty() in libutil"
 * use that to determine whether to add -lutil to
   libs_softmmu and to the libs for tests, rather than
   doing OS-specific tests

Q: does Solaris still not have an openpty() implementation?
Currently we have a local implementation in util/qemu-openpty.c,
but if that workaround is only needed in old Solaris we don't
support any more we could perhaps drop it.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] tests: Do not include lutil on SunOS
  2017-09-04  9:32 ` Peter Maydell
@ 2017-09-04 23:46   ` Kamil Rytarowski
  2017-09-05  9:16     ` Peter Maydell
  0 siblings, 1 reply; 9+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 23:46 UTC (permalink / raw)
  To: Peter Maydell; +Cc: QEMU Trivial, QEMU Developers, Jonathan Perkin

[-- Attachment #1: Type: text/plain, Size: 2460 bytes --]

On 04.09.2017 11:32, Peter Maydell wrote:
> On 3 September 2017 at 17:49, Kamil Rytarowski <n54@gmx.com> wrote:
>> This fixes build on SmartOS (Joyent).
>>
>> Patch cherry-picked from pkgsrc by jperkin (Joyent).
>>
>> Signed-off-by: Kamil Rytarowski <n54@gmx.com>
>> ---
>>  tests/Makefile.include | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/tests/Makefile.include b/tests/Makefile.include
>> index f08b7418f0..0e5e6cb9b8 100644
>> --- a/tests/Makefile.include
>> +++ b/tests/Makefile.include
>> @@ -810,8 +810,10 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
>>         rmdir $(INITRD_WORK_DIR)
>>
>>  ifeq ($(CONFIG_POSIX),y)
>> +ifneq ($(CONFIG_SOLARIS),y)
>>  LIBS += -lutil
>>  endif
>> +endif
> 
> I don't object to this patch in principle, but I don't think
> this is the best way to fix the underlying problem.
> 
> My assumption is that the issue is that Solaris doesn't
> have a -lutil (it's helpful to quote the linker or
> compiler error message for this kind of patch to clarify
> what the failure is that we're trying to fix).
> 

There is no libutil on SmartOS.

I cannot provide any information about the proprietary Solaris here and
in next questions.

> It looks like we use libutil here for openpty, which
> is used in the test-char test. But the condition we're
> using in tests/Makefile.include isn't the same as the
> one we used to decide whether to add -lutil to the
> emulator binary link line, which is in configure:
> 
> if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
>         "$aix" != "yes" -a "$haiku" != "yes" ; then
>     libs_softmmu="-lutil $libs_softmmu"
> fi
> 
> So I think I'd prefer it if we have:
>  * a configure test for "is openpty() in libutil"
>  * use that to determine whether to add -lutil to
>    libs_softmmu and to the libs for tests, rather than
>    doing OS-specific tests
> 

This looks cleaner. I will go for it.

> Q: does Solaris still not have an openpty() implementation?
> Currently we have a local implementation in util/qemu-openpty.c,
> but if that workaround is only needed in old Solaris we don't
> support any more we could perhaps drop it.
> 

SmartOS does not have openpty(). I don't see it either in the mainstream
Illumos-gate repository.

According to pkgsrc, openpty() is in libutil (-lutil) on all BSDs and
Darwin.

> thanks
> -- PMM
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] tests: Do not include lutil on SunOS
  2017-09-04 23:46   ` Kamil Rytarowski
@ 2017-09-05  9:16     ` Peter Maydell
  0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2017-09-05  9:16 UTC (permalink / raw)
  To: Kamil Rytarowski; +Cc: QEMU Trivial, QEMU Developers, Jonathan Perkin

On 5 September 2017 at 00:46, Kamil Rytarowski <n54@gmx.com> wrote:
> On 04.09.2017 11:32, Peter Maydell wrote:
>> My assumption is that the issue is that Solaris doesn't
>> have a -lutil (it's helpful to quote the linker or
>> compiler error message for this kind of patch to clarify
>> what the failure is that we're trying to fix).
>>
>
> There is no libutil on SmartOS.
>
> I cannot provide any information about the proprietary Solaris here and
> in next questions.

Yes; I was being a bit sloppy referring to all the
forks of opensolaris as 'Solaris' there. Recent news
suggests we don't need to consider support for the
proprietary Solaris...

>> It looks like we use libutil here for openpty, which
>> is used in the test-char test. But the condition we're
>> using in tests/Makefile.include isn't the same as the
>> one we used to decide whether to add -lutil to the
>> emulator binary link line, which is in configure:
>>
>> if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
>>         "$aix" != "yes" -a "$haiku" != "yes" ; then
>>     libs_softmmu="-lutil $libs_softmmu"
>> fi
>>
>> So I think I'd prefer it if we have:
>>  * a configure test for "is openpty() in libutil"
>>  * use that to determine whether to add -lutil to
>>    libs_softmmu and to the libs for tests, rather than
>>    doing OS-specific tests
>>
>
> This looks cleaner. I will go for it.

Thanks. Remember that there are three cases to handle:
 * has openpty, don't need -lutil to get it (OSX is like this I think)
 * has openpty and you need -lutil (Linux)
 * has no openpty at all, use QEMU internal version (smartos)

thanks
-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure
  2017-09-03 16:49 [Qemu-devel] [PATCH] tests: Do not include lutil on SunOS Kamil Rytarowski
  2017-09-04  9:32 ` Peter Maydell
@ 2017-09-11 17:16 ` Kamil Rytarowski
  2017-09-11 20:09   ` [Qemu-devel] [Qemu-trivial] " Kamil Rytarowski
  2017-09-14 13:52   ` [Qemu-devel] " Peter Maydell
  1 sibling, 2 replies; 9+ messages in thread
From: Kamil Rytarowski @ 2017-09-11 17:16 UTC (permalink / raw)
  To: qemu-trivial; +Cc: qemu-devel, jperkin, peter.maydell, Kamil Rytarowski

openpty(3) might:
 - exists in libc (OSX)
 - exists in libutil (GNU, BSD)
 - does not exist (SmartOS)

Add a function to discover this function in the ./configure script.
Add new config types: CONFIG_OPENPTY_LIBC and CONFIG_OPENPTY_LIBUTIL,
respectively defined when openpts(3) links with -lc or -lutil.

Replace the condition adding -lutil in tests (for openpty(3)) from
CONFIG_POSIX to CONFIG_OPENPTY_LIBUTIL.

Replace the fallback openpty(3) impelementation comment from Solaris
to SmartOS. Solaris is EOL'ed and it's confirmed that it does not work
on Oracle Solaris.
---
 configure              | 25 +++++++++++++++++++++++++
 tests/Makefile.include |  2 +-
 util/qemu-openpty.c    |  4 ++--
 3 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index fd7e3a5e81..a614adcd29 100755
--- a/configure
+++ b/configure
@@ -3819,6 +3819,25 @@ EOF
   fi
 fi
 
+##########################################
+# openpty probe
+openpty_libc=no
+openpty_libutil=no
+cat > $TMPC << EOF
+extern int openpty(int *amaster, int *aslave, char *name, void *termp, void *winp);
+
+int main(void)
+{
+    int master_fd, slave_fd;
+    return openpty(&master_fd, &slave_fd, 0, 0, 0) == 0;
+}
+EOF
+if compile_prog "" "" ; then
+  openpty_libc=yes
+elif compile_prog "" "-lutil" ; then
+  openpty_libutil=yes
+fi
+
 ##########################################
 # signalfd probe
 signalfd="no"
@@ -5788,6 +5807,12 @@ fi
 if test "$fdt" = "yes" ; then
   echo "CONFIG_FDT=y" >> $config_host_mak
 fi
+if test "$openpty_libc" = "yes" ; then
+  echo "CONFIG_OPENPTY_LIBC=y" >> $config_host_mak
+fi
+if test "$openpty_libutil" = "yes" ; then
+  echo "CONFIG_OPENPTY_LIBUTIL=y" >> $config_host_mak
+fi
 if test "$signalfd" = "yes" ; then
   echo "CONFIG_SIGNALFD=y" >> $config_host_mak
 fi
diff --git a/tests/Makefile.include b/tests/Makefile.include
index fae5715e9c..e7e0bc2724 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -814,7 +814,7 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
 	rm $(INITRD_WORK_DIR)/init
 	rmdir $(INITRD_WORK_DIR)
 
-ifeq ($(CONFIG_POSIX),y)
+ifeq ($(CONFIG_OPENPTY_LIBUTIL),y)
 LIBS += -lutil
 endif
 
diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c
index 2e8b43bdf5..62c87e5563 100644
--- a/util/qemu-openpty.c
+++ b/util/qemu-openpty.c
@@ -51,8 +51,8 @@
 # include <termios.h>
 #endif
 
-#ifdef __sun__
-/* Once Solaris has openpty(), this is going to be removed. */
+/* The fallback implementation is needed at least on SmartOS. */
+#if !defined(CONFIG_OPENPTY_LIBC) && !defined(CONFIG_OPENPTY_LIBUTIL)
 static int openpty(int *amaster, int *aslave, char *name,
                    struct termios *termp, struct winsize *winp)
 {
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [Qemu-trivial] [PATCH v2] Discover openpty(3) dynamically in configure
  2017-09-11 17:16 ` [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure Kamil Rytarowski
@ 2017-09-11 20:09   ` Kamil Rytarowski
  2017-09-14 13:52   ` [Qemu-devel] " Peter Maydell
  1 sibling, 0 replies; 9+ messages in thread
From: Kamil Rytarowski @ 2017-09-11 20:09 UTC (permalink / raw)
  To: qemu-trivial; +Cc: peter.maydell, jperkin, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 3101 bytes --]

On 11.09.2017 19:16, Kamil Rytarowski wrote:
> openpty(3) might:
>  - exists in libc (OSX)
>  - exists in libutil (GNU, BSD)
>  - does not exist (SmartOS)
> 
> Add a function to discover this function in the ./configure script.
> Add new config types: CONFIG_OPENPTY_LIBC and CONFIG_OPENPTY_LIBUTIL,
> respectively defined when openpts(3) links with -lc or -lutil.
> 
> Replace the condition adding -lutil in tests (for openpty(3)) from
> CONFIG_POSIX to CONFIG_OPENPTY_LIBUTIL.
> 
> Replace the fallback openpty(3) impelementation comment from Solaris
> to SmartOS. Solaris is EOL'ed and it's confirmed that it does not work
> on Oracle Solaris.

Signed-off-by: Kamil Rytarowski <n54@gmx.com>

> ---
>  configure              | 25 +++++++++++++++++++++++++
>  tests/Makefile.include |  2 +-
>  util/qemu-openpty.c    |  4 ++--
>  3 files changed, 28 insertions(+), 3 deletions(-)
> 
> diff --git a/configure b/configure
> index fd7e3a5e81..a614adcd29 100755
> --- a/configure
> +++ b/configure
> @@ -3819,6 +3819,25 @@ EOF
>    fi
>  fi
>  
> +##########################################
> +# openpty probe
> +openpty_libc=no
> +openpty_libutil=no
> +cat > $TMPC << EOF
> +extern int openpty(int *amaster, int *aslave, char *name, void *termp, void *winp);
> +
> +int main(void)
> +{
> +    int master_fd, slave_fd;
> +    return openpty(&master_fd, &slave_fd, 0, 0, 0) == 0;
> +}
> +EOF
> +if compile_prog "" "" ; then
> +  openpty_libc=yes
> +elif compile_prog "" "-lutil" ; then
> +  openpty_libutil=yes
> +fi
> +
>  ##########################################
>  # signalfd probe
>  signalfd="no"
> @@ -5788,6 +5807,12 @@ fi
>  if test "$fdt" = "yes" ; then
>    echo "CONFIG_FDT=y" >> $config_host_mak
>  fi
> +if test "$openpty_libc" = "yes" ; then
> +  echo "CONFIG_OPENPTY_LIBC=y" >> $config_host_mak
> +fi
> +if test "$openpty_libutil" = "yes" ; then
> +  echo "CONFIG_OPENPTY_LIBUTIL=y" >> $config_host_mak
> +fi
>  if test "$signalfd" = "yes" ; then
>    echo "CONFIG_SIGNALFD=y" >> $config_host_mak
>  fi
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index fae5715e9c..e7e0bc2724 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -814,7 +814,7 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
>  	rm $(INITRD_WORK_DIR)/init
>  	rmdir $(INITRD_WORK_DIR)
>  
> -ifeq ($(CONFIG_POSIX),y)
> +ifeq ($(CONFIG_OPENPTY_LIBUTIL),y)
>  LIBS += -lutil
>  endif
>  
> diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c
> index 2e8b43bdf5..62c87e5563 100644
> --- a/util/qemu-openpty.c
> +++ b/util/qemu-openpty.c
> @@ -51,8 +51,8 @@
>  # include <termios.h>
>  #endif
>  
> -#ifdef __sun__
> -/* Once Solaris has openpty(), this is going to be removed. */
> +/* The fallback implementation is needed at least on SmartOS. */
> +#if !defined(CONFIG_OPENPTY_LIBC) && !defined(CONFIG_OPENPTY_LIBUTIL)
>  static int openpty(int *amaster, int *aslave, char *name,
>                     struct termios *termp, struct winsize *winp)
>  {
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure
  2017-09-11 17:16 ` [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure Kamil Rytarowski
  2017-09-11 20:09   ` [Qemu-devel] [Qemu-trivial] " Kamil Rytarowski
@ 2017-09-14 13:52   ` Peter Maydell
  2017-10-28 17:07     ` Kamil Rytarowski
  1 sibling, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2017-09-14 13:52 UTC (permalink / raw)
  To: Kamil Rytarowski; +Cc: QEMU Trivial, QEMU Developers, Jonathan Perkin

On 11 September 2017 at 18:16, Kamil Rytarowski <n54@gmx.com> wrote:
> openpty(3) might:
>  - exists in libc (OSX)
>  - exists in libutil (GNU, BSD)
>  - does not exist (SmartOS)
>
> Add a function to discover this function in the ./configure script.
> Add new config types: CONFIG_OPENPTY_LIBC and CONFIG_OPENPTY_LIBUTIL,
> respectively defined when openpts(3) links with -lc or -lutil.
>
> Replace the condition adding -lutil in tests (for openpty(3)) from
> CONFIG_POSIX to CONFIG_OPENPTY_LIBUTIL.
>
> Replace the fallback openpty(3) impelementation comment from Solaris
> to SmartOS. Solaris is EOL'ed and it's confirmed that it does not work
> on Oracle Solaris.
> ---
>  configure              | 25 +++++++++++++++++++++++++
>  tests/Makefile.include |  2 +-
>  util/qemu-openpty.c    |  4 ++--
>  3 files changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/configure b/configure
> index fd7e3a5e81..a614adcd29 100755
> --- a/configure
> +++ b/configure
> @@ -3819,6 +3819,25 @@ EOF
>    fi
>  fi
>
> +##########################################
> +# openpty probe
> +openpty_libc=no
> +openpty_libutil=no
> +cat > $TMPC << EOF
> +extern int openpty(int *amaster, int *aslave, char *name, void *termp, void *winp);

I think the need to provide a prototype here rather than
using the system header to define it is revealing that we
also need a configure test for
 * openpty() in <pty.h>
 * openpty() in <libutil.h>
 * openpty() in <util.h>

Something like this untested code ought to do:

cat > $TMPC << EOF
#if defined(CONFIG_OPENPTY_IN_PTY_H)
#include <pty.h>
#elif defined(CONFIG_OPENPTY_IN_LIBUTIL_H)
#include <libutil.h>
#elif defined(CONFIG_OPENPTY_IN_UTIL_H)
#include <util.h>
#endif
int main(void) { return openpty(0, 0, 0, 0, 0); }
EOF

# Different platforms put openpty() in different headers,
# and may or may not need us to link against -lutil
if compile_prog -DCONFIG_OPENPTY_IN_PTY_H ""; then
  openpty_in_pty_h=yes
elif compile_prog -D_CONFIG_OPENPTY_IN_PTY_H -lutil; then
  openpty_in_pty_h=yes
  openpty_libutil=yes
elif compile_object -DCONFIG_OPENPTY_IN_LIBUTIL_H; then
  openpty_in_libutil_h=yes
elif compile_prog -D_CONFIG_OPENPTY_IN_LIBUTIL_H -lutil; then
  openpty_in_libutil_h=yes
  openpty_libutil=yes
elif compile_object -DCONFIG_OPENPTY_IN_UTIL_H; then
  openpty_in_util_h=yes
elif compile_prog -D_CONFIG_OPENPTY_IN_UTIL_H -lutil; then
  openpty_in_util_h=yes
  openpty_libutil=yes
fi

Then in qemu-openpty.c we can do

#include <termios.h>

#if defined(CONFIG_OPENPTY_IN_PTY_H)
#include <pty.h>
#elif defined(CONFIG_OPENPTY_IN_LIBUTIL_H)
#include <libutil.h>
#elif defined(CONFIG_OPENPTY_IN_UTIL_H)
#include <util.h>
#else
/* sunos fallback code */
#endif


> +if test "$openpty_libc" = "yes" ; then
> +  echo "CONFIG_OPENPTY_LIBC=y" >> $config_host_mak
> +fi


If we use the CONFIG_OPENPTY_IN_*_H constants as above
we don't need CONFIG_OPENPTY_LIBC any more.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure
  2017-09-14 13:52   ` [Qemu-devel] " Peter Maydell
@ 2017-10-28 17:07     ` Kamil Rytarowski
  2017-11-02 15:14       ` Peter Maydell
  0 siblings, 1 reply; 9+ messages in thread
From: Kamil Rytarowski @ 2017-10-28 17:07 UTC (permalink / raw)
  To: Peter Maydell
  Cc: QEMU Trivial, Jonathan Perkin, QEMU Developers, Peter Tribble,
	Antonio Huete Jiménez

[-- Attachment #1: Type: text/plain, Size: 4525 bytes --]


On 14.09.2017 15:52, Peter Maydell wrote:
> On 11 September 2017 at 18:16, Kamil Rytarowski <n54@gmx.com> wrote:
>> openpty(3) might:
>>  - exists in libc (OSX)
>>  - exists in libutil (GNU, BSD)
>>  - does not exist (SmartOS)
>>
>> Add a function to discover this function in the ./configure script.
>> Add new config types: CONFIG_OPENPTY_LIBC and CONFIG_OPENPTY_LIBUTIL,
>> respectively defined when openpts(3) links with -lc or -lutil.
>>
>> Replace the condition adding -lutil in tests (for openpty(3)) from
>> CONFIG_POSIX to CONFIG_OPENPTY_LIBUTIL.
>>
>> Replace the fallback openpty(3) impelementation comment from Solaris
>> to SmartOS. Solaris is EOL'ed and it's confirmed that it does not work
>> on Oracle Solaris.
>> ---
>>  configure              | 25 +++++++++++++++++++++++++
>>  tests/Makefile.include |  2 +-
>>  util/qemu-openpty.c    |  4 ++--
>>  3 files changed, 28 insertions(+), 3 deletions(-)
>>
>> diff --git a/configure b/configure
>> index fd7e3a5e81..a614adcd29 100755
>> --- a/configure
>> +++ b/configure
>> @@ -3819,6 +3819,25 @@ EOF
>>    fi
>>  fi
>>
>> +##########################################
>> +# openpty probe
>> +openpty_libc=no
>> +openpty_libutil=no
>> +cat > $TMPC << EOF
>> +extern int openpty(int *amaster, int *aslave, char *name, void *termp, void *winp);
> 
> I think the need to provide a prototype here rather than
> using the system header to define it is revealing that we
> also need a configure test for
>  * openpty() in <pty.h>
>  * openpty() in <libutil.h>
>  * openpty() in <util.h>
> 
> Something like this untested code ought to do:
> 
> cat > $TMPC << EOF
> #if defined(CONFIG_OPENPTY_IN_PTY_H)
> #include <pty.h>
> #elif defined(CONFIG_OPENPTY_IN_LIBUTIL_H)
> #include <libutil.h>
> #elif defined(CONFIG_OPENPTY_IN_UTIL_H)
> #include <util.h>
> #endif
> int main(void) { return openpty(0, 0, 0, 0, 0); }
> EOF
> 
> # Different platforms put openpty() in different headers,
> # and may or may not need us to link against -lutil
> if compile_prog -DCONFIG_OPENPTY_IN_PTY_H ""; then
>   openpty_in_pty_h=yes
> elif compile_prog -D_CONFIG_OPENPTY_IN_PTY_H -lutil; then
>   openpty_in_pty_h=yes
>   openpty_libutil=yes
> elif compile_object -DCONFIG_OPENPTY_IN_LIBUTIL_H; then
>   openpty_in_libutil_h=yes
> elif compile_prog -D_CONFIG_OPENPTY_IN_LIBUTIL_H -lutil; then
>   openpty_in_libutil_h=yes
>   openpty_libutil=yes
> elif compile_object -DCONFIG_OPENPTY_IN_UTIL_H; then
>   openpty_in_util_h=yes
> elif compile_prog -D_CONFIG_OPENPTY_IN_UTIL_H -lutil; then
>   openpty_in_util_h=yes
>   openpty_libutil=yes
> fi
> 
> Then in qemu-openpty.c we can do
> 
> #include <termios.h>
> 
> #if defined(CONFIG_OPENPTY_IN_PTY_H)
> #include <pty.h>
> #elif defined(CONFIG_OPENPTY_IN_LIBUTIL_H)
> #include <libutil.h>
> #elif defined(CONFIG_OPENPTY_IN_UTIL_H)
> #include <util.h>
> #else
> /* sunos fallback code */
> #endif
> 
> 
>> +if test "$openpty_libc" = "yes" ; then
>> +  echo "CONFIG_OPENPTY_LIBC=y" >> $config_host_mak
>> +fi
> 
> 
> If we use the CONFIG_OPENPTY_IN_*_H constants as above
> we don't need CONFIG_OPENPTY_LIBC any more.
> 
> thanks
> -- PMM
> 
Hello,

I've naively expected that once a build on a certain OS will be fixed,
it will be functional for longer period (at least few weeks). In one
month qemu has been broken on DragonFly and SmartOS so they are not just
broken in tests, but also in the basic build.

SmartOS has new compatibility problems with grep(1) invocations and tpm
emulator fatal build failure. Few old problems with conflicts with
system headers like conflicts with symbols CS and REG_SP.

There are certainly other small incompatibility problems, after the
breakage. Just a remind that SmartOS was not capable to execute tests
because of incompatible diff(1) invocations and unclear gmake(1)
misbehavior. And this was just the beginning of the problems.

DragonFlyBSD has problems with PAGE_SIZE, PAGE_MASK clash with headers
in s390x code. PAGE_MASK, PAGE_SHIFT and PAGE_SIZE in nand. No single
GTESTER invocation passes.

Because there is need to fix the SmartOS build in order to improve this
openpty(3) patch, I'm resigning from it. I also resign from helping
DragonFly port.

I will focus entirely on the bits that I registered as a maintainer.

I leave the decisions and steps about support of these platforms to
other volunteers and qemu core maintainers.

+ CC Antonio and Peter


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure
  2017-10-28 17:07     ` Kamil Rytarowski
@ 2017-11-02 15:14       ` Peter Maydell
  0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2017-11-02 15:14 UTC (permalink / raw)
  To: Kamil Rytarowski
  Cc: QEMU Trivial, Jonathan Perkin, QEMU Developers, Peter Tribble,
	Antonio Huete Jiménez

On 28 October 2017 at 18:07, Kamil Rytarowski <n54@gmx.com> wrote:
> I've naively expected that once a build on a certain OS will be fixed,
> it will be functional for longer period (at least few weeks). In one
> month qemu has been broken on DragonFly and SmartOS so they are not just
> broken in tests, but also in the basic build.

Yep; things do break if they're not tested, which is why I think
we have to have a host system being in our regular build/test
process in order to be able to call it supported.

> Because there is need to fix the SmartOS build in order to improve this
> openpty(3) patch, I'm resigning from it. I also resign from helping
> DragonFly port.
>
> I will focus entirely on the bits that I registered as a maintainer.
>
> I leave the decisions and steps about support of these platforms to
> other volunteers and qemu core maintainers.

Thanks for your efforts with the BSD porting work; we appreciate
it.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-11-02 15:15 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-03 16:49 [Qemu-devel] [PATCH] tests: Do not include lutil on SunOS Kamil Rytarowski
2017-09-04  9:32 ` Peter Maydell
2017-09-04 23:46   ` Kamil Rytarowski
2017-09-05  9:16     ` Peter Maydell
2017-09-11 17:16 ` [Qemu-devel] [PATCH v2] Discover openpty(3) dynamically in configure Kamil Rytarowski
2017-09-11 20:09   ` [Qemu-devel] [Qemu-trivial] " Kamil Rytarowski
2017-09-14 13:52   ` [Qemu-devel] " Peter Maydell
2017-10-28 17:07     ` Kamil Rytarowski
2017-11-02 15:14       ` Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.