From f19b113ccb86c0db5b335cba6455f1175377f21e Mon Sep 17 00:00:00 2001 From: Bob Chen Date: Sat, 26 Oct 2024 17:09:19 +0800 Subject: [PATCH] Re-add PHOTON_BUILD_DEPENDENCIES in CI workflow --- .github/workflows/ci.linux.arm.yml | 28 ------------------- .github/workflows/ci.linux.x86_64.yml | 23 +++++++++++++++ CMake/Finduring.cmake | 9 +++++- CMake/build-from-src.cmake | 2 +- README.md | 4 +-- common/test/test_objcache.cpp | 4 +-- ...024-10-14-stackful-coroutine-made-fast.mdx | 3 ++ fs/test/test_exportfs.cpp | 2 +- io/iouring-wrapper.cpp | 4 +-- 9 files changed, 42 insertions(+), 37 deletions(-) diff --git a/.github/workflows/ci.linux.arm.yml b/.github/workflows/ci.linux.arm.yml index 94e5e0bc..0218227c 100644 --- a/.github/workflows/ci.linux.arm.yml +++ b/.github/workflows/ci.linux.arm.yml @@ -41,31 +41,3 @@ jobs: nohup redis-server & ctest -E test-lockfree --timeout 3600 -V pkill redis-server - - gcc921-build-debug: - runs-on: [self-hosted, Linux, ARM64] - - container: - image: ghcr.io/alibaba/photon-ut-base:latest - options: --cpus 4 - - steps: - - uses: szenius/set-timezone@v2.0 - with: - timezoneLinux: "Asia/Shanghai" - timezoneMacos: "Asia/Shanghai" - timezoneWindows: "China Standard Time" - - - uses: actions/checkout@v4 - - - name: Build - run: | - source /opt/rh/gcc-toolset-9/enable - cmake -B build \ - -D CMAKE_BUILD_TYPE=Debug \ - -D PHOTON_ENABLE_ECOSYSTEM=ON \ - -D PHOTON_BUILD_TESTING=ON \ - -D PHOTON_ENABLE_SASL=ON \ - -D PHOTON_ENABLE_FUSE=ON \ - -D PHOTON_ENABLE_EXTFS=ON - cmake --build build -j $(nproc) -- VERBOSE=1 diff --git a/.github/workflows/ci.linux.x86_64.yml b/.github/workflows/ci.linux.x86_64.yml index 3999642c..991e0baf 100644 --- a/.github/workflows/ci.linux.x86_64.yml +++ b/.github/workflows/ci.linux.x86_64.yml @@ -211,6 +211,29 @@ jobs: cd build && ctest -E test-lockfree --timeout 3600 -V pkill redis-server + debug-build-from-source: + runs-on: ubuntu-latest + container: + image: almalinux:8 + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + dnf -q -y install git gcc-c++ cmake gcc-toolset-9-gcc-c++ + dnf -q -y install autoconf automake libtool + source /opt/rh/gcc-toolset-9/enable + cmake -B build -D CMAKE_BUILD_TYPE=Debug \ + -D PHOTON_ENABLE_ECOSYSTEM=ON \ + -D PHOTON_BUILD_TESTING=ON \ + -D PHOTON_ENABLE_SASL=OFF \ + -D PHOTON_ENABLE_FUSE=OFF \ + -D PHOTON_ENABLE_URING=ON \ + -D PHOTON_ENABLE_EXTFS=OFF \ + -D PHOTON_BUILD_DEPENDENCIES=ON \ + -D PHOTON_OPENSSL_SOURCE="" \ + -D PHOTON_CURL_SOURCE="" + cmake --build build -j $(nproc) -- VERBOSE=1 + fstack: runs-on: ubuntu-latest container: diff --git a/CMake/Finduring.cmake b/CMake/Finduring.cmake index 5899c826..2260e386 100644 --- a/CMake/Finduring.cmake +++ b/CMake/Finduring.cmake @@ -1,7 +1,14 @@ +set(URING_VERSION 2.3) + find_path(URING_INCLUDE_DIRS liburing.h) find_library(URING_LIBRARIES uring) find_package_handle_standard_args(uring DEFAULT_MSG URING_LIBRARIES URING_INCLUDE_DIRS) -mark_as_advanced(URING_INCLUDE_DIRS URING_LIBRARIES) \ No newline at end of file +mark_as_advanced(URING_INCLUDE_DIRS URING_LIBRARIES) + +get_filename_component(URING_LIB_BASE ${URING_LIBRARIES} DIRECTORY) +if (NOT EXISTS "${URING_LIB_BASE}/liburing.so.${URING_VERSION}") + message(FATAL_ERROR "Requires liburing ${URING_VERSION}. Install it to system or try -D PHOTON_BUILD_DEPENDENCIES=ON") +endif () \ No newline at end of file diff --git a/CMake/build-from-src.cmake b/CMake/build-from-src.cmake index 5a7117bc..d1b12e4a 100644 --- a/CMake/build-from-src.cmake +++ b/CMake/build-from-src.cmake @@ -75,7 +75,7 @@ function(build_from_src [dep]) ExternalProject_Get_Property(googletest SOURCE_DIR) ExternalProject_Get_Property(googletest BINARY_DIR) set(GOOGLETEST_INCLUDE_DIRS ${SOURCE_DIR}/googletest/include ${SOURCE_DIR}/googlemock/include PARENT_SCOPE) - set(GOOGLETEST_LIBRARIES ${BINARY_DIR}/lib/libgmock.a ${BINARY_DIR}/lib/libgtest.a PARENT_SCOPE) + set(GOOGLETEST_LIBRARIES ${BINARY_DIR}/lib/libgmock.a ${BINARY_DIR}/lib/libgtest_main.a ${BINARY_DIR}/lib/libgtest.a PARENT_SCOPE) elseif (dep STREQUAL "openssl") set(BINARY_DIR ${PROJECT_BINARY_DIR}/openssl-build) diff --git a/README.md b/README.md index 90d4e415..09988207 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ [PhotonlibOS.github.io](https://photonlibos.github.io) ## What's New -* We present a article to illustrate why Photon's stackful coroutine is fast. -[link](https://photonlibos.github.io/blog/stackful-coroutine-made-fast) +* We present an article to illustrate the theory of Photon's coroutine. +[Stackful Coroutine Made Fast](https://photonlibos.github.io/blog/stackful-coroutine-made-fast) * Version 0.8 has been released in August 2024 * Feb 2024,[中文文档](https://photonlibos.github.io/cn/docs/category/introduction)在官网上线了 * Since 0.7, Photon will use release branches to enhance the reliability of software delivery. Bugfix will be merged into a stable release at first, then to higher release versions, and finally main. diff --git a/common/test/test_objcache.cpp b/common/test/test_objcache.cpp index 16e206a0..1178cc8b 100644 --- a/common/test/test_objcache.cpp +++ b/common/test/test_objcache.cpp @@ -136,11 +136,11 @@ TEST(ObjectCache, ctor_may_yield_and_null) { photon::thread_create(&ph_act, &a); } sem.wait(10); - EXPECT_EQ(1, ocache._set.size()); + EXPECT_EQ(1UL, ocache._set.size()); ocache.expire(); photon::thread_usleep(1100UL * 1000); ocache.expire(); - EXPECT_EQ(0, ocache._set.size()); + EXPECT_EQ(0UL, ocache._set.size()); } TEST(ObjectCache, multithread) { diff --git a/doc/blog/2024-10-14-stackful-coroutine-made-fast.mdx b/doc/blog/2024-10-14-stackful-coroutine-made-fast.mdx index a71f3628..fe39ca78 100644 --- a/doc/blog/2024-10-14-stackful-coroutine-made-fast.mdx +++ b/doc/blog/2024-10-14-stackful-coroutine-made-fast.mdx @@ -3,4 +3,7 @@ slug: stackful-coroutine-made-fast title: Stackful Coroutine Made Fast --- + +Download pdf + \ No newline at end of file diff --git a/fs/test/test_exportfs.cpp b/fs/test/test_exportfs.cpp index 8ea6e761..81e995f0 100644 --- a/fs/test/test_exportfs.cpp +++ b/fs/test/test_exportfs.cpp @@ -54,7 +54,7 @@ static std::atomic work(0); template int callback(void*, AsyncResult* ret) { - EXPECT_EQ(val, ret->result); + EXPECT_EQ(val, (uint64_t) ret->result); LOG_DEBUG("DONE `", VALUE(ret->operation)); work--; return 0; diff --git a/io/iouring-wrapper.cpp b/io/iouring-wrapper.cpp index 8efe34ae..1faa6c35 100644 --- a/io/iouring-wrapper.cpp +++ b/io/iouring-wrapper.cpp @@ -188,7 +188,7 @@ class iouringEngine : public MasterEventEngine, public CascadingEventEngine, pub ioCtx timer_ctx(true, false); __kernel_timespec ts; auto usec = timeout.timeout_us(); - if (usec < std::numeric_limits::max()) { + if (usec < (uint64_t) std::numeric_limits::max()) { sqe->flags |= IOSQE_IO_LINK; ts = usec_to_timespec(usec); sqe = _get_sqe(); @@ -334,7 +334,7 @@ class iouringEngine : public MasterEventEngine, public CascadingEventEngine, pub ssize_t wait_and_fire_events(uint64_t timeout) override { // Prepare own timeout - if (timeout > std::numeric_limits::max()) { + if (timeout > (uint64_t) std::numeric_limits::max()) { timeout = std::numeric_limits::max(); }