On 2020/05/27 07:47, Landry Breuil wrote:
> On Wed, May 27, 2020 at 01:48:55PM +0900, Masato Asou wrote:
> > Hi,
> > 
> > This is a new port sysutils/fluent-bit.  Fluent bit is a Log Processor
> > and Forwarder.
> 
> Great stuff, i think i had a look at it some years ago and it looked
> very-linuxy/not that much portable.. nice that you made it.
> 
> some notes:
> * why USE_NINJA=No ?

Couple of reasons. One is that they don't want the full path in traces and are
using some gmake-specific mess to define __FILENAME__ with the 'base' source
directory stripped off (that's easily avoided by using __FILE__ instead).
Another is that they bundle various dependencies and are building them by
calling $(MAKE). Also some of those dependencies use gmake-specific things.

LuaJIT-2.1.0-beta3
chunkio
flb_libco
jemalloc-5.2.1
jsmn
libbacktrace-ca0de05
mbedtls-2.16.5
miniz
monkey
mpack-amalgamation-1.0
msgpack-3.2.0
onigmo
rbtree
sqlite-amalgamation-3310000
tutf8e

Several of these are in ports already (normally dependencies should be taken
from ports rather than bundled - so that patches needed for working on OpenBSD,
at least on some arches, are picked up - and so that security fixes don't have
to be made in multiple places - for example onigmo/oniguruma is an old version
missing security fixes).

Builds for some of these do things like force using gcc as the compiler,
setting opt flags like -O3 -funroll-loops which aren't allowed in ports.
Those using autoconf bypass the normal ports infrastructure for this and
pick up tools like gsed/ggrep if present at build time, which in a bulk
build maybe removed part-way through the build.

cmake checks for some things which aren't listed as dependencies too (and
finds them if installed), which need to be disabled properly or at least check
that they don't break things if they're present when configure is run but
removed during the build

-- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR 
GTEST_MAIN_LIBRARY)
-- Found Doxygen: /usr/local/bin/doxygen (found version "1.8.18") found 
components: doxygen dot
-- Found PythonInterp: /usr/local/bin/python3.8 (found version "3.8.2")
-- Found PostgreSQL: /usr/local/lib/libpq.so.6.11 (found version "12.2")

I've tidied up some things (diff below) but due to upstream's choices of
how to do things this is going to be complicated to get in proper shape for
commit.

> * why not taking maintainership ?
> * it feels weird to force gmake usage w/ cmake.. in which voodooo
>   trickery does cmake end up generating $< -gmake rules ? cant the cmake
>   stuff be fixed instead ?
> * 1.4.5 was released 2 days ago
> * many portability patches without comments.. are you planning to push
>   those upstream via github ?
> 
> other than that it reads good at first sight.


diff b192e6571d88d491076b4fcb9b72bcf952411506 /usr/ports/mystuff
blob - 4b49acd7179e29773d9bc5263bd4d5bf548afd11
file + sysutils/fluent-bit/Makefile
--- sysutils/fluent-bit/Makefile
+++ sysutils/fluent-bit/Makefile
@@ -1,9 +1,7 @@
 # $OpenBSD$
 
-PKG_ARCH =     *
+COMMENT =      fast log processor and forwarder
 
-COMMENT =      Fast log processor and forwarder
-
 GH_ACCOUNT =   fluent
 GH_PROJECT =   fluent-bit
 GH_TAGNAME =   v1.4.4
@@ -16,24 +14,27 @@ HOMEPAGE =  https://fluentbit.io/
 
 # Apache License 2.0
 PERMIT_PACKAGE =       Yes
-PERMIT_DISTFILES =     Yes
 
+WANTLIB += c c++abi m pthread
+
 MODULES        =       devel/cmake
-USE_NINJA =    No
 
-# some Makefiles use "$<"
-USE_GMAKE =    Yes
+# hardcodes c++abi
+COMPILER =     base-clang
 
-# CFLAGS "-frandom-seed=\$@" generated by lib/libbacktrace/configure
-# assumes a GNU libtool's behavior, our libtool doesn't behave like so.
-USE_LIBTOOL =  gnu
-
-# Makefiles generated by cmake are using "$<"
+# calls out to $(MAKE) from build files for bundled dependencies,
+# some of which need gmake.
+USE_NINJA =    No
+USE_GMAKE =    Yes
 CONFIGURE_ARGS +=      -DCMAKE_MAKE_PROGRAM:FILEPATH=${LOCALBASE}/bin/gmake
 
 CONFIGURE_ARGS +=      
-DCMAKE_INSTALL_SYSCONFDIR:PATH=${LOCALBASE}/share/examples
 CONFIGURE_ARGS +=      -DWITHOUT_HEADERS=1
 CONFIGURE_ARGS +=      -DFLB_CORO_STACK_SIZE=16384
+
+# CFLAGS "-frandom-seed=\$@" generated by lib/libbacktrace/configure
+# breaks with openbsd libtool
+CONFIGURE_ARGS +=      -DFLB_BACKTRACE=OFF
 
 BUILD_DEPENDS =                devel/bison
 
blob - /dev/null
file + sysutils/fluent-bit/patches/patch-CMakeLists_txt
--- sysutils/fluent-bit/patches/patch-CMakeLists_txt
+++ sysutils/fluent-bit/patches/patch-CMakeLists_txt
@@ -0,0 +1,20 @@
+$OpenBSD$
+
+avoid gmake-ism, only used to strip off the build path from trace functions
+
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -24,11 +24,7 @@ else()
+   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
+ endif()
+ 
+-if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst 
${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
+-else()
+-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__=__FILE__")
+-endif()
++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__=__FILE__")
+ 
+ include(GNUInstallDirs)
+ include(ExternalProject)
blob - 5a0ef910e9e6dde61899e2473e6f8477773ed2c5
file + sysutils/fluent-bit/patches/patch-cmake_onigmo_cmake
--- sysutils/fluent-bit/patches/patch-cmake_onigmo_cmake
+++ sysutils/fluent-bit/patches/patch-cmake_onigmo_cmake
@@ -10,7 +10,7 @@ Index: cmake/onigmo.cmake
 -  CFLAGS=-std=gnu99\ -Wall\ -pipe\ -Os\ -g0\ -s\ -fno-stack-protector\ 
-fomit-frame-pointer\ -DNDEBUG\ -U_FORTIFY_SOURCE
 +  CFLAGS=-fPIC\ -std=gnu99\ -Wall\ -pipe\ -Os\ -g0\ -s\ -fno-stack-protector\ 
-fomit-frame-pointer\ -DNDEBUG\ -U_FORTIFY_SOURCE
    BUILD_COMMAND $(MAKE)
-   INSTALL_COMMAND $(MAKE) install)
+   INSTALL_COMMAND $(MAKE) DESTDIR= install)
  else()
 @@ -36,7 +36,7 @@ ExternalProject_Add(onigmo
    SOURCE_DIR ${ONIGMO_SRC}
@@ -19,5 +19,5 @@ Index: cmake/onigmo.cmake
 -  CFLAGS=-std=gnu99\ -Wall\ -pipe\ -g3\ -O3\ -funroll-loops
 +  CFLAGS=-fPIC\ -std=gnu99\ -Wall\ -pipe\ -g3\ -O3\ -funroll-loops
    BUILD_COMMAND $(MAKE)
-   INSTALL_COMMAND $(MAKE) install)
+   INSTALL_COMMAND $(MAKE) DESTDIR= install)
  endif()
blob - e7f18d547a83eacb0fb43c3f8f4510b33a931191
file + sysutils/fluent-bit/patches/patch-include_fluent-bit_flb_engine_h
--- sysutils/fluent-bit/patches/patch-include_fluent-bit_flb_engine_h
+++ sysutils/fluent-bit/patches/patch-include_fluent-bit_flb_engine_h
@@ -12,8 +12,8 @@ Index: include/fluent-bit/flb_engine.h
  /* Types of events handled by the Server engine */
  #define FLB_ENGINE_EV_CORE          MK_EVENT_NOTIFICATION
  #define FLB_ENGINE_EV_CUSTOM        MK_EVENT_CUSTOM
-@@ -57,5 +59,7 @@ int flb_engine_flush(struct flb_config *config,
- int flb_engine_exit(struct flb_config *config);
+@@ -58,5 +60,7 @@ int flb_engine_exit(struct flb_config *config);
+ int flb_engine_exit_status(struct flb_config *config, int status);
  int flb_engine_shutdown(struct flb_config *config);
  int flb_engine_destroy_tasks(struct mk_list *tasks);
 +
blob - /dev/null
file + sysutils/fluent-bit/patches/patch-lib_chunkio_CMakeLists_txt
--- sysutils/fluent-bit/patches/patch-lib_chunkio_CMakeLists_txt
+++ sysutils/fluent-bit/patches/patch-lib_chunkio_CMakeLists_txt
@@ -0,0 +1,21 @@
+$OpenBSD$
+
+avoid gmake-ism, only used to strip off the build path from trace functions
+
+Index: lib/chunkio/CMakeLists.txt
+--- lib/chunkio/CMakeLists.txt.orig
++++ lib/chunkio/CMakeLists.txt
+@@ -14,12 +14,7 @@ else()
+   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall ")
+ endif()
+ 
+-# Set __FILENAME__
+-if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst 
${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
+-else()
+-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__=__FILE__")
+-endif()
++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__=__FILE__")
+ 
+ # ChunkIO options
+ option(CIO_DEV               "Enable dev/test mode"         Off)
blob - /dev/null
file + sysutils/fluent-bit/patches/patch-lib_monkey_CMakeLists_txt
--- sysutils/fluent-bit/patches/patch-lib_monkey_CMakeLists_txt
+++ sysutils/fluent-bit/patches/patch-lib_monkey_CMakeLists_txt
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+avoid gmake-ism, only used to strip off the build path from trace functions
+
+Index: lib/monkey/CMakeLists.txt
+--- lib/monkey/CMakeLists.txt.orig
++++ lib/monkey/CMakeLists.txt
+@@ -14,7 +14,7 @@ include(GNUInstallDirs)
+ 
+ # Set default compiler options
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wall -Wextra")
+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst 
${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__=__FILE__")
+ 
+ # Monkey Version
+ set(MK_VERSION_MAJOR  1)
blob - f4ab4d98862d8f2d8721dbcfacd68abc7847bf73
file + sysutils/fluent-bit/patches/patch-lib_monkey_mk_core_CMakeLists_txt
--- sysutils/fluent-bit/patches/patch-lib_monkey_mk_core_CMakeLists_txt
+++ sysutils/fluent-bit/patches/patch-lib_monkey_mk_core_CMakeLists_txt
@@ -3,7 +3,7 @@ $OpenBSD$
 Index: lib/monkey/mk_core/CMakeLists.txt
 --- lib/monkey/mk_core/CMakeLists.txt.orig
 +++ lib/monkey/mk_core/CMakeLists.txt
-@@ -80,6 +80,7 @@ check_c_source_compiles("
+@@ -78,6 +78,7 @@ check_c_source_compiles("
    }" HAVE_EPOLL)
  
  check_c_source_compiles("
blob - 04a9c2ffcea2824e1ad7f07bf6ac7016c53e5d37
file + sysutils/fluent-bit/patches/patch-plugins_in_tail_tail_file_c
--- sysutils/fluent-bit/patches/patch-plugins_in_tail_tail_file_c
+++ sysutils/fluent-bit/patches/patch-plugins_in_tail_tail_file_c
@@ -3,7 +3,7 @@ $OpenBSD$
 Index: plugins/in_tail/tail_file.c
 --- plugins/in_tail/tail_file.c.orig
 +++ plugins/in_tail/tail_file.c
-@@ -1015,9 +1015,8 @@
+@@ -1041,9 +1041,8 @@ char *flb_tail_file_name(struct flb_tail_file *file)
  {
      int ret;
      char *buf;
@@ -15,7 +15,7 @@ Index: plugins/in_tail/tail_file.c
  #elif defined(__APPLE__)
      char path[PATH_MAX];
  #elif defined(_MSC_VER)
-@@ -1030,21 +1029,24 @@
+@@ -1056,21 +1055,24 @@ char *flb_tail_file_name(struct flb_tail_file *file)
          return NULL;
      }
  
blob - 72b208ad733adc3c363bbb3e857d2da591aa9627
file + sysutils/fluent-bit/patches/patch-src_CMakeLists_txt
--- sysutils/fluent-bit/patches/patch-src_CMakeLists_txt
+++ sysutils/fluent-bit/patches/patch-src_CMakeLists_txt
@@ -3,7 +3,7 @@ $OpenBSD$
 Index: src/CMakeLists.txt
 --- src/CMakeLists.txt.orig
 +++ src/CMakeLists.txt
-@@ -183,6 +183,13 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+@@ -191,6 +191,13 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
      )
  endif()
  
blob - 731480179d57dea924c2850602d4373e680e732f
file + sysutils/fluent-bit/patches/patch-src_flb_engine_c
--- sysutils/fluent-bit/patches/patch-src_flb_engine_c
+++ sysutils/fluent-bit/patches/patch-src_flb_engine_c
@@ -12,7 +12,7 @@ Index: src/flb_engine.c
  int flb_engine_destroy_tasks(struct mk_list *tasks)
  {
      int c = 0;
-@@ -483,7 +485,10 @@ int flb_engine_start(struct flb_config *config)
+@@ -523,7 +525,10 @@ int flb_engine_start(struct flb_config *config)
      flb_engine_started(config);
  
      while (1) {
@@ -24,8 +24,8 @@ Index: src/flb_engine.c
          mk_event_foreach(event, evl) {
              if (event->type == FLB_ENGINE_EV_CORE) {
                  ret = flb_engine_handle_event(event->fd, event->mask, config);
-@@ -535,6 +540,32 @@ int flb_engine_start(struct flb_config *config)
-             flb_sched_timer_cleanup(config->sched);
+@@ -595,6 +600,32 @@ int flb_engine_start(struct flb_config *config)
+             flb_upstream_conn_timeouts(config);
          }
      }
 +}
blob - 9543ae061f8b935683e8d8180ee0d50d1fa50a74
file + sysutils/fluent-bit/patches/patch-src_flb_io_tls_c
--- sysutils/fluent-bit/patches/patch-src_flb_io_tls_c
+++ sysutils/fluent-bit/patches/patch-src_flb_io_tls_c
@@ -3,7 +3,7 @@ $OpenBSD$
 Index: src/flb_io_tls.c
 --- src/flb_io_tls.c.orig
 +++ src/flb_io_tls.c
-@@ -106,7 +106,11 @@
+@@ -106,7 +106,11 @@ static int flb_tls_load_system_cert(struct flb_tls_con
  static int flb_tls_load_system_cert(struct flb_tls_context *ctx)
  {
      int ret;
blob - 9d37d536b895caeaa91925af4363bc4afdf7677b
file + sysutils/fluent-bit/patches/patch-src_flb_worker_c
--- sysutils/fluent-bit/patches/patch-src_flb_worker_c
+++ sysutils/fluent-bit/patches/patch-src_flb_worker_c
@@ -3,7 +3,7 @@ $OpenBSD$
 Index: src/flb_worker.c
 --- src/flb_worker.c.orig
 +++ src/flb_worker.c
-@@ -35,8 +35,15 @@
+@@ -35,8 +35,15 @@ FLB_TLS_DEFINE(struct flb_worker, flb_worker_ctx);
   */
  static void step_callback(void *data)
  {
blob - d303fab4bb574ba490ee5045a3629c54b65dbad5
file + sysutils/fluent-bit/patches/patch-src_fluent_bit_c
--- sysutils/fluent-bit/patches/patch-src_fluent_bit_c
+++ sysutils/fluent-bit/patches/patch-src_fluent_bit_c
@@ -3,7 +3,7 @@ $OpenBSD$
 Index: src/fluent-bit.c
 --- src/fluent-bit.c.orig
 +++ src/fluent-bit.c
-@@ -232,14 +232,8 @@ static void flb_signal_handler(int signal)
+@@ -379,14 +379,8 @@ static void flb_signal_handler(int signal)
      case SIGQUIT:
      case SIGHUP:
  #endif
blob - 2e8d3d55451fbf972aca06b95aea78076afac315
file + sysutils/fluent-bit/pkg/PLIST
--- sysutils/fluent-bit/pkg/PLIST
+++ sysutils/fluent-bit/pkg/PLIST
@@ -1,7 +1,7 @@
 @comment $OpenBSD: PLIST,v$
 @rcscript ${RCDIR}/fluent-bit
 @bin bin/fluent-bit
-lib/libfluent-bit.so
+@so lib/libfluent-bit.so
 share/doc/fluent-bit/
 share/doc/fluent-bit/LICENSE
 share/doc/fluent-bit/README.md
blob - b4d465bcab7204272aea64c5f2aef18bd0e0d7c2
file + sysutils/fluent-bit/pkg/fluent-bit.rc
--- sysutils/fluent-bit/pkg/fluent-bit.rc
+++ sysutils/fluent-bit/pkg/fluent-bit.rc
@@ -1,7 +1,9 @@
 #!/bin/sh
+#
+# $OpenBSD$
 
 daemon="${TRUEPREFIX}/sbin/fluent-bit"
-daemon_flags="-c /etc/fluent-bit/fluent-bit.conf"
+daemon_flags="-c ${SYSCONFDIR}/fluent-bit/fluent-bit.conf"
 rc_bg=YES
 
 . /etc/rc.d/rc.subr

Reply via email to