From 81b20dfd9005eb11307a8487fa01bd0bea08a386 Mon Sep 17 00:00:00 2001 From: xiehan <52160700+Barenboim@users.noreply.github.com> Date: Thu, 17 Jul 2025 23:38:20 +0800 Subject: [PATCH] Add CI for FreeBSD and fix compiling errors. (#1755) --- .github/workflows/ci.yml | 20 +++++++++++++++++++ GNUmakefile | 12 +++++------ benchmark/GNUmakefile | 6 +++--- src/kernel/IOService_thread.cc | 13 +++++------- src/manager/WFGlobal.cc | 1 + src/nameservice/WFDnsResolver.cc | 1 + src/protocol/DnsMessage.cc | 2 +- src/protocol/dns_parser.c | 3 ++- test/GNUmakefile | 6 +++--- tutorial/GNUmakefile | 7 +++---- .../tutorial-16-graceful_restart/bootstrap.c | 2 ++ tutorial/tutorial-19-dns_server.cc | 3 ++- 12 files changed, 49 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34b94689..1af927f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,3 +47,23 @@ jobs: - name: make tutorial run: make tutorial + freebsd-cmake: + name: freebsd + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build and test on FreeBSD + uses: vmactions/freebsd-vm@v1 + with: + usesh: true + mem: 2048 + copyback: false + prepare: | + pkg update -f + pkg install -y cmake gmake gcc pkgconf openssl + run: | + freebsd-version + gmake + gmake tutorial + cd tutorial + ./parallel_wget http://github.com/ diff --git a/GNUmakefile b/GNUmakefile index be1e7321..9101db25 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -9,7 +9,7 @@ CMAKE3 := $(shell if which cmake3>/dev/null ; then echo cmake3; else echo cmake; .PHONY: $(ALL_TARGETS) all: base - make -C $(BUILD_DIR) -f Makefile + $(MAKE) -C $(BUILD_DIR) -f Makefile base: mkdir -p $(BUILD_DIR) @@ -23,19 +23,19 @@ else endif tutorial: all - make -C tutorial + $(MAKE) -C tutorial check: all - make -C test check + $(MAKE) -C test check install preinstall: base mkdir -p $(BUILD_DIR) cd $(BUILD_DIR) && $(CMAKE3) $(ROOT_DIR) - make -C $(BUILD_DIR) -f Makefile $@ + $(MAKE) -C $(BUILD_DIR) -f Makefile $@ clean: - -make -C test clean - -make -C tutorial clean + -$(MAKE) -C test clean + -$(MAKE) -C tutorial clean rm -rf $(DEFAULT_BUILD_DIR) rm -rf _include rm -rf _lib diff --git a/benchmark/GNUmakefile b/benchmark/GNUmakefile index 6d4cc663..99e2e242 100644 --- a/benchmark/GNUmakefile +++ b/benchmark/GNUmakefile @@ -15,13 +15,13 @@ ifeq ($(DEBUG),y) else cd $(BUILD_DIR) && $(CMAKE3) $(ROOT_DIR) endif - make -C $(BUILD_DIR) -f Makefile + $(MAKE) -C $(BUILD_DIR) -f Makefile clean: ifeq ($(MAKE_FILE), $(wildcard $(MAKE_FILE))) - -make -f Makefile clean + -$(MAKE) -f Makefile clean else ifeq (build, $(wildcard build)) - -make -C build clean + -$(MAKE) -C build clean endif rm -rf build diff --git a/src/kernel/IOService_thread.cc b/src/kernel/IOService_thread.cc index 5ab45b4d..9e59a6fd 100644 --- a/src/kernel/IOService_thread.cc +++ b/src/kernel/IOService_thread.cc @@ -201,13 +201,6 @@ int IOService::request(IOSession *session) return ret; } -#if _POSIX_SYNCHRONIZED_IO <= 0 -static inline int fdatasync(int fd) -{ - return fsync(fd); -} -#endif - void *IOService::io_routine(void *arg) { IOSession *session = (IOSession *)arg; @@ -223,12 +216,16 @@ void *IOService::io_routine(void *arg) case IO_CMD_PWRITE: ret = pwrite(fd, session->buf, session->count, session->offset); break; - case IO_CMD_FSYNC: ret = fsync(fd); break; case IO_CMD_FDSYNC: +#if _POSIX_SYNCHRONIZED_IO > 0 ret = fdatasync(fd); break; +#endif + case IO_CMD_FSYNC: + ret = fsync(fd); + break; case IO_CMD_PREADV: ret = service->preadv(fd, (const struct iovec *)session->buf, session->count, session->offset); diff --git a/src/manager/WFGlobal.cc b/src/manager/WFGlobal.cc index 6f2934a7..d84033bf 100644 --- a/src/manager/WFGlobal.cc +++ b/src/manager/WFGlobal.cc @@ -18,6 +18,7 @@ Liu Kai (liukaidx@sogou-inc.com) */ +#include #include #include #include diff --git a/src/nameservice/WFDnsResolver.cc b/src/nameservice/WFDnsResolver.cc index 8ba963b0..d65587c9 100644 --- a/src/nameservice/WFDnsResolver.cc +++ b/src/nameservice/WFDnsResolver.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/src/protocol/DnsMessage.cc b/src/protocol/DnsMessage.cc index 44c6576e..22687efb 100644 --- a/src/protocol/DnsMessage.cc +++ b/src/protocol/DnsMessage.cc @@ -16,8 +16,8 @@ Author: Liu Kai (liukaidx@sogou-inc.com) */ -#include #include +#include #include "dns_types.h" #include "dns_parser.h" #include "DnsMessage.h" diff --git a/src/protocol/dns_parser.c b/src/protocol/dns_parser.c index 2361d999..1cf4f641 100644 --- a/src/protocol/dns_parser.c +++ b/src/protocol/dns_parser.c @@ -16,10 +16,11 @@ Author: Liu Kai (liukaidx@sogou-inc.com) */ +#include +#include #include #include #include -#include #include "dns_types.h" #include "dns_parser.h" diff --git a/test/GNUmakefile b/test/GNUmakefile index c3ee1fde..cae814e7 100644 --- a/test/GNUmakefile +++ b/test/GNUmakefile @@ -15,16 +15,16 @@ ifeq ($(DEBUG),y) else cd $(BUILD_DIR) && $(CMAKE3) $(ROOT_DIR) endif - make -C $(BUILD_DIR) -f Makefile + $(MAKE) -C $(BUILD_DIR) -f Makefile check: mkdir -p $(BUILD_DIR) cd $(BUILD_DIR) && $(CMAKE3) $(ROOT_DIR) - make -C $(BUILD_DIR) check CTEST_OUTPUT_ON_FAILURE=1 + $(MAKE) -C $(BUILD_DIR) check CTEST_OUTPUT_ON_FAILURE=1 clean: ifeq ($(MAKE_FILE), $(wildcard $(MAKE_FILE))) - -make -f Makefile clean + -$(MAKE) -f Makefile clean endif rm -rf $(DEFAULT_BUILD_DIR) diff --git a/tutorial/GNUmakefile b/tutorial/GNUmakefile index 2e3dc021..5487f964 100644 --- a/tutorial/GNUmakefile +++ b/tutorial/GNUmakefile @@ -11,18 +11,17 @@ CMAKE3 := $(shell if which cmake3>/dev/null ; then echo cmake3; else echo cmake; all: mkdir -p $(BUILD_DIR) rm -rf $(DEFAULT_BUILD_DIR)/CMakeCache.txt - ifeq ($(DEBUG),y) cd $(BUILD_DIR) && $(CMAKE3) -D CMAKE_BUILD_TYPE=Debug -D CONSUL=$(CONSUL) -D KAFKA=$(KAFKA) -D MYSQL=$(MYSQL) -D REDIS=$(REDIS) $(ROOT_DIR) else cd $(BUILD_DIR) && $(CMAKE3) -D CONSUL=$(CONSUL) -D KAFKA=$(KAFKA) -D MYSQL=$(MYSQL) -D REDIS=$(REDIS) $(ROOT_DIR) endif - make -C $(BUILD_DIR) -f Makefile + $(MAKE) -C $(BUILD_DIR) -f Makefile clean: ifeq ($(MAKE_FILE), $(wildcard $(MAKE_FILE))) - -make -f Makefile clean + -$(MAKE) -f Makefile clean else ifeq ($(DEFAULT_BUILD_DIR), $(wildcard $(DEFAULT_BUILD_DIR))) - -make -C $(DEFAULT_BUILD_DIR) clean + -$(MAKE) -C $(DEFAULT_BUILD_DIR) clean endif rm -rf $(DEFAULT_BUILD_DIR) diff --git a/tutorial/tutorial-16-graceful_restart/bootstrap.c b/tutorial/tutorial-16-graceful_restart/bootstrap.c index d3c52bf0..f9aacba0 100644 --- a/tutorial/tutorial-16-graceful_restart/bootstrap.c +++ b/tutorial/tutorial-16-graceful_restart/bootstrap.c @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include diff --git a/tutorial/tutorial-19-dns_server.cc b/tutorial/tutorial-19-dns_server.cc index a5a9685d..c9c0c368 100644 --- a/tutorial/tutorial-19-dns_server.cc +++ b/tutorial/tutorial-19-dns_server.cc @@ -1,7 +1,8 @@ +#include +#include #include #include #include -#include #include "workflow/WFDnsServer.h" #include "workflow/WFFacilities.h"