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