From 302c3e6f74737f33470a947a76fb375be841113a Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 10:20:10 +0800 Subject: [PATCH 01/14] update workflow --- .github/workflows/main.yml | 48 +++++++++++++++++++++++++++----------- CMakeLists.txt | 6 +++++ 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8b63ece..5423114 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,6 +9,14 @@ on: pull_request: branches: [ master ] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: write + pull-requests: write + # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: Windows: @@ -24,13 +32,12 @@ jobs: steps: - name: "Set Build Type" id: build_type + shell: pwsh run: | if ("${{ github.ref }}".StartsWith("refs/tags/")) { - echo "BUILD_TYPE::Release"; - echo "::set-output name=BUILD_TYPE::Release"; + echo "BUILD_TYPE=Release" >> $env:GITHUB_OUTPUT } else { - echo "BUILD_TYPE::Debug"; - echo "::set-output name=BUILD_TYPE::Debug"; + echo "BUILD_TYPE=Debug" >> $env:GITHUB_OUTPUT } if ("${{ matrix.arch }}" -eq "x64") { @@ -64,8 +71,17 @@ jobs: if: ${{ failure() || cancelled() }} shell: bash + - name: Cache vcpkg + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/vcpkg + key: vcpkg-${{ runner.os }}-${{ hashFiles('**/vcpkg.json') }} + restore-keys: | + vcpkg-${{ runner.os }}- + - name: 'Run CMake' uses: lukka/run-cmake@v10 + continue-on-error: false with: configurePreset: 'windows-msvc-vs17' buildPreset: ${{ startsWith(github.ref, 'refs/tags/') && 'windows-msvc-vs17-release' || 'windows-msvc-vs17' }} @@ -108,23 +124,21 @@ jobs: working-directory: "${{ github.workspace }}/../../_temp/windows/" - name: Release if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: draft: true - files: "D:/a/_temp/windows/libsimple-windows-${{ matrix.arch }}.zip" - # files: "${{ github.workspace }}/../../_temp/windows/libsimple-windows-${{ matrix.arch }}.zip" + files: "${{ github.workspace }}/../../_temp/windows/libsimple-windows-${{ matrix.arch }}.zip" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BUILD_TYPE: ${{ github.ref_type == 'tag' && 'Release' || 'Debug' }} Linux: runs-on: ${{ matrix.os }} strategy: fail-fast: true matrix: - include: - - os: ubuntu-20.04 - - os: ubuntu-22.04-arm - - os: ubuntu-latest + os: [ubuntu-20.04, ubuntu-22.04-arm, ubuntu-latest] + timeout-minutes: 60 steps: - name: "Release Build Type" if: startsWith(github.ref, 'refs/tags/') @@ -167,7 +181,7 @@ jobs: - name: 'Run CMake' uses: lukka/run-cmake@v10 - if: startsWith(github.ref, 'refs/tags/') != true + continue-on-error: false with: configurePreset: 'ninja-vcpkg-coverage' buildPreset: 'ninja-vcpkg-coverage' @@ -243,7 +257,7 @@ jobs: working-directory: "${{ github.workspace }}/build" - name: Release without changelog if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.os != 'ubuntu-latest' }} - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: draft: true files: ${{ github.workspace }}/build/libsimple-linux-${{ matrix.os }}.zip @@ -259,6 +273,13 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Build Summary + if: always() + run: | + echo "## Build Summary" >> $GITHUB_STEP_SUMMARY + echo "- Build Type: ${{ env.BUILD_TYPE }}" >> $GITHUB_STEP_SUMMARY + echo "- OS: ${{ runner.os }}" >> $GITHUB_STEP_SUMMARY + MacOS: runs-on: macos-latest needs: Linux @@ -348,4 +369,5 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: build-iOS + if: success() run: ./build-ios.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index bb6430e..4710ef7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,12 @@ if (MSVC) add_compile_options("$<$:/utf-8>") endif() +# Make Readline optional +option(USE_READLINE "Enable Readline support" OFF) +if(USE_READLINE) + find_package(Readline) +endif() + set(SQLITE3_HEADERS_DIR ${PROJECT_SOURCE_DIR}/contrib/sqlite3) set(SIMPLE_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src) From 3412025c5ba42dcbc7ed19bdfefef56283155a0a Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 10:42:41 +0800 Subject: [PATCH 02/14] disable shell --- CMakeLists.txt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4710ef7..9ae8365 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,12 +24,6 @@ if (MSVC) add_compile_options("$<$:/utf-8>") endif() -# Make Readline optional -option(USE_READLINE "Enable Readline support" OFF) -if(USE_READLINE) - find_package(Readline) -endif() - set(SQLITE3_HEADERS_DIR ${PROJECT_SOURCE_DIR}/contrib/sqlite3) set(SIMPLE_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src) @@ -40,7 +34,7 @@ if(BUILD_SQLITE3) set(SQLITE_INSTALL_DIR ${SQLITE_ROOT}) set(SQLITE_INCLUDE_DIR ${SQLITE_INSTALL_DIR}/include) set(SQLITE_LIB_DIR ${SQLITE_INSTALL_DIR}/lib) - if (NOT IOS) + if (Darwin) option(SQLITE_ENABLE_FTS5 "enables full text searches version 5" ON) option(BUILD_SHELL "build SQLite3 shell application" ON) add_subdirectory(contrib/sqlite3) From b7faa18eeaa5663c0a62131d26c74773dd62ba60 Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 10:43:25 +0800 Subject: [PATCH 03/14] add linux --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ae8365..4665628 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ if(BUILD_SQLITE3) set(SQLITE_INSTALL_DIR ${SQLITE_ROOT}) set(SQLITE_INCLUDE_DIR ${SQLITE_INSTALL_DIR}/include) set(SQLITE_LIB_DIR ${SQLITE_INSTALL_DIR}/lib) - if (Darwin) + if (Darwin or Linux) option(SQLITE_ENABLE_FTS5 "enables full text searches version 5" ON) option(BUILD_SHELL "build SQLite3 shell application" ON) add_subdirectory(contrib/sqlite3) From ebca1b06b1707f66456b113cc54f3d5619362ed3 Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 10:50:32 +0800 Subject: [PATCH 04/14] unix --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4665628..163be5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ if(BUILD_SQLITE3) set(SQLITE_INSTALL_DIR ${SQLITE_ROOT}) set(SQLITE_INCLUDE_DIR ${SQLITE_INSTALL_DIR}/include) set(SQLITE_LIB_DIR ${SQLITE_INSTALL_DIR}/lib) - if (Darwin or Linux) + if (UNIX) option(SQLITE_ENABLE_FTS5 "enables full text searches version 5" ON) option(BUILD_SHELL "build SQLite3 shell application" ON) add_subdirectory(contrib/sqlite3) From 72004820e132c4a62a992286db1dc8c3550ebcbd Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 11:14:19 +0800 Subject: [PATCH 05/14] god --- CMakePresets.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakePresets.json b/CMakePresets.json index 4501372..031d0bb 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -65,6 +65,10 @@ "CMAKE_INSTALL_PREFIX": { "type": "PATH", "value": "${sourceDir}/../../_temp/macos/install" + }, + "BUILD_SHELL": { + "type": "BOOL", + "value": "OFF" } } }, @@ -81,6 +85,10 @@ "type": "FILEPATH", "value": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake" }, + "BUILD_SHELL": { + "type": "BOOL", + "value": "OFF" + }, "BUILD_TESTING": { "type": "BOOL", "value": "OFF" From 1e8155b12a4846282a2d702d7056b9e030645a96 Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 11:27:37 +0800 Subject: [PATCH 06/14] again --- .github/workflows/main.yml | 8 -------- CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5423114..f1d23a0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -71,14 +71,6 @@ jobs: if: ${{ failure() || cancelled() }} shell: bash - - name: Cache vcpkg - uses: actions/cache@v3 - with: - path: ${{ github.workspace }}/vcpkg - key: vcpkg-${{ runner.os }}-${{ hashFiles('**/vcpkg.json') }} - restore-keys: | - vcpkg-${{ runner.os }}- - - name: 'Run CMake' uses: lukka/run-cmake@v10 continue-on-error: false diff --git a/CMakeLists.txt b/CMakeLists.txt index 163be5f..ac659b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ if(BUILD_SQLITE3) set(SQLITE_INSTALL_DIR ${SQLITE_ROOT}) set(SQLITE_INCLUDE_DIR ${SQLITE_INSTALL_DIR}/include) set(SQLITE_LIB_DIR ${SQLITE_INSTALL_DIR}/lib) - if (UNIX) + if (UNIX AND NOT IOS) option(SQLITE_ENABLE_FTS5 "enables full text searches version 5" ON) option(BUILD_SHELL "build SQLite3 shell application" ON) add_subdirectory(contrib/sqlite3) From cf1efc2b6fe38c04647a3cec8c6edbf8690c0c27 Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 11:36:07 +0800 Subject: [PATCH 07/14] update version --- contrib/CMakeRC.cmake | 2 +- contrib/ios.toolchain.cmake | 2 +- contrib/sqlite3/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/CMakeRC.cmake b/contrib/CMakeRC.cmake index 5cad705..1a6c3b8 100644 --- a/contrib/CMakeRC.cmake +++ b/contrib/CMakeRC.cmake @@ -34,7 +34,7 @@ endif() set(_version 2.0.0) -cmake_minimum_required(VERSION 3.3) +cmake_minimum_required(VERSION 3.19) include(CMakeParseArguments) if(COMMAND cmrc_add_resource_library) diff --git a/contrib/ios.toolchain.cmake b/contrib/ios.toolchain.cmake index edf5a10..0fbd671 100644 --- a/contrib/ios.toolchain.cmake +++ b/contrib/ios.toolchain.cmake @@ -129,7 +129,7 @@ # command. # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.19) # CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds. if(IOS_TOOLCHAIN_HAS_RUN) diff --git a/contrib/sqlite3/CMakeLists.txt b/contrib/sqlite3/CMakeLists.txt index 0a16bf4..8edef82 100644 --- a/contrib/sqlite3/CMakeLists.txt +++ b/contrib/sqlite3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.19) project(SQLite3 VERSION 3.31.1 LANGUAGES C From 127bb40c934b7ba98ba1349eb457105811ed72d0 Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 11:51:47 +0800 Subject: [PATCH 08/14] you know it --- examples/cpp/CMakeLists.txt | 2 +- src/CMakeLists.txt | 2 +- test/CMakeLists.txt | 2 +- test/CMakeLists.txt.in | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt index 34e780f..d0301ec 100644 --- a/examples/cpp/CMakeLists.txt +++ b/examples/cpp/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 3.19) project(simple_cpp_example) include_directories(${SQLITE3_HEADERS_DIR}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0c23eee..bfc3ab3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 3.19) project(simple CXX) if(SIMPLE_WITH_JIEBA) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e3e1e82..1909035 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 3.19) project(simple_tests) # https://github.com/maps-gpu/MAPS/issues/7#issuecomment-418200278 diff --git a/test/CMakeLists.txt.in b/test/CMakeLists.txt.in index ad17f66..ab7d9df 100644 --- a/test/CMakeLists.txt.in +++ b/test/CMakeLists.txt.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 3.19) cmake_policy(SET CMP0057 NEW) project(googletest-download NONE) From 6c265652b27a4276c81c6865e95b26e91b2278ae Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 12:02:31 +0800 Subject: [PATCH 09/14] don't know --- test/CMakeLists.txt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1909035..9d69b41 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -8,8 +8,12 @@ cmake_policy(SET CMP0057 NEW) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/src) # Download and unpack googletest at configure time +set(GTEST_CMAKE_ARGS + "-DCMAKE_POLICY_DEFAULT_CMP0048=NEW" + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" +) configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) -execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${GTEST_CMAKE_ARGS} . RESULT_VARIABLE result WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) if(result) @@ -32,13 +36,6 @@ add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src ${CMAKE_CURRENT_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL) -# The gtest/gtest_main targets carry header search path -# dependencies automatically when using CMake 2.8.11 or -# later. Otherwise we have to add them here ourselves. -if (CMAKE_VERSION VERSION_LESS 2.8.11) - include_directories("${gtest_SOURCE_DIR}/include") -endif() - include_directories(${SIMPLE_HEADERS_DIR}) include_directories(${SQLITE3_HEADERS_DIR}) set(SOURCE_FILES main.cpp pinyin_test.cc tokenizer_test.cc) From 4953e074575583f1dc0295be1a1c3fbc20bb914a Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 12:11:00 +0800 Subject: [PATCH 10/14] try --- test/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 9d69b41..1f52d2b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -10,7 +10,6 @@ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/src) # Download and unpack googletest at configure time set(GTEST_CMAKE_ARGS "-DCMAKE_POLICY_DEFAULT_CMP0048=NEW" - "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" ) configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${GTEST_CMAKE_ARGS} . @@ -19,6 +18,10 @@ execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${GTEST_CMAKE_A if(result) message(FATAL_ERROR "CMake step for googletest failed: ${result}") endif() + +# Set policy version minimum before adding googletest +set(CMAKE_POLICY_VERSION_MINIMUM "3.5" CACHE STRING "Minimum CMake policy version" FORCE) + execute_process(COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) From 7f8946edcce2163ddead8cb846e5f04d27114b6e Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 13:49:31 +0800 Subject: [PATCH 11/14] cmake version --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f1d23a0..0b233c0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -57,7 +57,7 @@ jobs: # uses: ammaraskar/msvc-problem-matcher@master # Install latest CMake - - uses: lukka/get-cmake@latest + - uses: lukka/get-cmake@3.31 # Restore from cache the previously built ports - name: Restore artifacts, or setup vcpkg From debe555282157a4243c10d52649054eeb8e8a0f0 Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 13:55:17 +0800 Subject: [PATCH 12/14] update --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0b233c0..4ae62b6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -57,7 +57,7 @@ jobs: # uses: ammaraskar/msvc-problem-matcher@master # Install latest CMake - - uses: lukka/get-cmake@3.31 + - uses: lukka/get-cmake@v3.31 # Restore from cache the previously built ports - name: Restore artifacts, or setup vcpkg From 93e9b82c4707eb111d01d9a79fd0ff03461dd9be Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 14:24:26 +0800 Subject: [PATCH 13/14] shit --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4ae62b6..61f0731 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -57,7 +57,7 @@ jobs: # uses: ammaraskar/msvc-problem-matcher@master # Install latest CMake - - uses: lukka/get-cmake@v3.31 + - uses: lukka/get-cmake@v3.31.6 # Restore from cache the previously built ports - name: Restore artifacts, or setup vcpkg From 9d596e770fe84eaafbcf29c9a053c9e840f7852b Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Wed, 9 Apr 2025 15:11:02 +0800 Subject: [PATCH 14/14] fix win --- CMakeLists.txt | 4 ++-- CMakePresets.json | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ac659b6..3fdf35f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,8 +34,8 @@ if(BUILD_SQLITE3) set(SQLITE_INSTALL_DIR ${SQLITE_ROOT}) set(SQLITE_INCLUDE_DIR ${SQLITE_INSTALL_DIR}/include) set(SQLITE_LIB_DIR ${SQLITE_INSTALL_DIR}/lib) - if (UNIX AND NOT IOS) - option(SQLITE_ENABLE_FTS5 "enables full text searches version 5" ON) + if (MSVC OR (UNIX AND NOT IOS)) + option(SQLITE_ENABLE_FTS5 "enables full text searches version 5" ON) option(BUILD_SHELL "build SQLite3 shell application" ON) add_subdirectory(contrib/sqlite3) endif() diff --git a/CMakePresets.json b/CMakePresets.json index 031d0bb..1ffae37 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -92,6 +92,14 @@ "BUILD_TESTING": { "type": "BOOL", "value": "OFF" + }, + "BUILD_SQLITE3": { + "type": "BOOL", + "value": "ON" + }, + "SQLITE_ENABLE_FTS5": { + "type": "BOOL", + "value": "ON" } }, "condition": {