From 2068ebb9c854f8d60c9000bb8468151906438c83 Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Thu, 16 Apr 2026 14:00:48 +0300 Subject: [PATCH] Use CPack when it is top project Signed-off-by: Raul Metsma --- .github/workflows/build.yml | 5 ++++- CMakeLists.txt | 20 +++++++++++--------- cdoc/Lock.cpp | 2 ++ etc/Doxyfile.in | 3 +-- test/CMakeLists.txt | 4 ++-- test/libcdoc_boost.cpp | 8 +++++++- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c5e1cdc..ab672b3c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,6 +23,9 @@ jobs: steps: - name: Install dependencies run: | + for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do + [ -f "$f" ] && sed -i 's|http://archive.ubuntu.com|http://azure.archive.ubuntu.com|g; s|http://security.ubuntu.com|http://azure.archive.ubuntu.com|g' "$f" + done echo 'path-exclude=/usr/share/man/*' > /etc/dpkg/dpkg.cfg.d/99-nodocs echo 'path-exclude=/usr/share/doc/*' >> /etc/dpkg/dpkg.cfg.d/99-nodocs echo 'path-exclude=/usr/share/doc-base/*' >> /etc/dpkg/dpkg.cfg.d/99-nodocs @@ -136,7 +139,7 @@ jobs: key: vcpkg-${{ matrix.image }}-${{ matrix.platform }}-${{ hashFiles('vcpkg.json') }} - name: Install dependencies run: winget install --silent --accept-source-agreements --accept-package-agreements swig doxygen - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '17' diff --git a/CMakeLists.txt b/CMakeLists.txt index eb29326a..49b3ad76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,19 +24,21 @@ set(CMAKE_VISIBILITY_INLINES_HIDDEN YES) set(BUILD_TOOLS YES CACHE BOOL "Build cdoc-tool" ) set(BUILD_SHARED_LIBS YES CACHE BOOL "Build library as SHARED or STATIC") set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Adds a postfix for debug-built libraries.") -set(CPACK_PACKAGE_VERSION ${VERSION}) -set(CPACK_GENERATOR RPM) -set(CPACK_PACKAGE_CONTACT "RIA ") -set(CPACK_PACKAGE_VENDOR RIA) -set(CPACK_PACKAGING_INSTALL_PREFIX /usr) -list(APPEND CPACK_RPM_RELOCATION_PATHS ${CMAKE_INSTALL_SYSCONFDIR}) -set(CPACK_RPM_FILE_NAME RPM-DEFAULT) -set(CPACK_RPM_PACKAGE_RELEASE_DIST ON) if(APPLE) set(FRAMEWORK YES CACHE BOOL "Build library as Mac OS X Framework") set(FRAMEWORK_DESTINATION /Library/Frameworks CACHE PATH "Mac OS X Framework install destination") endif() -include(CPack) +if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(CPACK_PACKAGE_VERSION ${VERSION}) + set(CPACK_GENERATOR RPM) + set(CPACK_PACKAGE_CONTACT "RIA ") + set(CPACK_PACKAGE_VENDOR RIA) + set(CPACK_PACKAGING_INSTALL_PREFIX /usr) + list(APPEND CPACK_RPM_RELOCATION_PATHS ${CMAKE_INSTALL_SYSCONFDIR}) + set(CPACK_RPM_FILE_NAME RPM-DEFAULT) + set(CPACK_RPM_PACKAGE_RELEASE_DIST ON) + include(CPack) +endif() include(GNUInstallDirs) option(LIBCDOC_WITH_DOCS "Generate documentation with Doxygen" ON) diff --git a/cdoc/Lock.cpp b/cdoc/Lock.cpp index 5014d2fe..6b660d2c 100644 --- a/cdoc/Lock.cpp +++ b/cdoc/Lock.cpp @@ -92,6 +92,8 @@ Lock::parseLabel(const std::string& label) } auto range_to_sv = [](auto range) constexpr { + if (range.empty()) + return std::string_view(); return std::string_view(&*range.begin(), std::ranges::distance(range)); }; for (const auto &part : std::ranges::split_view(label_to_prcss, '&')) diff --git a/etc/Doxyfile.in b/etc/Doxyfile.in index b1c4f4aa..6114a09e 100644 --- a/etc/Doxyfile.in +++ b/etc/Doxyfile.in @@ -955,8 +955,7 @@ INPUT = @PROJECT_SOURCE_DIR@/cdoc/CDoc.h \ @PROJECT_SOURCE_DIR@/cdoc/NetworkBackend.h \ @PROJECT_SOURCE_DIR@/cdoc/PKCS11Backend.h \ @PROJECT_SOURCE_DIR@/cdoc/WinBackend.h \ - @PROJECT_SOURCE_DIR@/cdoc/ILogger.h \ - @PROJECT_SOURCE_DIR@/cdoc/ConsoleLogger.h \ + @PROJECT_SOURCE_DIR@/cdoc/Logger.h \ @PROJECT_SOURCE_DIR@/doc/intro.md \ @PROJECT_SOURCE_DIR@/doc/overview.md \ @PROJECT_SOURCE_DIR@/doc/usage.md \ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1ff75108..1a98e568 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,7 +1,7 @@ add_executable(unittests libcdoc_boost.cpp - ../cdoc/CDocCipher.cpp - ../cdoc/Crypto.cpp) + ../cdoc/Crypto.cpp +) target_link_libraries(unittests OpenSSL::SSL diff --git a/test/libcdoc_boost.cpp b/test/libcdoc_boost.cpp index dc332a98..160111aa 100644 --- a/test/libcdoc_boost.cpp +++ b/test/libcdoc_boost.cpp @@ -73,6 +73,12 @@ const map ExpectedParsedLabel { {"cn", "JÕEORG,JAAK-KRISTJAN,38001085718"} }; +static string decodeName(fs::path path) +{ + auto name = path.u8string(); + return {reinterpret_cast(name.data()), name.size()}; +} + /** * @brief The base class for Test Fixtures. */ @@ -529,7 +535,7 @@ BOOST_FIXTURE_TEST_CASE_WITH_DECOR(DecryptWithPasswordAndLabel, DecryptFixture, * utf::description("Decrypting a file with password and given label")) { libcdoc::RcptInfo rcpt {.type=libcdoc::RcptInfo::LOCK, .label=Label, .secret=std::vector(Password.cbegin(), Password.cend())}; - decrypt({checkDataFile(sources[0])}, checkTargetFile("PasswordUsageWithoutLabel.cdoc"), tmpDataPath, rcpt); + decrypt({checkDataFile(sources[0])}, checkTargetFile("PasswordUsageWithoutLabel.cdoc"), decodeName(tmpDataPath), rcpt); } BOOST_AUTO_TEST_SUITE_END()