diff options
author | Saturneric <[email protected]> | 2022-01-10 16:36:43 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2022-01-10 16:36:43 +0000 |
commit | 1d2a9bc99ddbfcd5aeece0b008a2383e84e1b03b (patch) | |
tree | ae0515bceef4bb19f0a57678c2b810c46b3ed05f | |
parent | Merge branch 'develop-2.0.5' into dev/ci/2.0.5 (diff) | |
parent | <refactor>(ci): update ci file. (diff) | |
download | GpgFrontend-1d2a9bc99ddbfcd5aeece0b008a2383e84e1b03b.tar.gz GpgFrontend-1d2a9bc99ddbfcd5aeece0b008a2383e84e1b03b.zip |
Merge branch 'dev/ci/2.0.4' into dev/ci/2.0.5
Diffstat (limited to '')
-rw-r--r-- | .github/workflows/debug.yml | 16 | ||||
-rw-r--r-- | .github/workflows/release-deb-package.yml (renamed from .github/workflows/release-linux-package.yml) | 60 | ||||
-rw-r--r-- | .github/workflows/release.yml | 18 | ||||
-rw-r--r-- | CMakeLists.txt | 132 | ||||
-rw-r--r-- | src/CMakeLists.txt | 12 | ||||
-rw-r--r-- | src/gpg/CMakeLists.txt | 6 | ||||
-rw-r--r-- | src/gpg/GpgConstants.cpp | 64 | ||||
-rw-r--r-- | third_party/CMakeLists.txt | 4 |
8 files changed, 191 insertions, 121 deletions
diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index b88b607e..4871fc8b 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -2,19 +2,15 @@ name: Debug Build & Package on: push: - branches: [ develop, develop_ui ] + branches: [ 'develop-**', 'dev/**' ] paths-ignore: - - '**/README.md' - - '**/README_CN.md' - - 'resource/ts/**' + - 'resource/locale/template/**' - 'docs/**' - '**.md' pull_request: - branches: [ develop ] + branches: [ 'develop-**', 'dev/**' ] paths-ignore: - - '**/README.md' - - '**/README_CN.md' - - 'resource/ts/**' + - 'resource/locale/template/**' - 'docs/**' - '**.md' @@ -137,7 +133,7 @@ jobs: - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} -DBUILD_CONFIG="test_ui" + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_TEST_UI=ON if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-10.15' - name: Build GpgFrontend @@ -150,7 +146,7 @@ jobs: run: | cd $(echo "/${{github.workspace}}" | sed 's/\\/\//g' | sed 's/://') mkdir build && cd build - cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} .. + cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_TEST_UI=ON .. # Build your program with the given configuration cmake --build . --config ${{env.BUILD_TYPE}} -- -j 2 if: matrix.os == 'windows-latest' diff --git a/.github/workflows/release-linux-package.yml b/.github/workflows/release-deb-package.yml index 6919f6ce..ba4b7819 100644 --- a/.github/workflows/release-linux-package.yml +++ b/.github/workflows/release-deb-package.yml @@ -2,19 +2,17 @@ name: Build Linux Packages on: push: - branches: [ main, develop-**, dev/** ] + branches: [ main, 'develop-**', 'dev/**' ] paths-ignore: - - '**/README.md' - - '**/README_CN.md' - - 'resource/ts/**' + - 'resource/locale/template/**' - 'docs/**' + - '**.md' pull_request: - branches: [ develop ] + branches: [ 'develop-**', 'dev/**' ] paths-ignore: - - '**/README.md' - - '**/README_CN.md' - - 'resource/ts/**' + - 'resource/locale/template/**' - 'docs/**' + - '**.md' env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) @@ -25,7 +23,7 @@ jobs: build: strategy: matrix: - os: [ 'ubuntu-18.04' ] + os: [ 'ubuntu-20.04' ] runs-on: ${{ matrix.os }} steps: @@ -37,35 +35,16 @@ jobs: id: vars run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - - name: Install Dependence (Linux) + - name: Install Dependence (Ubuntu 20.04) run: | sudo apt-get update - sudo apt-get -y install build-essential binutils git autoconf automake gettext texinfo - sudo apt-get -y install gcc-8 g++-8 libconfig++-dev libboost-all-dev + sudo apt-get -y install build-essential binutils git autoconf automake gettext texinfo qt5-default + sudo apt-get -y install gcc g++ libconfig++-dev libboost-all-dev sudo apt-get -y install gpgsm libxcb-xinerama0 libxcb-icccm4-dev libcups2-dev libdrm-dev libegl1-mesa-dev - sudo apt-get -y install libgcrypt11-dev libnss3-dev libpci-dev libpulse-dev libudev-dev libxtst-dev gyp ninja-build + sudo apt-get -y install libgcrypt20-dev libnss3-dev libpci-dev libpulse-dev libudev-dev libxtst-dev gyp ninja-build sudo apt-get -y install libglu1-mesa-dev libfontconfig1-dev libx11-xcb-dev libicu-dev libxcb-image0 sudo apt-get -y install libglu1-mesa-dev libfontconfig1-dev libx11-xcb-dev libicu-dev libxcb-* - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8 - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8 - sudo update-alternatives --set gcc "/usr/bin/gcc-8" - sudo update-alternatives --set g++ "/usr/bin/g++-8" - if: matrix.os == 'ubuntu-18.04' - - - name: Cache Qt - id: cache-qt - uses: actions/cache@v1 - with: - path: ../Qt - key: ${{ runner.os }}-QtCache-5.12.8 - if: matrix.os == 'ubuntu-18.04' - - - name: Install Qt - uses: jurplel/install-qt-action@v2 - with: - cached: ${{ steps.cache-qt.outputs.cache-hit }} - version: '5.12.8' - if: matrix.os == 'ubuntu-18.04' + if: matrix.os == 'ubuntu-20.04' - name: Build gpg-error run: | @@ -74,7 +53,6 @@ jobs: ./configure --enable-maintainer-mode --enable-static=yes && make -j2 sudo make install cd ${{github.workspace}} - if: matrix.os == 'ubuntu-18.04' - name: Build assuan run: | @@ -83,7 +61,6 @@ jobs: ./configure --enable-maintainer-mode --enable-static=yes && make -j2 sudo make install cd ${{github.workspace}} - if: matrix.os == 'ubuntu-18.04' - name: Build vmime run: | @@ -103,21 +80,18 @@ jobs: ./configure --enable-maintainer-mode --enable-static=yes --enable-languages=cpp && make -j2 sudo make install cd ${{github.workspace}} - if: matrix.os == 'ubuntu-18.04' - name: Build & Package GpgFrontend (Linux DEB Package) # Build your program with the given configuration run: | - cmake -B ${{github.workspace}}/build-deb -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} -DAPP_PACKAGE_DEB=ON -DLINUX_INSTALL_SOFTWARE=ON - cmake --build ${{github.workspace}}/build-deb --config {{$env.BUILD_TYPE}} -- -j 2 - cd ${{github.workspace}}/build-deb + cmake -B ${{github.workspace}}/build-deb-${{matrix.os}} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_BUILD_TYPE="Release" -DGENERATE_LINUX_INSTALL_SOFTWARE=ON + cmake --build ${{github.workspace}}/build-deb-${{matrix.os}} --config {{$env.BUILD_TYPE}} -- -j 2 + cd ${{github.workspace}}/build-deb-${{matrix.os}} make package cd ${{github.workspace}} - if: matrix.os == 'ubuntu-18.04' - name: Upload Artifact(Linux DEB) uses: actions/upload-artifact@master with: - name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}}-deb - path: ${{github.workspace}}/build-deb/gpgfrontend*.deb* - if: matrix.os == 'ubuntu-18.04' + name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}}-deb-${{matrix.os}} + path: ${{github.workspace}}/build-deb-${{matrix.os}}/gpgfrontend*.deb* diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7bb8120b..63ccfbe3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,19 +2,17 @@ name: Build & Package on: push: - branches: [ main, develop ] + branches: [ main, 'develop-**', 'dev/**' ] paths-ignore: - - '**/README.md' - - '**/README_CN.md' - - 'resource/ts/**' + - 'resource/locale/template/**' - 'docs/**' + - '**.md' pull_request: - branches: [ develop ] + branches: [ 'develop-**', 'dev/**' ] paths-ignore: - - '**/README.md' - - '**/README_CN.md' - - 'resource/ts/**' + - 'resource/locale/template/**' - 'docs/**' + - '**.md' env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) @@ -142,7 +140,7 @@ jobs: - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_STABLE=ON if: matrix.os == 'ubuntu-18.04' || matrix.os == 'macos-10.15' - name: Build GpgFrontend @@ -187,7 +185,7 @@ jobs: run: | cd $(echo "/${{github.workspace}}" | sed 's/\\/\//g' | sed 's/://') mkdir build && cd build - cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} .. + cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_STABLE=ON .. # Build your program with the given configuration cmake --build . --config ${{env.BUILD_TYPE}} -- -j 2 if: matrix.os == 'windows-latest' diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a96a11d..38df1d65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,84 @@ project(GpgFrontend VERSION 2.0.4 LANGUAGES CXX) message(STATUS "GpgFrontend Build Configuration Started CMAKE Version ${CMAKE_VERSION}") +# options +option(GPGFRONTEND_BUILD_TYPE_TEST_CORE + "Only compile the core and generate the unit test program" OFF) +option(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE + "Compile only the core and generate unit test programs that can evaluate test coverage" OFF) +option(GPGFRONTEND_BUILD_TYPE_TEST_UI + "Only generate a graphical interface with basic functions" OFF) +option(GPGFRONTEND_BUILD_TYPE_TEST_ALL + "Generate a graphical interface with all functions" OFF) +option(GPGFRONTEND_BUILD_TYPE_STABLE + "Generate release version" ON) +option(GENERATE_LINUX_INSTALL_SOFTWARE "Generate an installable version" OFF) +option(GENERATE_APP_PACKAGE_DEB "Generate DEB package" OFF) +option(CONFIGURE_FOR_XCODE_BUILD "Generate a version that can be successfully compiled and packaged in Xcode" OFF) + +# analyse options +if (GPGFRONTEND_BUILD_TYPE_TEST_CORE) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_core") +endif () + +if (GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_core_coverage") +endif () + +if (GPGFRONTEND_BUILD_TYPE_TEST_UI) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_ui") +endif () + +if (GPGFRONTEND_BUILD_TYPE_TEST_ALL) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_all") +endif () + +if (GPGFRONTEND_BUILD_TYPE_STABLE) + + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + unset(GPGFRONTEND_BUILD_CONFIG) + + set(STABLE_APPLICATION_BUILD 1) +endif () + +if (GENERATE_LINUX_INSTALL_SOFTWARE) + + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + unset(GPGFRONTEND_BUILD_CONFIG) + + set(LINUX_INSTALL_SOFTWARE 1) + set(GENERATE_APP_PACKAGE_DEB 1) +endif () + +if (GENERATE_LINUX_INSTALL_SOFTWARE AND GENERATE_APP_PACKAGE_DEB) + set(APP_PACKAGE_DEB 1) +endif () + +if (CONFIGURE_FOR_XCODE_BUILD) + set(GENERATE_LINUX_INSTALL_SOFTWARE 0) + set(GENERATE_APP_PACKAGE_DEB 0) + set(LINUX_INSTALL_SOFTWARE 0) + set(APP_PACKAGE_DEB 0) + + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + + unset(GPGFRONTEND_BUILD_CONFIG) + set(STABLE_APPLICATION_BUILD 1) +endif () + # C++ #Detect Compiler if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") @@ -34,23 +112,20 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Check Env Variables Before Configuring -if (CMAKE_BUILD_TYPE) - message(STATUS "PreCheck CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}") -else () +if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") - message(STATUS "Set CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}") endif () # Specify different compilation modes if (GPGFRONTEND_BUILD_CONFIG) # Test Build if (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_core") - message(STATUS "Switch TEST_CORE_BUILD") + message(STATUS "Switch Build Configure TEST_CORE_BUILD") set(TEST_CORE_BUILD 1) set(AppName GpgFrontendCoreTest) # Test Build With Coverage Test elseif (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_core_coverage") - message(STATUS "Switch TEST_COVERAGE_BUILD") + message(STATUS "Switch Build Configure TEST_COVERAGE_BUILD") set(TEST_CORE_BUILD 1) if (USING_COMPILER_CLANG OR USING_COMPILER_GCC) set(TEST_COVERAGE_BUILD 1) @@ -62,35 +137,26 @@ if (GPGFRONTEND_BUILD_CONFIG) set(AppName GpgFrontendTest) # Test Build with minimum UI elseif (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_ui") - message(STATUS "Switch TEST_MINIMUM_UI_BUILD") + message(STATUS "Switch Build Configure TEST_MINIMUM_UI_BUILD") set(MINIMUM_APPLICATION_BUILD 1) set(AppName GpgFrontend) elseif (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_all") - message(STATUS "Switch FULL_APPLICATION_BUILD") + message(STATUS "Switch Build Configure FULL_APPLICATION_BUILD") set(FULL_APPLICATION_BUILD 1) set(AppName GpgFrontend) endif () else () - message(STATUS "Switch Default STABLE_APPLICATION_BUILD") + message(STATUS "Switch Build Configure STABLE_APPLICATION_BUILD") set(STABLE_APPLICATION_BUILD 1) set(AppName GpgFrontend) endif () -if (EXECUTABLE_OUTPUT_PATH) - message(STATUS "PreCheck EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}") -else () - set(EXECUTABLE_OUTPUT_PATH "./") - message(STATUS "Set EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}") -endif () - # Output Env Variables -message(STATUS "Define EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}") message(STATUS "Define CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}") if (${CMAKE_BUILD_TYPE} STREQUAL "Release") set(BUILD_FLAG 0) ADD_DEFINITIONS(-DRELEASE) - message(STATUS "Build Type RELEASE") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") # Release Version force to build using option STABLE_APPLICATION_BUILD set(FULL_APPLICATION_BUILD 0) @@ -98,7 +164,6 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Release") else () set(BUILD_FLAG 1) ADD_DEFINITIONS(-DDEBUG) - message(STATUS "Build Type DEBUG") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g") # Generate branch coverage information using gcc if (TEST_COVERAGE_BUILD) @@ -140,12 +205,12 @@ set(BUILD_VERSION ${PROJECT_VERSION}_${CMAKE_SYSTEM}_${CMAKE_SYSTEM_PROCESSOR}_$ set(GIT_VERSION ${GIT_BRANCH_NAME}_${GIT_COMMIT_HASH}) string(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%d %H:%M:%S") -message(STATUS "Build Timestamp ${BUILD_TIMESTAMP}") -message(STATUS "Build Version ${BUILD_VERSION}") -message(STATUS "Git Version ${GIT_VERSION}") +message(STATUS "GpgFrontend Build Timestamp ${BUILD_TIMESTAMP}") +message(STATUS "GpgFrontend Build Version ${BUILD_VERSION}") +message(STATUS "GpgFrontend Git Repo Version ${GIT_VERSION}") IF (MINGW) - message(STATUS "Configuration For OS Platform Microsoft Windows") + message(STATUS "GpgFrontend Configuration For OS Platform Microsoft Windows") message(STATUS "Build Environment MINGW") set(OS_PLATFORM 0) @@ -164,7 +229,7 @@ IF (MINGW) endif () if (APPLE) - message(STATUS "Configuration For OS Platform MacOS") + message(STATUS "GpgFrontend Configuration For OS Platform MacOS") set(OS_PLATFORM 1) ADD_DEFINITIONS(-DMACOS) @@ -196,7 +261,7 @@ endif () if (LINUX) - message(STATUS "Configuration For OS Platform LINUX") + message(STATUS "GpgFrontend Configuration For OS Platform LINUX") set(OS_PLATFORM 2) ADD_DEFINITIONS(-DLINUX) @@ -222,18 +287,12 @@ if (LINUX) endif () -message(STATUS "OS_PLATFORM ${OS_PLATFORM}") - if (GPG_STANDALONE_MODE) add_compile_definitions(GPG_STANDALONE_MODE) endif () -# Basic Envirnoment Configure -set(BASIC_ENV_CONFIG 1) -set(QT_MOC_CONFIG 1) -set(EASY_LOGGING_PP 1) - if (LINUX_INSTALL_SOFTWARE) + message(STATUS "Configure Linux Install ON") include(GNUInstallDirs) set(INSTALL_GPGFRONTEND_APP 1) set(APP_INSTALL_FLAG LINUX_INSTALL) @@ -244,6 +303,10 @@ else () add_compile_definitions(BUNDLE_BUILD) endif () +# Basic Environment Configure +set(BASIC_ENV_CONFIG 1) +set(QT_MOC_CONFIG 1) +set(EASY_LOGGING_PP 1) if (FULL_APPLICATION_BUILD) message(STATUS "Build Full Application") @@ -291,9 +354,9 @@ find_package(Boost COMPONENTS date_time filesystem REQUIRED) if (QT5_ENV_SUPPORT) # Support Qt version Both 5.12.x and 5.15.x if (LINUX_INSTALL_SOFTWARE) - find_package(Qt5 5.12 COMPONENTS Core Test Widgets PrintSupport Network REQUIRED) - else () find_package(Qt5 COMPONENTS Core Test Widgets PrintSupport Network REQUIRED) + else () + find_package(Qt5 5.15 COMPONENTS Core Test Widgets PrintSupport Network REQUIRED) endif () # find_package(Qt5 5.15.2 EXACT COMPONENTS Core Test Widgets PrintSupport Network LinguistTools REQUIRED) # Qt configuration @@ -303,7 +366,6 @@ if (QT5_ENV_SUPPORT) set(CMAKE_AUTORCC_OPTIONS "--compress;9") set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${CMAKE_SOURCE_DIR}/ui) - message(STATUS "CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS}") endif () diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index be587533..512b7cbd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -38,7 +38,6 @@ if (APPLICATION_BUILD) # Set Binary Output Path set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}) endif () - message(STATUS "CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") endif () @@ -56,7 +55,6 @@ if (APPLICATION_BUILD) else () set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) endif () - message(STATUS "RESOURCE_OUTPUT_DIRECTORY ${RESOURCE_OUTPUT_DIRECTORY}") endif () # Get ALL SOURCE FILES @@ -71,7 +69,6 @@ if (MULTI_LANG_SUPPORT) FIND_PROGRAM(GETTEXT_XGETTEXT_EXECUTABLE xgettext) set(LOCALE_OUTPUT_PATH ${RESOURCE_OUTPUT_DIRECTORY}/locales) - message(STATUS "LOCALE_OUTPUT_PATH ${LOCALE_OUTPUT_PATH}") if (NOT GETTEXT_MSGFMT_EXECUTABLE OR NOT GETTEXT_XGETTEXT_EXECUTABLE) message(ERROR "msgfmt or xgettext not found. Translations will *not* be installed") @@ -86,12 +83,11 @@ if (MULTI_LANG_SUPPORT) file(GLOB ALL_PO_FILES ${CMAKE_SOURCE_DIR}/resource/locale/po/*.po) SET(GMO_FILES) - message(STATUS "ALL_PO_FILES ${ALL_PO_FILES}") foreach (_poFile ${ALL_PO_FILES}) GET_FILENAME_COMPONENT(_poFileName ${_poFile} NAME) string(REGEX REPLACE "\\.[^.]*$" "" _langName ${_poFileName}) - message(STATUS "_poFileName ${_langName}") + message(STATUS "GNU gettext po file ${_langName}") make_directory(${RESOURCE_OUTPUT_DIRECTORY}/locales) make_directory(${RESOURCE_OUTPUT_DIRECTORY}/locales/${_langName}/LC_MESSAGES) add_custom_command( @@ -250,7 +246,6 @@ if (APPLICATION_BUILD) set(GPGFRONTEND_LIBS ${GPGFRONTEND_AFTER_UI_LIBS} gpgfrontend_ui gpgfrontend_core ${GPGFRONTEND_BEFORE_UI_LIBS} easy_logging_pp) set(QT_DEPENDENCY_LIBS Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core) - message(STATUS "Boost Libraries ${Boost_LIBRARIES}") IF (MINGW) message(STATUS "Link Application Static Library For MINGW") @@ -305,11 +300,11 @@ if (LINUX_INSTALL_SOFTWARE) DESTINATION /usr/share/icons/hicolor/) endif () if (MULTI_LANG_SUPPORT) - message(STATUS "Local Output Path ${LOCALE_OUTPUT_PATH}") install(DIRECTORY ${LOCALE_OUTPUT_PATH}/ DESTINATION ${CMAKE_INSTALL_FULL_LOCALEDIR}) endif () if (APP_PACKAGE_DEB) + message(STATUS "Configure Deb Package") SET(CPACK_GENERATOR "DEB") set(CPACK_INSTALL_PREFIX "/usr/local/") set(CPACK_PACKAGE_NAME "gpgfrontend") @@ -326,3 +321,6 @@ if (LINUX_INSTALL_SOFTWARE) endif () endif () +message(STATUS "Resource Files: ${RESOURCE_OUTPUT_DIRECTORY}") +message(STATUS "Locale Files: ${LOCALE_OUTPUT_PATH}") +message(STATUS "Runtime Files: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") diff --git a/src/gpg/CMakeLists.txt b/src/gpg/CMakeLists.txt index 604191f3..f0c4c72e 100644 --- a/src/gpg/CMakeLists.txt +++ b/src/gpg/CMakeLists.txt @@ -10,14 +10,12 @@ set(UTILS_DIR ${CMAKE_SOURCE_DIR}/utils) set(GPGME_LIB_DIR ${UTILS_DIR}/gpgme/lib) if (EASY_LOGGING_PP) - message(STATUS "Link EASY_LOGGING_PP") - set(THIRD_PARTY_LIBS easy_logging_pp config++) + set(THIRD_PARTY_LIBS ${THIRD_PARTY_LIBS} easy_logging_pp) endif () +set(THIRD_PARTY_LIBS ${THIRD_PARTY_LIBS} config++) set(BOOST_LIBS Boost::date_time Boost::filesystem) -message(STATUS "Third Party Libraries " ${THIRD_PARTY_LIBS}) - if (MINGW) message(STATUS "Link GPG Static Library For MINGW") target_link_libraries(gpgfrontend_core ${THIRD_PARTY_LIBS} diff --git a/src/gpg/GpgConstants.cpp b/src/gpg/GpgConstants.cpp index 100bf8f8..2c9403da 100644 --- a/src/gpg/GpgConstants.cpp +++ b/src/gpg/GpgConstants.cpp @@ -49,6 +49,9 @@ const char* GpgFrontend::GpgConstants::PGP_PRIVATE_KEY_BEGIN = const char* GpgFrontend::GpgConstants::GPG_FRONTEND_SHORT_CRYPTO_HEAD = "GpgF_Scpt://"; +/// +/// \param err gpg_error_t +/// \return gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err) { if (gpg_err_code(err) != GPG_ERR_NO_ERROR) { LOG(ERROR) << "[" << _("Error") << " " << gpg_err_code(err) << "] " @@ -58,6 +61,10 @@ gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err) { return err; } +/// +/// \param err +/// \param predict +/// \return gpg_err_code_t GpgFrontend::check_gpg_error_2_err_code(gpgme_error_t err, gpgme_error_t predict) { auto err_code = gpg_err_code(err); @@ -69,7 +76,10 @@ gpg_err_code_t GpgFrontend::check_gpg_error_2_err_code(gpgme_error_t err, return err_code; } -// error-handling +/// +/// \param err +/// \param comment +/// \return gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err, const std::string& comment) { if (gpg_err_code(err) != GPG_ERR_NO_ERROR) { @@ -80,6 +90,9 @@ gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err, return err; } +/// +/// \param fingerprint +/// \return std::string GpgFrontend::beautify_fingerprint( GpgFrontend::BypeArrayConstRef fingerprint) { auto len = fingerprint.size(); @@ -93,14 +106,16 @@ std::string GpgFrontend::beautify_fingerprint( return out.str(); } -// trim from start (in place) +/// +/// \param s static inline void ltrim(std::string& s) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](unsigned char ch) { return !std::isspace(ch); })); } -// trim from end (in place) +/// +/// \param s static inline void rtrim(std::string& s) { s.erase(std::find_if(s.rbegin(), s.rend(), [](unsigned char ch) { return !std::isspace(ch); }) @@ -108,13 +123,18 @@ static inline void rtrim(std::string& s) { s.end()); } -// trim from both ends (in place) +/// +/// \param s +/// \return static inline std::string trim(std::string& s) { ltrim(s); rtrim(s); return s; } +/// +/// \param utf8_path +/// \return std::string GpgFrontend::read_all_data_in_file(const std::string& utf8_path) { using namespace boost::filesystem; class path file_info(utf8_path.c_str()); @@ -133,6 +153,10 @@ std::string GpgFrontend::read_all_data_in_file(const std::string& utf8_path) { return in_buffer; } +/// +/// \param utf8_path +/// \param out_buffer +/// \return bool GpgFrontend::write_buffer_to_file(const std::string& utf8_path, const std::string& out_buffer) { using namespace boost::filesystem; @@ -149,6 +173,9 @@ bool GpgFrontend::write_buffer_to_file(const std::string& utf8_path, return true; } +/// +/// \param path +/// \return std::string GpgFrontend::get_file_extension(const std::string& path) { // Create a path object from given string boost::filesystem::path path_obj(path); @@ -162,6 +189,9 @@ std::string GpgFrontend::get_file_extension(const std::string& path) { return {}; } +/// +/// \param path +/// \return std::string GpgFrontend::get_only_file_name_with_path(const std::string& path) { // Create a path object from given string boost::filesystem::path path_obj(path); @@ -174,12 +204,9 @@ std::string GpgFrontend::get_only_file_name_with_path(const std::string& path) { return {}; } -/* - * isSigned returns: - * - 0, if text isn't signed at all - * - 1, if text is partially signed - * - 2, if text is completly signed - */ +/// +/// \param text +/// \return int GpgFrontend::text_is_signed(GpgFrontend::BypeArrayRef text) { using boost::algorithm::ends_with; using boost::algorithm::starts_with; @@ -195,36 +222,53 @@ int GpgFrontend::text_is_signed(GpgFrontend::BypeArrayRef text) { return 0; } +/// +/// \param result +/// \return GpgFrontend::GpgEncrResult GpgFrontend::_new_result( gpgme_encrypt_result_t&& result) { gpgme_result_ref(result); return {result, _result_ref_deletor()}; } +/// +/// \param result +/// \return GpgFrontend::GpgDecrResult GpgFrontend::_new_result( gpgme_decrypt_result_t&& result) { gpgme_result_ref(result); return {result, _result_ref_deletor()}; } +/// +/// \param result +/// \return GpgFrontend::GpgSignResult GpgFrontend::_new_result( gpgme_sign_result_t&& result) { gpgme_result_ref(result); return {result, _result_ref_deletor()}; } +/// +/// \param result +/// \return GpgFrontend::GpgVerifyResult GpgFrontend::_new_result( gpgme_verify_result_t&& result) { gpgme_result_ref(result); return {result, _result_ref_deletor()}; } +/// +/// \param result +/// \return GpgFrontend::GpgGenKeyResult GpgFrontend::_new_result( gpgme_genkey_result_t&& result) { gpgme_result_ref(result); return {result, _result_ref_deletor()}; } +/// +/// \param _result void GpgFrontend::_result_ref_deletor::operator()(void* _result) { DLOG(INFO) << _("Called") << _result; if (_result != nullptr) gpgme_result_unref(_result); diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index 01e8c2ca..874fe37f 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -1,10 +1,10 @@ if (EASY_LOGGING_PP) - message(STATUS "Build easyloggingpp") + message(STATUS "Build dependency easyloggingpp") add_subdirectory(easyloggingpp) endif () if (APP_IMAGE_UPDATE) - message(STATUS "Build AppImageUpdate") + message(STATUS "Build dependency AppImageUpdate") set(USE_SYSTEM_BOOST 1) set(USE_SYSTEM_XZ 1) set(USE_SYSTEM_SQUASHFUSE 1) |