From 9bb1d6ffd50937e2f275b3c4c079b404fb00718a Mon Sep 17 00:00:00 2001 From: Kang Lin Date: Wed, 21 Feb 2024 11:58:28 +0800 Subject: [PATCH] CI: modify ci --- .github/workflows/android.yml | 98 ++++++++++------- .github/workflows/macos.yml | 46 ++++---- .github/workflows/mingw.yml | 3 +- .github/workflows/msvc.yml | 43 ++++---- .github/workflows/ubuntu.yml | 31 ++++-- ChangeLog.md | 6 +- ChangeLog_zh_CN.md | 5 +- README.md | 2 +- appveyor.yml | 198 +++++++++++++++++----------------- ci/build.sh | 6 +- debian/changelog | 2 +- deploy.sh | 2 +- vcpkg.json | 46 ++++++++ 13 files changed, 286 insertions(+), 202 deletions(-) create mode 100644 vcpkg.json diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index cf4c2d7..199df82 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -14,7 +14,7 @@ jobs: matrix: BUILD_TYPE: [Release] qt_arch: [android_arm64_v8a, android_armv7, android_x86_64] - qt_version: [6.6.1] + qt_version: [6.6.2] include: - BUILD_TYPE: Release qt_arch: android_arm64_v8a @@ -39,7 +39,7 @@ jobs: VCPKGGITCOMMITID: eb33d2f7583405fca184bcdf7fdd5828ec88ac05 ANDROID_PLATFORM: android-23 ANDROID_NATIVE_API_LEVEL: 23 - qt_modules: 'qtimageformats qtmultimedia qtscxml' + qt_modules: 'qtwebengine qtimageformats qtmultimedia qtscxml qt5compat' # Map the job outputs to step outputs outputs: @@ -59,21 +59,61 @@ jobs: cmake -E make_directory ${{github.workspace}}/build - name: Cache installed - #if: false uses: actions/cache@v2 id: cache-installed with: path: | ${{env.INSTALL_DIR}} - key: cache-installed-android-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}} + key: install_android_qt${{matrix.qt_version}}_${{matrix.qt_arch}}_${{matrix.BUILD_TYPE}} - - name: Cache Qt - #if: false - id: cache-qt - uses: actions/cache@v1 # not v2! + - name: run-vcpkg + uses: lukka/run-vcpkg@v11 with: - path: ${{env.TOOSL_DIR}}/qt - key: qt${{matrix.qt_version}}_${{matrix.qt_arch}} + # Indicates whether to only setup vcpkg (i.e. installing it and setting the environment variables VCPKG_ROOT, RUNVCPK_VCPKG_ROOT), without installing any port. + #setupOnly: # optional + #vcpkgGitURL: https://github.com/KangLin/vcpkg.git + vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}} + vcpkgDirectory: ${{ runner.workspace }}/vcpkg/ + + - name: build SeetaFace2 + working-directory: ${{env.SOURCE_DIR}} + run: | + if [ ! -f ${{env.INSTALL_DIR}}/lib/cmake/SeetaFaceDetectorConfig.cmake ]; then + git clone https://github.com/KangLin/SeetaFace2.git + cd SeetaFace2 + cmake -E make_directory build + cd build + cmake .. \ + -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ + -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ + -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ + -DVCPKG_CHAINLbuildOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ + -DANDROID_ABI=${{matrix.ANDROID_ABI}} \ + -DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} \ + -DBUILD_EXAMPLE=OFF + cmake --build . --config ${{matrix.BUILD_TYPE}} + cmake --build . --config ${{matrix.BUILD_TYPE}} --target install + fi + + - name: build libfacedetection + working-directory: ${{env.SOURCE_DIR}} + run: | + if [ ! -f ${{env.INSTALL_DIR}}/lib/cmake/facedetection/facedetectionConfig.cmake ]; then + git clone https://github.com/ShiqiYu/libfacedetection.git + cd libfacedetection + cmake -E make_directory build + cd build + cmake .. \ + -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ + -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ + -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ + -DVCPKG_CHAINLbuildOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ + -DANDROID_ABI=${{matrix.ANDROID_ABI}} \ + -DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} \ + -DBUILD_SHARED_LIBS=ON + cmake --build . --config ${{matrix.BUILD_TYPE}} + cmake --build . --config ${{matrix.BUILD_TYPE}} --target install + fi - name: Install Qt of gcc_64 uses: jurplel/install-qt-action@v3 @@ -84,7 +124,8 @@ jobs: target: 'desktop' arch: 'gcc_64' set-env: false - cached: '${{ steps.cache-qt.outputs.cache-hit }}' # optional, default is false + cache: true + cache-key-prefix: cached_qt - name: Install Qt of android uses: jurplel/install-qt-action@v3 @@ -101,33 +142,8 @@ jobs: arch: '${{matrix.qt_arch}}' # optional # Additional Qt modules to install modules: '${{env.qt_modules}}' # optional. See: https://ddalcino.github.io/aqt-list-server/ - cached: '${{ steps.cache-qt.outputs.cache-hit }}' # optional, default is false - -# - name: run-vcpkg -# uses: lukka/run-vcpkg@v7.4 -# with: -# # Indicates whether to only setup vcpkg (i.e. installing it and setting the environment variables VCPKG_ROOT, RUNVCPK_VCPKG_ROOT), without installing any port. -# #setupOnly: # optional -# #vcpkgGitURL: https://github.com/KangLin/vcpkg.git -# vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}} -# vcpkgDirectory: ${{ runner.workspace }}/vcpkg/ -# # Since the cache must be invalidated when content of the vcpkg.json file changes, let's -# # compute its hash and append this to the computed cache's key. -# appendedCacheKey: android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}-${{env.VCPKGGITCOMMITID}} -# additionalCachedPaths: $VCPKG_ROOT/installed -# vcpkgTriplet: '${{ matrix.VCPKG_TARGET_TRIPLET }}' -# vcpkgArguments: 'openssl ffmpeg opencv opencv[contrib] dlib ncnn' - - - name: run vcpkg - working-directory: ${{env.SOURCE_DIR}} - run: | - if [ ! -d vcpkg ]; then - git clone https://github.com/microsoft/vcpkg.git - cd vcpkg - git checkout -b ${{env.VCPKGGITCOMMITID}} ${{env.VCPKGGITCOMMITID}} - ./bootstrap-vcpkg.sh - ./vcpkg install --triplet=${{matrix.VCPKG_TARGET_TRIPLET}} openssl libyuv ffmpeg opencv[contrib] - fi + cache: true + cache-key-prefix: cached_qt - name: git clone RabbitCommon working-directory: ${{env.SOURCE_DIR}} @@ -158,7 +174,11 @@ jobs: -DVCPKG_VERBOSE=ON \ -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}\scripts\buildsystems\vcpkg.cmake" \ - -DCMAKE_INSTALL_PREFIX=`pwd`/install + -DCMAKE_INSTALL_PREFIX=`pwd`/install \ + -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ + -DVCPKG_APPLOCAL_DEPS=ON \ + -DINSTALL_QT=ON \ + -DENABLE_DOWNLOAD=ON cmake --build . --config ${{matrix.BUILD_TYPE}} --target all cmake --build . --config ${{matrix.BUILD_TYPE}} --target install APK_FILE=`find . -name "android-*.apk"` diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 9fdb315..72fa5fa 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -16,16 +16,14 @@ jobs: matrix: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: [Release, Debug] - qt_version: [6.5.1, 5.15.2, 5.12.12] + qt_version: [6.6.2, 5.15.2, 5.12.12] include: - - qt_version: 6.5.1 - qt_modules: qtscxml qtpositioning qt5compat qtwebchannel qtwebsockets + - qt_version: 6.6.2 + qt_modules: qtscxml qtpositioning qt5compat qtwebchannel qtwebsockets qtmultimedia - qt_version: 5.15.2 - qt_modules: "" - qt_version: 5.12.12 - qt_modules: "" runs-on: macos-latest @@ -34,7 +32,7 @@ jobs: SOURCE_DIR: ${{github.workspace}}/.cache/source TOOSL_DIR: ${{github.workspace}}/.cache/tools INSTALL_DIR: ${{github.workspace}}/.cache/install_macos - qt_modules: ${{matrix.qt_modules}} + qt_modules: qtwebengine ${{matrix.qt_modules}} FaceRecognizer_VERSION: v0.0.4 artifact_name: build_macos VCPKGGITCOMMITID: eb33d2f7583405fca184bcdf7fdd5828ec88ac05 @@ -62,23 +60,22 @@ jobs: with: path: | ${{env.INSTALL_DIR}} - key: Cache-macos-installed-qt${{matrix.qt_version}}-${{matrix.BUILD_TYPE}} + key: install_macos_qt${{matrix.qt_version}}_${{matrix.qt_arch}}_${{matrix.BUILD_TYPE}} - name: Install application run: | brew install nasm - name: run-vcpkg - uses: lukka/run-vcpkg@v7.4 + uses: lukka/run-vcpkg@v11 with: vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}} vcpkgDirectory: ${{runner.workspace}}/vcpkg/ - # Since the cache must be invalidated when content of the vcpkg.json file changes, let's - # compute its hash and append this to the computed cache's key. - appendedCacheKey: vcpkg-macos-${{env.VCPKGGITCOMMITID}} - vcpkgTriplet: '${{matrix.triplet}}' - vcpkgArguments: 'openssl libyuv ffmpeg opencv opencv[contrib] dlib ncnn' - + + - name: run vcpkg + run: | + brew install nasm + - name: Cache Qt id: cache-qt uses: actions/cache@v1 # not v2! @@ -87,15 +84,14 @@ jobs: key: qt${{matrix.qt_version}}-${{matrix.qt_arch}} - name: Install Qt - # You may pin to the exact commit or the version. - # uses: jurplel/install-qt-action@a962fb91949c8e846a3e4a944d50e7ef5cc3a28a uses: jurplel/install-qt-action@v3 with: - # Directory to install Qt - dir: ${{env.TOOSL_DIR}}/qt # optional - # Version of Qt to install - version: ${{matrix.qt_version}} # optional, default is 5.15.2 - modules: ${{env.qt_modules}} # optional. See: https://ddalcino.github.io/aqt-list-server/ + dir: '${{env.TOOSL_DIR}}/qt' # optional + version: '${{matrix.qt_version}}' # optional, default is 5.15.2 + arch: '${{matrix.qt_arch}}' # optional + modules: '${{env.qt_modules}}' # optional + cache: true + cache-key-prefix: cached_qt - name: build SeetaFace2 working-directory: ${{env.SOURCE_DIR}} @@ -108,7 +104,8 @@ jobs: cmake .. \ -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" \ - -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake" + -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake" \ + -DBUILD_EXAMPLE=OFF cmake --build . --config ${{matrix.BUILD_TYPE}} cmake --build . --config ${{matrix.BUILD_TYPE}} --target install fi @@ -148,6 +145,8 @@ jobs: -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}\scripts\buildsystems\vcpkg.cmake" \ -DVCPKG_VERBOSE=ON \ -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ + -DVCPKG_APPLOCAL_DEPS=ON \ + -DINSTALL_QT=ON \ -DSeetaFace_DIR=${{env.INSTALL_DIR}}/lib/cmake \ -DSeetaNet_DIR=${{env.INSTALL_DIR}}/lib/cmake \ -DSeetaFaceDetector_DIR=${{env.INSTALL_DIR}}/lib/cmake \ @@ -155,7 +154,8 @@ jobs: -DSeetaFaceRecognizer_DIR=${{env.INSTALL_DIR}}/lib/cmake \ -DSeetaFaceTracker_DIR=${{env.INSTALL_DIR}}/lib/cmake \ -DSeetaQualityAssessor_DIR=${{env.INSTALL_DIR}}/lib/cmake \ - -Dfacedetection_DIR=${{env.INSTALL_DIR}}/lib/cmake/facedetection + -Dfacedetection_DIR=${{env.INSTALL_DIR}}/lib/cmake/facedetection \ + -DENABLE_DOWNLOAD=ON cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install 7z a FaceRecognizer_${{env.FaceRecognizer_VERSION}}_macos_qt${{matrix.qt_version}}.zip ./install/* diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml index c0f5aa2..2d30d20 100644 --- a/.github/workflows/mingw.yml +++ b/.github/workflows/mingw.yml @@ -93,7 +93,8 @@ jobs: cd build cmake .. -G"MinGW Makefiles" ^ -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} ^ - -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" + -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" ^ + -DBUILD_EXAMPLE=OFF cmake --build . --config ${{matrix.BUILD_TYPE}} cmake --build . --config ${{matrix.BUILD_TYPE}} --target install ) diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml index 31524f7..a09281a 100644 --- a/.github/workflows/msvc.yml +++ b/.github/workflows/msvc.yml @@ -13,16 +13,9 @@ jobs: strategy: matrix: BUILD_TYPE: [Release, Debug] - qt_version: [6.6.1, 6.5.2, 5.15.2, 5.12.12] + qt_version: [6.6.2, 5.15.2, 5.12.12] include: - - qt_version: 6.6.1 - triplet: x64-windows - VCPKG_PLATFORM_TOOLSET: v142 - qt_arch: win64_msvc2019_64 - CMAKE_GENERATOR_PLATFORM: x64 - qt_modules: qtscxml qtpositioning qtwebchannel qtwebsockets qtwebview qtmultimedia qt5compat - - - qt_version: 6.5.2 + - qt_version: 6.6.2 triplet: x64-windows VCPKG_PLATFORM_TOOLSET: v142 qt_arch: win64_msvc2019_64 @@ -82,18 +75,19 @@ jobs: with: path: | ${{env.INSTALL_DIR}} - key: FaceRecognizer_msvc_cache-installed-${{matrix.os}}-vc${{matrix.VCPKG_PLATFORM_TOOLSET}}-${{matrix.triplet}}-qt${{matrix.qt_version}}-${{matrix.BUILD_TYPE}}-${{env.VCPKGGITCOMMITID}}_2033_03_02 + key: install_msvc_qt${{matrix.qt_version}}_${{matrix.qt_arch}}_${{matrix.BUILD_TYPE}} - name: run-vcpkg - uses: lukka/run-vcpkg@v7.4 + uses: lukka/run-vcpkg@v11 with: vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}} vcpkgDirectory: ${{runner.workspace}}/vcpkg/ - # Since the cache must be invalidated when content of the vcpkg.json file changes, let's - # compute its hash and append this to the computed cache's key. - appendedCacheKey: cache-vcpkg-msvc-${{matrix.os}}-vc${{matrix.VCPKG_PLATFORM_TOOLSET}}-${{matrix.triplet}}-qt${{matrix.qt_version}}-${{matrix.BUILD_TYPE}}-${{env.VCPKGGITCOMMITID}} - vcpkgTriplet: '${{matrix.triplet}}' - vcpkgArguments: 'openssl libyuv ffmpeg opencv opencv[contrib] dlib ncnn' + + - name: run vcpkg + if: false + run: | + vcpkg install --VCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} ^ + --x-feature=SeetaFace - name: build SeetaFace2 working-directory: ${{env.SOURCE_DIR}} @@ -108,7 +102,8 @@ jobs: -T ${{matrix.VCPKG_PLATFORM_TOOLSET}} ^ -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} ^ -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" ^ - -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}\scripts\buildsystems\vcpkg.cmake" + -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}\scripts\buildsystems\vcpkg.cmake" ^ + -DBUILD_EXAMPLE=OFF cmake --build . --config ${{matrix.BUILD_TYPE}} cmake --build . --config ${{matrix.BUILD_TYPE}} --target install ) @@ -169,6 +164,8 @@ jobs: -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake ^ -DVCPKG_VERBOSE=ON ^ -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON ^ + -DVCPKG_APPLOCAL_DEPS=ON ^ + -DINSTALL_QT=ON ^ -DSeetaFace_DIR=${{env.INSTALL_DIR}}/lib/cmake ^ -DSeetaNet_DIR=${{env.INSTALL_DIR}}/lib/cmake ^ -DSeetaFaceDetector_DIR=${{env.INSTALL_DIR}}/lib/cmake ^ @@ -176,7 +173,8 @@ jobs: -DSeetaFaceRecognizer_DIR=${{env.INSTALL_DIR}}/lib/cmake ^ -DSeetaFaceTracker_DIR=${{env.INSTALL_DIR}}/lib/cmake ^ -DSeetaQualityAssessor_DIR=${{env.INSTALL_DIR}}/lib/cmake ^ - -Dfacedetection_DIR=${{env.INSTALL_DIR}}/lib/cmake/facedetection + -Dfacedetection_DIR=${{env.INSTALL_DIR}}/lib/cmake/facedetection ^ + -DENABLE_DOWNLOAD=ON cmake --build . --config ${{matrix.BUILD_TYPE}} cmake --build . --config ${{matrix.BUILD_TYPE}} --target install @@ -192,8 +190,8 @@ jobs: makensis Install.nsi copy /Y FaceRecognizer_${{env.FaceRecognizer_VERSION}}_Setup.exe FaceRecognizer_${{env.FaceRecognizer_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_Setup.exe - - name: Update xml - if: ${{ matrix.BUILD_TYPE == 'Release' && matrix.qt_version == '6.6.1' }} + - name: Update configure file + if: ${{ matrix.BUILD_TYPE == 'Release' && matrix.qt_version == '6.6.2' }} working-directory: ${{github.workspace}}\build run: | ${{github.workspace}}\build\install\bin\FaceRecognizerApp.exe ^ @@ -205,13 +203,14 @@ jobs: -m "${{env.FaceRecognizer_VERSION}}" - name: Update artifact - if: ${{ matrix.BUILD_TYPE == 'Release' }} + if: ${{ matrix.BUILD_TYPE == 'Release' && matrix.qt_version == '6.6.2' }} uses: actions/upload-artifact@v3 with: name: ${{ env.artifact_name }} path: | ${{github.workspace}}\build\FaceRecognizer_${{env.FaceRecognizer_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_Setup.exe - ${{github.workspace}}\build\update_windows.xml + ${{github.workspace}}\build\update_windows.json + ${{github.workspace}}\build\update_windows.json.xml # - name: Upload To Github Release # if: ${{ matrix.BUILD_TYPE == 'Release' && '5.12.12' == matrix.qt_version && startsWith(github.ref, 'refs/tags/') }} diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 39f7fce..822533b 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -16,13 +16,13 @@ jobs: matrix: BUILD_TYPE: [Release, Debug] - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest env: BUILD_TYPE: ${{matrix.BUILD_TYPE}} SOURCE_DIR: ${{github.workspace}}/.cache/source TOOSL_DIR: ${{github.workspace}}/.cache/tools - INSTALL_DIR: ${{github.workspace}}/.cache/install_${{matrix.BUILD_TYPE}} + INSTALL_DIR: ${{github.workspace}}/.cache/install FaceRecognizer_VERSION: 0.0.4 artifact_name: build_ubuntu @@ -49,9 +49,9 @@ jobs: - name: Install apt packages run: | - sudo apt-get update -y \ - && sudo apt-get upgrade -y \ - && sudo apt-get install -y xvfb xpra \ + sudo apt-get update -y -q + sudo apt-get upgrade -y -q + sudo apt-get install -y -q xvfb xpra \ cmake build-essential \ debhelper fakeroot graphviz \ libglu1-mesa-dev libpulse-mainloop-glib0 \ @@ -75,7 +75,7 @@ jobs: with: path: | ${{env.INSTALL_DIR}} - key: cache-installed-ubuntu + key: install_ubuntu_${{matrix.BUILD_TYPE}} - name: build SeetaFace2 working-directory: ${{env.SOURCE_DIR}} @@ -87,7 +87,8 @@ jobs: cd build cmake .. \ -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ - -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" + -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" \ + -DBUILD_EXAMPLE=OFF cmake --build . --config ${{matrix.BUILD_TYPE}} cmake --build . --config ${{matrix.BUILD_TYPE}} --target install fi @@ -120,12 +121,13 @@ jobs: SeetaFaceTracker_DIR: ${{env.INSTALL_DIR}}/lib/cmake SeetaQualityAssessor_DIR: ${{env.INSTALL_DIR}}/lib/cmake facedetection_DIR: ${{env.INSTALL_DIR}}/lib/cmake/facedetection + ENABLE_DOWNLOAD: ON run: | export Qt6_DIR=/usr/lib/`uname -a`-linux-gnu/cmake/Qt6 ./build_debpackage.sh cp ../facerecognizer_${{env.FaceRecognizer_VERSION}}_amd64.deb facerecognizer_${{env.FaceRecognizer_VERSION}}_amd64.deb - - name: Update xml file + - name: Update configure file working-directory: ${{github.workspace}} run: | sudo Xvfb :99 -ac & @@ -134,13 +136,24 @@ jobs: MD5=`md5sum facerecognizer_${{env.FaceRecognizer_VERSION}}_amd64.deb|awk '{print $1}'` echo "MD5:${MD5}" /bin/bash /opt/FaceRecognizer/bin/FaceRecognizer.sh \ - -f "${{github.workspace}}/update_linux.json" \ + -f "${{github.workspace}}/update_ubuntu.json" \ --foc 1 \ --md5 ${MD5} \ -m "${{env.FaceRecognizer_VERSION}}" \ -n "facerecognizer_${{env.FaceRecognizer_VERSION}}_amd64.deb" \ -u "https://github.com/KangLin/FaceRecognizer/releases/download/v${{env.FaceRecognizer_VERSION}}/facerecognizer_${{env.FaceRecognizer_VERSION}}_amd64.deb;https://sourceforge.net/projects/FaceRecognizer/files/v${{env.FaceRecognizer_VERSION}}/facerecognizer_${{env.FaceRecognizer_VERSION}}_amd64.deb" + - name: Update version configure file + if: ${{ matrix.BUILD_TYPE == 'Release'}} + working-directory: ${{github.workspace}} + run: | + sudo Xvfb :99 -ac & + export DISPLAY=:99.0 + /bin/bash /opt/FaceRecognizer/bin/FaceRecognizer.sh \ + -f "${{github.workspace}}/version.json" \ + --foc 0 \ + --pv ${{env.FaceRecognizer_VERSION}} + - name: Update artifact if: ${{ matrix.BUILD_TYPE == 'Release' }} uses: actions/upload-artifact@v3 diff --git a/ChangeLog.md b/ChangeLog.md index f80c95a..5fe99bd 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -9,8 +9,10 @@ See RabbitCommon: 7ed300a206d8a36c30003b6c19ad181682d0ff5f + FFmpeg: update API avpicture_* to av_image_* + Support Qt6 - + Replace RabbitCommon::CDir::GetOpenDirectory with QFileDialog::getExistingDirectory etc - + + Use RabbitCommon v2.0.1 + + Replace RabbitCommon::CDir::GetOpenDirectory with QFileDialog::getExistingDirectory etc + + Use json format update + - v0.0.4 + Add opencv face - Add opencv dnn face detect diff --git a/ChangeLog_zh_CN.md b/ChangeLog_zh_CN.md index 8af0023..b30b629 100644 --- a/ChangeLog_zh_CN.md +++ b/ChangeLog_zh_CN.md @@ -9,8 +9,9 @@ 详见:RabbitCommon: 7ed300a206d8a36c30003b6c19ad181682d0ff5f + FFmpeg: 兼容 API avpicture_* to av_image_* + 支持 Qt6 - + 使用 RabbitCommon v2 - + 用 QFileDialog::getExistingDirectory 替换 RabbitCommon::CDir::GetOpenDirectory + + 使用 RabbitCommon v2.0.1 + - 使用 json 格式更新 + - 用 QFileDialog::getExistingDirectory 替换 RabbitCommon::CDir::GetOpenDirectory - v0.0.4 + 增加 opencv 实现人脸接口 diff --git a/README.md b/README.md index 883414e..8f16be6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## [人脸识别](https://github.com/KangLin/FaceRecognizer) -作者:康林(kl222@126.com) +作者:康林 [![Windows build status](https://ci.appveyor.com/api/projects/status/n50nxc7d8mm9bdpb/branch/master?svg=true)](https://ci.appveyor.com/project/KangLin/facerecognizer/branch/master) [![build](https://github.com/KangLin/FaceRecognizer/actions/workflows/build.yml/badge.svg)](https://github.com/KangLin/FaceRecognizer/actions/workflows/build.yml) diff --git a/appveyor.yml b/appveyor.yml index d7b74f4..a8e370f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,101 +1,35 @@ -#TODO: Change version - -version: 'v0.0.4.{build}' +version: "v0.0.26.{build}" cache: - - model - - Package - + - ..\other_source +# Clean cached +# https://www.appveyor.com/docs/build-cache/#cleaning-up-cache + environment: + FaceRecognizerVersion: v0.0.4 STOREPASS: secure: l9BZEU39F1a4vSkhwl0CHR+yh6CD1c7byGzMv+1NUa4= QT_USER: secure: EoBPaPuJ6u9UDYpQWjKhUg== QT_PASSWORD: secure: ejAYGgB+3sBispRxUSr0xw== + APPVEYOR_RDP_PASSWORD: + secure: PUmp7039ro52579dlxAk59tjpeeyiFbdWvHfLCkjF5c= matrix: - ##### android ######## - - BUILD_TARGERT: android - GENERATORS: "MSYS Makefiles" - BUILD_ARCH: "armeabi-v7a" - ANDROID_ARM_NEON: ON - DOWNLOAD_QT: TRUE - QT_VERSION_DIR: 5.12 - QT_VERSION: 5.12.6 - ANDROID_PLATFORM: android-24 - TOOLCHAIN_VERSION: 4.9 - DOWNLOAD_THIRDLIBS_URL: https://github.com/KangLin/RabbitThirdLibrary/releases/download/v0.2.9/android4.9_arm_v0.2.9_in_windows.zip - - - BUILD_TARGERT: android - GENERATORS: "MSYS Makefiles" - BUILD_ARCH: "arm64-v8a" - ANDROID_ARM_NEON: ON - DOWNLOAD_QT: TRUE - QT_VERSION_DIR: 5.12 - QT_VERSION: 5.12.6 - ANDROID_PLATFORM: android-24 - TOOLCHAIN_VERSION: 4.9 - DOWNLOAD_THIRDLIBS_URL: https://github.com/KangLin/RabbitThirdLibrary/releases/download/v0.2.9/android4.9_arm64_v0.2.9_in_windows.zip - - ##### msvc 2013 ######## - #- BUILD_TARGERT: windows_msvc - # GENERATORS: "Visual Studio 12 2013" - # TOOLCHAIN_VERSION: 12 - # QT_ROOT: C:\Qt\5.6\msvc2013 - # BUILD_ARCH: x86 - - #- BUILD_TARGERT: windows_msvc - # GENERATORS: "Visual Studio 12 2013 Win64" - # TOOLCHAIN_VERSION: 12 - # QT_ROOT: C:\Qt\5.6\msvc2013_64 - # BUILD_ARCH: x64 - - ##### msvc 2017 ######## + ##### msvc 2015 ######## - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - GENERATORS: "Visual Studio 15 2017" - BUILD_TARGERT: windows_msvc - TOOLCHAIN_VERSION: 15 - QT_ROOT: C:\Qt\5.12\msvc2017 - BUILD_ARCH: x86 - DOWNLOAD_THIRDLIBS_URL: https://github.com/KangLin/RabbitThirdLibrary/releases/download/v0.2.9/windows_msvc15_x86_v0.2.9.zip - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - GENERATORS: "Visual Studio 15 2017 Win64" - BUILD_TARGERT: windows_msvc - TOOLCHAIN_VERSION: 15 - QT_ROOT: C:\Qt\5.12\msvc2017_64 - BUILD_ARCH: x64 - DOWNLOAD_THIRDLIBS_URL: https://github.com/KangLin/RabbitThirdLibrary/releases/download/v0.2.9/windows_msvc15_x64_v0.2.9.zip - - ##### msvc 2015 ######## - - BUILD_TARGERT: windows_msvc GENERATORS: "Visual Studio 14 2015" TOOLCHAIN_VERSION: 14 + VCPKG_PLATFORM_TOOLSET: v140 QT_ROOT: C:\Qt\5.6\msvc2015 BUILD_ARCH: x86 - DOWNLOAD_THIRDLIBS_URL: https://github.com/KangLin/RabbitThirdLibrary/releases/download/v0.2.9/windows_msvc14_x86_v0.2.9.zip - - BUILD_TARGERT: windows_msvc + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 GENERATORS: "Visual Studio 14 2015 Win64" TOOLCHAIN_VERSION: 14 - QT_ROOT: C:\Qt\5.10\msvc2015_64 + QT_ROOT: C:\Qt\5.6\msvc2015_64 BUILD_ARCH: x64 - DOWNLOAD_THIRDLIBS_URL: https://github.com/KangLin/RabbitThirdLibrary/releases/download/v0.2.9/windows_msvc14_x64_v0.2.9.zip - - ##### mingw ######## - - BUILD_TARGERT: windows_mingw - GENERATORS: "MSYS Makefiles" - TOOLCHAIN_VERSION: 492_32 - QT_ROOT: C:\Qt\5.6\mingw49_32 - BUILD_ARCH: x86 - - - BUILD_TARGERT: windows_mingw - GENERATORS: "MSYS Makefiles" - TOOLCHAIN_VERSION: 530_32 - QT_ROOT: C:\Qt\5.10\mingw53_32 - BUILD_ARCH: x86 - DOWNLOAD_THIRDLIBS_URL: https://github.com/KangLin/RabbitThirdLibrary/releases/download/v0.2.9/windows_mingw530_32_x86_v0.2.9.zip matrix: fast_finish: false @@ -109,36 +43,104 @@ init: - if NOT "%QT_ROOT%" == "NO" for /f "delims=" %%i in ('%QT_ROOT%/bin/qmake -query QT_VERSION') do (set QT_VERSION=%%i) - echo QT_ROOT=%QT_ROOT% - echo QT_VERSION=%QT_VERSION% - - del C:\msys64\usr\bin\link.exe install: - - C:\msys64\autorebase.bat - - C:\msys64\usr\bin\pacman.exe -S --noconfirm unzip - - ps: Start-FileDownload https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-windows-i386.zip - #- curl -fsSL -o cmake-3.26.4-windows-i386.zip https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-windows-i386.zip - - 7z x cmake-3.26.4-windows-i386.zip - - set PATH=%CD%\cmake-3.26.4-windows-i386\bin;%PATH% - #- if "%BUILD_TARGERT%"=="windows_mingw" set PATH=C:\Qt\Tools\mingw%TOOLCHAIN_VERSION%_32\bin;%PATH% - - if "%BUILD_TARGERT%" == "windows_mingw" set MSYSTEM=MINGW32 #设置编译系统为MINGW32 - -before_build: - - cd %APPVEYOR_BUILD_FOLDER% - git submodule update --init --recursive + - cd %APPVEYOR_BUILD_FOLDER% - git clone https://github.com/KangLin/RabbitCommon.git - set RabbitCommon_DIR=%APPVEYOR_BUILD_FOLDER%/RabbitCommon - - cd %APPVEYOR_BUILD_FOLDER% - - C:\msys64\usr\bin\bash.exe %APPVEYOR_BUILD_FOLDER%\ci\build-install-tools-windows.sh + + - set OTHER_SOURCE=%APPVEYOR_BUILD_FOLDER%\..\other_source + - set INSTALL_DIR=%OTHER_SOURCE%\install_dir + - if not exist "%OTHER_SOURCE%" ( mkdir "%OTHER_SOURCE%" ) + - if not exist "%INSTALL_DIR%" ( mkdir "%INSTALL_DIR%" ) + + - cd %OTHER_SOURCE% + - set CMAKE_VERSION=3.28.3 + - if not exist cmake-%CMAKE_VERSION%-windows-i386 (curl -fsSL -o cmake-%CMAKE_VERSION%-windows-i386.zip https://github.com/Kitware/CMake/releases/download/v%CMAKE_VERSION%/cmake-%CMAKE_VERSION%-windows-i386.zip && 7z x cmake-%CMAKE_VERSION%-windows-i386.zip) + - cd cmake-%CMAKE_VERSION%-windows-i386 + - set PATH="%CD%/bin";%PATH% + + - cd %OTHER_SOURCE% + - set VCPKG_DIR=%OTHER_SOURCE%\vcpkg + - ps: | + if( -not (Test-Path -Path ${env:VCPKG_DIR}) ) + { + git clone -q "https://github.com/microsoft/vcpkg.git" + cd ${env:VCPKG_DIR} + git checkout -q -b a1a1cbc975abf909a6c8985a6a2b8fe20bbd9bd6 a1a1cbc975abf909a6c8985a6a2b8fe20bbd9bd6 + bootstrap-vcpkg.bat + } + +before_build: + - cd %OTHER_SOURCE% + - ps: | + if ( -not (Test-Path -Path ${env:INSTALL_DIR}\lib\cmake\SeetaFaceDetectorConfig.cmake) ) + { + git clone -q https://github.com/KangLin/SeetaFace2.git + cd SeetaFace2 + cmake -E make_directory build + cd build + cmake .. ` + -G"${env:GENERATORS}" ` + -DCMAKE_BUILD_TYPE=Release ` + -DCMAKE_INSTALL_PREFIX="${env:INSTALL_DIR}" ` + -DCMAKE_TOOLCHAIN_FILE="${env:VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake" ` + -DBUILD_EXAMPLE=OFF + cmake --build . --config Release + cmake --build . --config Release --target install + } + + - cd %OTHER_SOURCE% + - ps: | + if ( -not (Test-Path -Path ${env:INSTALL_DIR}\lib\cmake\facedetection\facedetectionConfig.cmake) ) + { + git clone -q https://github.com/ShiqiYu/libfacedetection.git + cd libfacedetection + cmake -E make_directory build + cd build + cmake .. ` + -G"$env:GENERATORS" ` + -DCMAKE_BUILD_TYPE=Release ` + -DCMAKE_INSTALL_PREFIX="${env:INSTALL_DIR}" ` + -DCMAKE_TOOLCHAIN_FILE="${env:VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake" ` + -DBUILD_SHARED_LIBS=ON + cmake --build . --config Release + cmake --build . --config Release --target install + } build_script: - cd %APPVEYOR_BUILD_FOLDER% - - C:\msys64\usr\bin\bash.exe %APPVEYOR_BUILD_FOLDER%\ci\build.sh + - cmake -E make_directory build + - cd build + - ps: | + cmake .. ` + -G"${env:GENERATORS}" ` + -DCMAKE_BUILD_TYPE=Release ` + -DCMAKE_INSTALL_PREFIX=(Get-Location).path/install" ` + -DCMAKE_TOOLCHAIN_FILE="${env:VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake" ` + -DCMARK_SHARED=OFF ` + -DCMARK_TESTS=OFF ` + -DCMARK_STATIC=ON ` + -DVCPKG_VERBOSE=ON ` + -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON ` + -DVCPKG_APPLOCAL_DEPS=ON ` + -DINSTALL_QT=ON ` + -DSeetaFace_DIR=${env:INSTALL_DIR}/lib/cmake ` + -DSeetaNet_DIR=${env:INSTALL_DIR}/lib/cmake ` + -DSeetaFaceDetector_DIR=${env:INSTALL_DIR}/lib/cmake ` + -DSeetaFaceLandmarker_DIR=${env:INSTALL_DIR}/lib/cmake ` + -DSeetaFaceRecognizer_DIR=${env:INSTALL_DIR}/lib/cmake ` + -DSeetaFaceTracker_DIR=${env:INSTALL_DIR}/lib/cmake ` + -DSeetaQualityAssessor_DIR=${env:INSTALL_DIR}/lib/cmake ` + -Dfacedetection_DIR=${env:INSTALL_DIR}/lib/cmake/facedetection + - cmake --build . --config Release + - cmake --build . --config Release --target install + - makensis Install.nsi + - rename FaceRecognizer_%FaceRecognizerVersion%_Setup.exe FaceRecognizer_%FaceRecognizerVersion%_windows_xp_%BUILD_ARCH%_Setup.exe artifacts: - - path: build_$(BUILD_TARGERT)\FaceRecognizer_*_Setup.exe - name: FaceRecognizer_$(BUILD_TARGERT)$(TOOLCHAIN_VERSION)_$(BUILD_ARCH)_$(QT_VERSION)_$(appveyor_build_version) - type: zip - #- path: build_$(BUILD_TARGERT)\update_windows.xml - - path: FaceRecognizer_*.apk + - path: build_$(BUILD_TARGERT)\FaceRecognizer_%FaceRecognizerVersion%_windows_xp_%BUILD_ARCH%_Setup.exe test: off diff --git a/ci/build.sh b/ci/build.sh index f5720ed..96718b0 100644 --- a/ci/build.sh +++ b/ci/build.sh @@ -348,8 +348,8 @@ if [ "${BUILD_TARGERT}" = "windows_msvc" ]; then if [ -z "${STATIC}" ]; then "/C/Program Files (x86)/NSIS/makensis.exe" "Install.nsi" MD5=`md5sum FaceRecognizer_${VERSION}_Setup.exe|awk '{print $1}'` - echo "MD5:${MD5}" - install/bin/FaceRecognizerApp.exe -f "`pwd`/update_windows.xml" --md5 ${MD5} \ - -u https://github.com/KangLin/FaceRecognizer/releases/download/${VERSION}/FaceRecognizer_${VERSION}_Setup.exe;https://sourceforge.net/projects/FaceRecognizer/files/${VERSION}/FaceRecognizer_${VERSION}_Setup.exe + #echo "MD5:${MD5}" + #install/bin/FaceRecognizerApp.exe -f "`pwd`/update_windows.json" --md5 ${MD5} \ + # -u https://github.com/KangLin/FaceRecognizer/releases/download/${VERSION}/FaceRecognizer_${VERSION}_Setup.exe;https://sourceforge.net/projects/FaceRecognizer/files/${VERSION}/FaceRecognizer_${VERSION}_Setup.exe fi fi diff --git a/debian/changelog b/debian/changelog index 4532a6e..ec34123 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -facerecognizer (0.0.4) stable; urgency=medium +facerecognizer (0.0.4) unstable; urgency=medium * Initial Release. diff --git a/deploy.sh b/deploy.sh index 8a0d621..04f97cb 100644 --- a/deploy.sh +++ b/deploy.sh @@ -32,7 +32,7 @@ sed -i "s/^\!define PRODUCT_VERSION.*/\!define PRODUCT_VERSION \"${VERSION}\"/g" sed -i "s/^\SET(BUILD_VERSION.*/\SET(BUILD_VERSION \"${VERSION}\")/g" ${SOURCE_DIR}/CMakeLists.txt sed -i "s/.*${VERSION}