diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml index f847e9846..1e5805b6e 100644 --- a/.github/workflows/Build.yml +++ b/.github/workflows/Build.yml @@ -7,150 +7,150 @@ on: - created jobs: - # build-unix-native: - # runs-on: ${{ matrix.os }} - # strategy: - # matrix: - # include: - # - os: ubuntu-20.04 - # INSTALL_LIBS: libgl1-mesa-dev libxkbcommon-x11-0 libpcre2-16-0 qt5-default - # QMAKE_COMMAND: qmake - # - os: ubuntu-22.04 - # INSTALL_LIBS: qt6-base-dev - # QMAKE_COMMAND: qmake6 - # steps: - # - uses: actions/checkout@v4 - # with: - # submodules: true - # - run: git fetch --prune --unshallow - # - name: Install Linux packages - # run: | - # sudo apt-get update - # sudo apt-get install ${{matrix.INSTALL_LIBS}} - # - name: Build - # run: | - # cd $GITHUB_WORKSPACE - # mkdir build - # cd build - # ${{matrix.QMAKE_COMMAND}} CONFIG+=UNITTESTS .. - # make -j$(nproc) - # - name: Run Unittests - # run: $GITHUB_WORKSPACE/build/YUViewUnitTest/YUViewUnitTest - # build-mac-native: - # runs-on: ${{ matrix.os }} - # strategy: - # matrix: - # include: - # - os: macos-13 - # - os: macos-14 - # steps: - # - uses: actions/checkout@v4 - # with: - # submodules: true - # - run: git fetch --prune --unshallow - # - name: Install packages - # run: | - # brew install qt - # - name: Build - # run: | - # cd $GITHUB_WORKSPACE - # mkdir build - # cd build - # qmake6 CONFIG+=UNITTESTS .. - # make -j $(sysctl -n hw.logicalcpu) - # - name: Run Unittests - # run: $GITHUB_WORKSPACE/build/YUViewUnitTest/YUViewUnitTest - # build-unix: - # runs-on: ${{ matrix.os }} - # strategy: - # matrix: - # include: - # - os: ubuntu-20.04 - # QT_FILE: qtBase_6.7.2_ubuntu20.zip - # LIBDE265_REMOTE: libde265.so - # LIBDE265_LOCAL: libde265-internals.so - # ARTIFACT_NAME: YUView.Ubuntu20.AppImage - # CPU_COUNT_COMMAND: nproc - # - os: macos-12 - # QT_FILE: qtBase_6.7.2_mac12.zip - # LIBDE265_REMOTE: libde265.dylib - # LIBDE265_LOCAL: libde265-internals.dylib - # ARTIFACT_NAME: YUView-Mac12-Monterey.zip - # CPU_COUNT_COMMAND: sysctl -n hw.logicalcpu - # - os: macos-14 - # QT_FILE: qtBase_6.7.2_mac14.zip - # LIBDE265_REMOTE: libde265.dylib - # LIBDE265_LOCAL: libde265-internals.dylib - # ARTIFACT_NAME: YUView-Mac12-Sonoma.zip - # CPU_COUNT_COMMAND: sysctl -n hw.logicalcpu - # steps: - # - uses: actions/checkout@v4 - # with: - # submodules: true - # - run: git fetch --prune --unshallow - # - name: Install Qt base - # run: | - # cd ../../ - # mkdir -p YUViewQt/YUViewQt - # cd YUViewQt/YUViewQt - # curl -L https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.7.2/${{matrix.QT_FILE}} -o Qt.zip - # unzip -qa Qt.zip - # echo "$GITHUB_WORKSPACE/../../YUViewQt/YUViewQt/Qt/bin" >> $GITHUB_PATH - # shell: bash - # - name: Install Linuxdeployqt - # run: | - # curl -L https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage -o linuxdeployqt-6-x86_64.AppImage - # chmod a+x linuxdeployqt-6-x86_64.AppImage - # if: matrix.os == 'ubuntu-20.04' - # - name: Install Linux packages - # run: | - # sudo apt-get update - # sudo apt-get install libgl1-mesa-dev libxkbcommon-x11-0 libpcre2-16-0 '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libatspi2.0-dev libfuse2 - # if: matrix.os == 'ubuntu-20.04' - # - name: Install libde265 - # run: | - # curl -L https://github.com/ChristianFeldmann/libde265/releases/download/v1.1/${{matrix.LIBDE265_REMOTE}} -o ${{matrix.LIBDE265_LOCAL}} - # curl -L https://raw.githubusercontent.com/ChristianFeldmann/libde265/master/COPYING -o libde265License.txt - # shell: bash - # - name: Build - # run: | - # cd $GITHUB_WORKSPACE - # export PATH=$GITHUB_WORKSPACE/../../YUViewQt/YUViewQt/Qt/bin:$PATH - # mkdir build - # cd build - # qmake CONFIG+=UNITTESTS .. - # make -j $(${{matrix.CPU_COUNT_COMMAND}}) - # - name: Run Unittests - # run: $GITHUB_WORKSPACE/build/YUViewUnitTest/YUViewUnitTest - # - name: Build App (Mac) - # run: | - # macdeployqt build/YUViewApp/YUView.app -always-overwrite -verbose=2 - # cp ${{matrix.LIBDE265_LOCAL}} build/YUViewApp/YUView.app/Contents/MacOS/. - # cd build/YUViewApp - # # Zip - # zip -r ${{matrix.ARTIFACT_NAME}} YUView.app/ - # mkdir $GITHUB_WORKSPACE/artifacts - # cp ${{matrix.ARTIFACT_NAME}} $GITHUB_WORKSPACE/artifacts/ - # if: matrix.os == 'macos-12' || matrix.os == 'macos-14' - # - name: Build Appimage (Linux) - # run: | - # cd build - # make INSTALL_ROOT=appdir install - # $GITHUB_WORKSPACE/linuxdeployqt-6-x86_64.AppImage YUViewApp/appdir/usr/local/share/applications/de.rwth_aachen.ient.YUView.desktop -appimage -bundle-non-qt-libs -verbose=2 - # mv YUView-*.AppImage YUView.AppImage - # mkdir $GITHUB_WORKSPACE/artifacts - # cp YUView.AppImage $GITHUB_WORKSPACE/artifacts/ - # if: matrix.os == 'ubuntu-20.04' - # - name: Upload Artifact - # uses: actions/upload-artifact@v4 - # with: - # name: ${{matrix.ARTIFACT_NAME}} - # path: artifacts - # - name: Release - # uses: softprops/action-gh-release@v1 - # if: startsWith(github.ref, 'refs/tags/') - # with: - # files: artifacts/${{matrix.ARTIFACT_NAME}} + build-unix-native: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: ubuntu-20.04 + INSTALL_LIBS: libgl1-mesa-dev libxkbcommon-x11-0 libpcre2-16-0 qt5-default + QMAKE_COMMAND: qmake + - os: ubuntu-22.04 + INSTALL_LIBS: qt6-base-dev + QMAKE_COMMAND: qmake6 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - run: git fetch --prune --unshallow + - name: Install Linux packages + run: | + sudo apt-get update + sudo apt-get install ${{matrix.INSTALL_LIBS}} + - name: Build + run: | + cd $GITHUB_WORKSPACE + mkdir build + cd build + ${{matrix.QMAKE_COMMAND}} CONFIG+=UNITTESTS .. + make -j$(nproc) + - name: Run Unittests + run: $GITHUB_WORKSPACE/build/YUViewUnitTest/YUViewUnitTest + build-mac-native: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: macos-13 + - os: macos-14 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - run: git fetch --prune --unshallow + - name: Install packages + run: | + brew install qt + - name: Build + run: | + cd $GITHUB_WORKSPACE + mkdir build + cd build + qmake6 CONFIG+=UNITTESTS .. + make -j $(sysctl -n hw.logicalcpu) + - name: Run Unittests + run: $GITHUB_WORKSPACE/build/YUViewUnitTest/YUViewUnitTest + build-unix: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: ubuntu-20.04 + QT_FILE: qtBase_6.7.2_ubuntu20.zip + LIBDE265_REMOTE: libde265.so + LIBDE265_LOCAL: libde265-internals.so + ARTIFACT_NAME: YUView.Ubuntu20.AppImage + CPU_COUNT_COMMAND: nproc + - os: macos-12 + QT_FILE: qtBase_6.7.2_mac12.zip + LIBDE265_REMOTE: libde265.dylib + LIBDE265_LOCAL: libde265-internals.dylib + ARTIFACT_NAME: YUView-Mac12-Monterey.zip + CPU_COUNT_COMMAND: sysctl -n hw.logicalcpu + - os: macos-14 + QT_FILE: qtBase_6.7.2_mac14.zip + LIBDE265_REMOTE: libde265.dylib + LIBDE265_LOCAL: libde265-internals.dylib + ARTIFACT_NAME: YUView-Mac12-Sonoma.zip + CPU_COUNT_COMMAND: sysctl -n hw.logicalcpu + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - run: git fetch --prune --unshallow + - name: Install Qt base + run: | + cd ../../ + mkdir -p YUViewQt/YUViewQt + cd YUViewQt/YUViewQt + curl -L https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.7.2/${{matrix.QT_FILE}} -o Qt.zip + unzip -qa Qt.zip + echo "$GITHUB_WORKSPACE/../../YUViewQt/YUViewQt/Qt/bin" >> $GITHUB_PATH + shell: bash + - name: Install Linuxdeployqt + run: | + curl -L https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage -o linuxdeployqt-6-x86_64.AppImage + chmod a+x linuxdeployqt-6-x86_64.AppImage + if: matrix.os == 'ubuntu-20.04' + - name: Install Linux packages + run: | + sudo apt-get update + sudo apt-get install libgl1-mesa-dev libxkbcommon-x11-0 libpcre2-16-0 '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libatspi2.0-dev libfuse2 + if: matrix.os == 'ubuntu-20.04' + - name: Install libde265 + run: | + curl -L https://github.com/ChristianFeldmann/libde265/releases/download/v1.1/${{matrix.LIBDE265_REMOTE}} -o ${{matrix.LIBDE265_LOCAL}} + curl -L https://raw.githubusercontent.com/ChristianFeldmann/libde265/master/COPYING -o libde265License.txt + shell: bash + - name: Build + run: | + cd $GITHUB_WORKSPACE + export PATH=$GITHUB_WORKSPACE/../../YUViewQt/YUViewQt/Qt/bin:$PATH + mkdir build + cd build + qmake CONFIG+=UNITTESTS .. + make -j $(${{matrix.CPU_COUNT_COMMAND}}) + - name: Run Unittests + run: $GITHUB_WORKSPACE/build/YUViewUnitTest/YUViewUnitTest + - name: Build App (Mac) + run: | + macdeployqt build/YUViewApp/YUView.app -always-overwrite -verbose=2 + cp ${{matrix.LIBDE265_LOCAL}} build/YUViewApp/YUView.app/Contents/MacOS/. + cd build/YUViewApp + # Zip + zip -r ${{matrix.ARTIFACT_NAME}} YUView.app/ + mkdir $GITHUB_WORKSPACE/artifacts + cp ${{matrix.ARTIFACT_NAME}} $GITHUB_WORKSPACE/artifacts/ + if: matrix.os == 'macos-12' || matrix.os == 'macos-14' + - name: Build Appimage (Linux) + run: | + cd build + make INSTALL_ROOT=appdir install + $GITHUB_WORKSPACE/linuxdeployqt-6-x86_64.AppImage YUViewApp/appdir/usr/local/share/applications/de.rwth_aachen.ient.YUView.desktop -appimage -bundle-non-qt-libs -verbose=2 + mv YUView-*.AppImage YUView.AppImage + mkdir $GITHUB_WORKSPACE/artifacts + cp YUView.AppImage $GITHUB_WORKSPACE/artifacts/ + if: matrix.os == 'ubuntu-20.04' + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: ${{matrix.ARTIFACT_NAME}} + path: artifacts + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: artifacts/${{matrix.ARTIFACT_NAME}} build-windows: runs-on: ${{ matrix.os }} strategy: @@ -160,10 +160,10 @@ jobs: auto_update: true ARTIFACT_NAME: YUView-Win2019.zip QT_FILE: qtBase_6.7.2_win2019.zip - # - os: windows-2019 - # auto_update: false - # ARTIFACT_NAME: YUView-Win2019-noautoupdate.zip - # QT_FILE: qtBase_6.7.2_win2019.zip + - os: windows-2019 + auto_update: false + ARTIFACT_NAME: YUView-Win2019-noautoupdate.zip + QT_FILE: qtBase_6.7.2_win2019.zip steps: - uses: actions/checkout@v4 with: