Hello!

On Thu, Sep 23, 2021 at 06:29:21PM +0100, David CARLIER wrote:

> Hi dear list,
> 
> here a patch proposal for the haiku os.
> 
> Kind regards.

> changeset:   7930:96ffec978b80
> tag:         
> improve_haiku_support_disable_unsupported_code_paths_adding_specific_build_
> tag:         qbase
> tag:         qtip
> tag:         tip
> user:        David Carlier <devne...@gmail.com>
> date:        Thu Sep 23 18:13:21 2021 +0000
> summary:     Improve Haiku support/disable unsupported code paths, adding 
> specific build config components.
> 
> diff -r bfad703459b4 -r 96ffec978b80 auto/os/conf
> --- a/auto/os/conf    Wed Sep 22 10:20:00 2021 +0300
> +++ b/auto/os/conf    Thu Sep 23 18:13:21 2021 +0000
> @@ -27,6 +27,10 @@
>          . auto/os/win32
>      ;;
>  
> +    Haiku:*)
> +        . auto/os/haiku
> +    ;;
> +
>      DragonFly:*)
>          have=NGX_FREEBSD . auto/have_headers
>          CORE_INCS="$UNIX_INCS"
> diff -r bfad703459b4 -r 96ffec978b80 auto/sources
> --- a/auto/sources    Wed Sep 22 10:20:00 2021 +0300
> +++ b/auto/sources    Thu Sep 23 18:13:21 2021 +0000
> @@ -208,6 +208,8 @@
>  DARWIN_SRCS=src/os/unix/ngx_darwin_init.c
>  DARWIN_SENDFILE_SRCS=src/os/unix/ngx_darwin_sendfile_chain.c
>  
> +HAIKU_DEPS="src/os/unix/ngx_haiku_config.h"
> +
>  
>  WIN32_INCS="$CORE_INCS $EVENT_INCS src/os/win32"
>  
> diff -r bfad703459b4 -r 96ffec978b80 src/core/ngx_config.h
> --- a/src/core/ngx_config.h   Wed Sep 22 10:20:00 2021 +0300
> +++ b/src/core/ngx_config.h   Thu Sep 23 18:13:21 2021 +0000
> @@ -37,6 +37,8 @@
>  #elif (NGX_WIN32)
>  #include <ngx_win32_config.h>
>  
> +#elif (NGX_HAIKU)
> +#include <ngx_haiku_config.h>
>  
>  #else /* POSIX */
>  #include <ngx_posix_config.h>
> diff -r bfad703459b4 -r 96ffec978b80 src/os/unix/ngx_process.c
> --- a/src/os/unix/ngx_process.c       Wed Sep 22 10:20:00 2021 +0300
> +++ b/src/os/unix/ngx_process.c       Thu Sep 23 18:13:21 2021 +0000
> @@ -87,7 +87,9 @@
>  ngx_spawn_process(ngx_cycle_t *cycle, ngx_spawn_proc_pt proc, void *data,
>      char *name, ngx_int_t respawn)
>  {
> +#if !(NGX_HAIKU)
>      u_long     on;
> +#endif
>      ngx_pid_t  pid;
>      ngx_int_t  s;
>  
> @@ -142,6 +144,7 @@
>              return NGX_INVALID_PID;
>          }
>  
> +#if !(NGX_HAIKU)
>          on = 1;
>          if (ioctl(ngx_processes[s].channel[0], FIOASYNC, &on) == -1) {
>              ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
> @@ -156,6 +159,7 @@
>              ngx_close_channel(ngx_processes[s].channel, cycle->log);
>              return NGX_INVALID_PID;
>          }
> +#endif
>  
>          if (fcntl(ngx_processes[s].channel[0], F_SETFD, FD_CLOEXEC) == -1) {
>              ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
> 

Thanks for the patch.  It looks broken though, as it lacks the 
ngx_haiku_config.h file.  Further, it might be a better idea to 
avoid introducing HaikuOS-specific files and defines, and keep 
changes you want to introduce to better support HaikuOS under 
generic POSIX support instead.

Note well that simply disabling FIOASYNC isn't a good solution.  
While it might not be used now, it is certainly will be important 
when interprocess communications via channels will used for 
additional things, such as passing open file descriptors of log 
files from master to worker processes 
(https://trac.nginx.org/nginx/ticket/376).

-- 
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to