From 47367aefbe4ec3a9aa83e8489b203c7d5c0cb5a1 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Thu, 8 Apr 2021 15:59:42 +0200 Subject: [PATCH 01/12] changes to enable building with cmake --- .github/workflows/Build-Linux.yml | 142 ++++++++++++ .github/workflows/Build-Mac.yml | 119 ++++++++++ .github/workflows/Build-Windows.yml | 203 ++++++++++++++++++ CMakeLists.txt | 192 +++++++++++++++++ YUViewLib/src/ui/widgets/QLabelClickable.h | 2 + ...iew.png => de.rwth_aachen.ient.YUView.png} | Bin 6 files changed, 658 insertions(+) create mode 100644 .github/workflows/Build-Linux.yml create mode 100644 .github/workflows/Build-Mac.yml create mode 100644 .github/workflows/Build-Windows.yml create mode 100644 CMakeLists.txt rename packaging/linux/icons/32x32/{de.ient.YUView.png => de.rwth_aachen.ient.YUView.png} (100%) diff --git a/.github/workflows/Build-Linux.yml b/.github/workflows/Build-Linux.yml new file mode 100644 index 000000000..838e06725 --- /dev/null +++ b/.github/workflows/Build-Linux.yml @@ -0,0 +1,142 @@ +name: CI build Linux + +on: + push: + release: + types: + - created + +jobs: + + build-linux: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: ubuntu-16.04 + qt_version: Qt5 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_xenial.zip + ARTIFACT_NAME: YUView.AppImage + - os: ubuntu-18.04 + qt_version: Qt5 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_bionic.zip + - os: ubuntu-16.04 + qt_version: Qt6 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.0.2/qtBase_6.0.2_xenial.zip + - os: ubuntu-18.04 + qt_version: Qt6 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.0.2/qtBase_6.0.2_bionic.zip + steps: + - uses: actions/checkout@v2 + - run: git fetch --prune --unshallow + +########################################################################################## +############################### Required packages from distributors ###################### +########################################################################################## + + - name: Install and remove Linux packages + shell: bash + 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 + # remove installed qt versions if any. they can interfere with the packaging tools + sudo apt-get autoremove '.*qt.*' + + - name: Install Newer GCC Ubuntu 16.04 + if: matrix.os == 'ubuntu-16.04' + shell: bash + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install gcc-9 g++-9 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9 + sudo update-alternatives --config gcc + +########################################################################################## +############################### Packages build by us: Qt, libde265 ###################### +########################################################################################## + + - name: Install Qt base + shell: bash + run: | + cd $HOME + mkdir -p YUViewQt/ + cd YUViewQt + curl -L ${{matrix.qt_base_link}} -o Qt.zip + unzip -qa Qt.zip + + - name: Install libde265 + shell: bash + run: | + curl -L https://github.com/ChristianFeldmann/libde265/releases/download/v1.1/libde265.so -o libde265-internals.so + curl -L https://raw.githubusercontent.com/ChristianFeldmann/libde265/master/COPYING -o libde265License.txt + +########################################################################################## +############################### Build YUView ############################################# +########################################################################################## + + - name: Build Linux/Mac + shell: bash + run: | + cd $GITHUB_WORKSPACE + mkdir build + cd build + cmake -DCMAKE_PREFIX_PATH="$HOME/YUViewQt/Qt" -DCMAKE_INSTALL_PREFIX=/usr .. + cmake --build . --parallel $(nproc) + +########################################################################################## +############################### Unit tests ############################################### +########################################################################################## + + - name: Run unit tests + shell: bash + run: | + cd $GITHUB_WORKSPACE/build + ctest --output-on-failure + # ctest --output-on-failure --debug --extra-verbose + +########################################################################################## +############################### Packaging YUView, Installers ############################# +########################################################################################## + + - name: Build Appimage (Linux) + # only run on oldest supported ubuntu: + # Please run on a system with a glibc version no newer than what comes with the oldest + # currently still-supported mainstream distribution. + # This is so that the resulting bundle will work on most still-supported Linux distributions. + if: matrix.os == 'ubuntu-16.04' && matrix.qt_version == 'Qt5' + shell: bash + run: | + cd $HOME + 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 + cd $GITHUB_WORKSPACE/build + make install DESTDIR=appdir + $HOME/linuxdeployqt-6-x86_64.AppImage appdir/usr/share/applications/de.rwth_aachen.ient.YUView.desktop -appimage -qmake=$HOME/YUViewQt/Qt/bin/qmake -bundle-non-qt-libs -verbose=2 + mv YUView-*.AppImage YUView.AppImage + mkdir $GITHUB_WORKSPACE/artifacts + cp YUView.AppImage $GITHUB_WORKSPACE/artifacts/ + cd $GITHUB_WORKSPACE + ls -l + cd $GITHUB_WORKSPACE/artifacts + ls -l + +########################################################################################## +############################### Upload ################################################### +########################################################################################## + + - name: Upload Release + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: artifacts/${{matrix.ARTIFACT_NAME}} + asset_name: ${{matrix.ARTIFACT_NAME}} + asset_content_type: application/zip + if: github.event_name == 'release' && matrix.os == 'ubuntu-16.04' && matrix.qt_version == 'Qt5' + + # How to upload files to the release: + # https://github.com/Blacksmoke16/oq/pull/47/files#diff-082c28d748ad2e3eecc5508d740d9417R9-R29 + # Mime type list + # https://www.iana.org/assignments/media-types/media-types.xhtml diff --git a/.github/workflows/Build-Mac.yml b/.github/workflows/Build-Mac.yml new file mode 100644 index 000000000..886001c7c --- /dev/null +++ b/.github/workflows/Build-Mac.yml @@ -0,0 +1,119 @@ +name: CI build Mac + +on: + push: + release: + types: + - created + +jobs: + + build-mac: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: macos-10.15 + qt_version: Qt5 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_mac.zip + qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-5.15.1/qtTools_5.15.1_mac.zip + qt_tools_path: Qttools/bin/macdeployqt + ARTIFACT_NAME: YUView-Mac.zip + - os: macos-10.15 + qt_version: Qt6 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.0.2/qtBase_6.0.2_mac.zip + qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-6.0.2/qtTools_6.0.2_mac.zip + qt_tools_path: build/bin/macdeployqt + steps: + - uses: actions/checkout@v2 + - run: git fetch --prune --unshallow + +########################################################################################## +############################### Packages build by us: Qt, libde265 ###################### +########################################################################################## + + - name: Install Qt base + run: | + cd $HOME + mkdir -p YUViewQt + cd YUViewQt + curl -L ${{matrix.qt_base_link}} -o Qt.zip + unzip -qa Qt.zip + shell: bash + + - name: Install Qt deploy tools + shell: bash + run: | + cd $HOME + cd YUViewQt + curl -L ${{matrix.qt_tools_link}} -o deployQt.zip + 7z x deployQt.zip + cp ${{matrix.qt_tools_path}} Qt/bin/macdeployqt + strip Qt/bin/macdeployqt + + - name: Install libde265 + run: | + cd $HOME + curl -L https://github.com/ChristianFeldmann/libde265/releases/download/v1.1/libde265.dylib -o libde265-internals.dylib + curl -L https://raw.githubusercontent.com/ChristianFeldmann/libde265/master/COPYING -o libde265License.txt + shell: bash + +########################################################################################## +############################### Build YUView ############################################# +########################################################################################## + + - name: Build + run: | + cd $GITHUB_WORKSPACE + mkdir build + cd build + cmake -DCMAKE_PREFIX_PATH="$HOME/YUViewQt/Qt" -DCMAKE_INSTALL_PREFIX=/usr .. + cmake --build . --parallel $(nproc) + shell: bash + +########################################################################################## +############################### Unit tests ############################################### +########################################################################################## + + - name: Run unit tests + run: | + cd $GITHUB_WORKSPACE/build + ctest --output-on-failure + # ctest --output-on-failure --debug --extra-verbose + shell: bash + +########################################################################################## +############################### Packaging YUView, Installers ############################# +########################################################################################## + + - name: Build App (Mac) + if: matrix.qt_version == 'Qt5' && matrix.os == 'macos-10.15' + run: | + cd $GITHUB_WORKSPACE + $HOME/YUViewQt/Qt/bin/macdeployqt build/YUView.app -always-overwrite -verbose=2 + cp $HOME/libde265-internals.dylib build/YUView.app/Contents/MacOS/. + cd build + # Zip + zip -r ${{matrix.ARTIFACT_NAME}} YUView.app/ + mkdir $GITHUB_WORKSPACE/artifacts + cp ${{matrix.ARTIFACT_NAME}} $GITHUB_WORKSPACE/artifacts/ + +########################################################################################## +############################### Upload ################################################### +########################################################################################## + + - name: Upload Release + if: matrix.qt_version == 'Qt5' && github.event_name == 'release' && matrix.os == 'macos-10.15' + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: artifacts/${{matrix.ARTIFACT_NAME}} + asset_name: ${{matrix.ARTIFACT_NAME}} + asset_content_type: application/zip + + # How to upload files to the release: + # https://github.com/Blacksmoke16/oq/pull/47/files#diff-082c28d748ad2e3eecc5508d740d9417R9-R29 + # Mime type list + # https://www.iana.org/assignments/media-types/media-types.xhtml diff --git a/.github/workflows/Build-Windows.yml b/.github/workflows/Build-Windows.yml new file mode 100644 index 000000000..c3d677cfd --- /dev/null +++ b/.github/workflows/Build-Windows.yml @@ -0,0 +1,203 @@ +name: CI build Windows + +on: + push: + release: + types: + - created + +jobs: + + build-windows: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: windows-2019 + qt_version: Qt5 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_win.zip + qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-5.15.1/qtTools_5.15.1_win.zip + qt_tools_path: Qttools/bin/windeployqt.exe + auto_update: true + ARTIFACT_NAME: YUView-Win.zip + - os: windows-2019 + qt_version: Qt5 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_win.zip + qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-5.15.1/qtTools_5.15.1_win.zip + qt_tools_path: Qttools/bin/windeployqt.exe + auto_update: false + ARTIFACT_NAME: YUView-Win-noautoupdate.zip + - os: windows-2019 + qt_version: Qt6 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.0.2/qtBase_6.0.2_win.zip + qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-6.0.2/qtTools_6.0.2_win.zip + qt_tools_path: build/bin/windeployqt.exe + auto_update: true + - os: windows-2019 + qt_version: Qt6 + qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.0.2/qtBase_6.0.2_win.zip + qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-6.0.2/qtTools_6.0.2_win.zip + qt_tools_path: build/bin/windeployqt.exe + auto_update: false + steps: + - uses: actions/checkout@v2 + - run: git fetch --prune --unshallow + +########################################################################################## +############################### Setup environment ######################################## +########################################################################################## + - name: Setup environment + run: | + # converts the home path containing "\" to regular path with "/" + cd $USERPROFILE + export HOME=$(pwd) + shell: bash + +########################################################################################## +############################### Required packages from distributors ###################### +########################################################################################## + + - name: Install openSSL + run: | + cd $HOME + mkdir openSSL + cd openSSL + curl -L https://github.com/ChristianFeldmann/YUViewQt/releases/download/openSSL1.1.1g/openSSL_1_1_1g_win.zip -o openSSL.zip + 7z x openSSL.zip + shell: bash + +########################################################################################## +############################### Packages build by us: Qt, libde265 ###################### +########################################################################################## + + - name: Install Qt base + shell: bash + run: | + cd $HOME + mkdir -p YUViewQt/ + cd YUViewQt + curl -L ${{matrix.qt_base_link}} -o Qt.zip + 7z x Qt.zip + + - name: Install Qt deploy tools + shell: bash + run: | + cd $HOME + cd YUViewQt + curl -L ${{matrix.qt_tools_link}} -o deployQt.zip + 7z x deployQt.zip + + - name: Install libde265 + run: | + cd $HOME + curl -L https://github.com/ChristianFeldmann/libde265/releases/download/v1.1/libde265.dll -o libde265.dll + curl -L https://raw.githubusercontent.com/ChristianFeldmann/libde265/master/COPYING -o libde265License.txt + shell: bash + +########################################################################################## +############################### Build YUView ############################################# +########################################################################################## + + - name: Activate auto update + run: sed -i -- "s/#define UPDATE_FEATURE_ENABLE 0/#define UPDATE_FEATURE_ENABLE 1/g" YUViewLib/src/common/typedef.h + shell: bash + if: matrix.auto_update == true + + - name: Build + run: | + cd $GITHUB_WORKSPACE + mkdir build + cd build + cmake -DCMAKE_PREFIX_PATH="$HOME/YUViewQt/Qt" .. + cmake --build . --parallel $(nproc) --config Release --verbose + shell: bash + +########################################################################################## +############################### Unit tests ############################################### +########################################################################################## + + # test don't work atm. need a windows system to debug it + # - name: Run unit tests + # run: | + # cd $GITHUB_WORKSPACE/build + # ctest --output-on-failure --build-config Release + # # ctest --output-on-failure --debug --extra-verbose + # shell: bash + +########################################################################################## +############################### Packaging YUView, Installers ############################# +########################################################################################## + + - name: WindeployQT + run: | + cd $GITHUB_WORKSPACE + mkdir deploy + cd deploy + cp ../build/Release/YUView.exe . + # PATH seems to be reset in every step (in contrast to HOME). have to modify it here + export PATH="$HOME/YUViewQt/Qt/bin:$PATH" + $HOME/YUViewQt/${{matrix.qt_tools_path}} --release --dir $GITHUB_WORKSPACE/deploy --no-compiler-runtime YUView.exe + cp $HOME/openSSL/*.dll . + mkdir decoder + cp $HOME/libde265.dll decoder + cp $HOME/libde265License.txt decoder + cp ../LICENSE.GPL3 . + cd .. + python deployment/versioning.py -d deploy -o deploy/versioninfo.txt + mkdir artifacts + 7z a artifacts/YUView-Win.zip ./deploy/* + shell: bash + - name: Wix Windows + run: | + cd $GITHUB_WORKSPACE/deployment/wix + cp /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Enterprise/VC/Redist/MSVC/v142/MergeModules/Microsoft_VC142_CRT_x64.msm . + "${WIX}\bin\heat.exe" dir ../../deploy -gg -dr APPLICATIONFOLDER -srd -sreg -cg YUViewComponents -out harvestedDirectory.wxs + "${WIX}\bin\candle.exe" -dConfiguration=Release -dOutDir=bin/Release/ -dTargetExt=.msi -dTargetFileName=YUViewSetup.msi -dTargetName=YUViewSetup -out obj/Release/ -arch x64 -ext "${WIX}\bin\WixUIExtension.dll" YUView.wxs + "${WIX}\bin\candle.exe" -dConfiguration=Release -dOutDir=bin/Release/ -dTargetExt=.msi -dTargetFileName=YUViewSetup.msi -dTargetName=YUViewSetup -out obj/Release/ -arch x64 harvestedDirectory.wxs + "${WIX}\bin\Light.exe" -b ../../deploy -out bin/Release/YUViewSetup.msi -pdbout bin/Release/YUViewSetup.wixpdb -cultures:null -ext "${WIX}\bin\WixUIExtension.dll" -contentsfile obj/Release/YUViewSetup.wixproj.BindContentsFileListnull.txt -outputsfile obj/Release/YUViewSetup.wixproj.BindOutputsFileListnull.txt -builtoutputsfile obj/Release/YUViewSetup.wixproj.BindBuiltOutputsFileListnull.txt obj/Release/YUView.wixobj obj/Release/harvestedDirectory.wixobj + cd $GITHUB_WORKSPACE + cp deployment/wix/bin/Release/YUViewSetup.msi ./ + shell: bash + if: matrix.auto_update == true + +########################################################################################## +############################### Upload ################################################### +########################################################################################## + + - name: Upload Artifact + if: matrix.qt_version == 'Qt5' + uses: actions/upload-artifact@v2 + with: + name: ${{matrix.ARTIFACT_NAME}} + path: artifacts + - name: Upload Windows installer Artifact + if: matrix.qt_version == 'Qt5' && matrix.auto_update == true + uses: actions/upload-artifact@v2 + with: + name: YUViewSetup.msi + path: ./YUViewSetup.msi + - name: Upload Windows zip to Release + if: matrix.qt_version == 'Qt5' && github.event_name == 'release' + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: artifacts/YUView-Win.zip + asset_name: ${{matrix.ARTIFACT_NAME}} + asset_content_type: application/zip + - name: Upload Windows installer to Release + if: matrix.qt_version == 'Qt5' && github.event_name == 'release' && matrix.auto_update == true + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: YUViewSetup.msi + asset_name: YUViewSetup.msi + asset_content_type: application/zip + + # How to upload files to the release: + # https://github.com/Blacksmoke16/oq/pull/47/files#diff-082c28d748ad2e3eecc5508d740d9417R9-R29 + # Mime type list + # https://www.iana.org/assignments/media-types/media-types.xhtml diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..b1eb3bb0e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,192 @@ +cmake_minimum_required(VERSION 3.16.0) +project(YUView LANGUAGES CXX) + +### Require out-of-source builds +file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH) +if(EXISTS "${LOC_PATH}") + message(FATAL_ERROR "You cannot build in a source directory (or any directory with a CMakeLists.txt file). Please make a build subdirectory.") +endif() + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# try to find Qt6 first +find_package(Qt6 COMPONENTS Gui Widgets OpenGL Xml Concurrent Network Test) +if (Qt6_FOUND) + message(STATUS "Building YUView using Qt6") +endif() +if (NOT Qt6_FOUND) + # fallback: try to find Qt5 + find_package(Qt5 COMPONENTS Gui Widgets OpenGL Xml Concurrent Network Test REQUIRED) + if (Qt5_FOUND) + message(STATUS "Building YUView using Qt5") + endif() +endif() + +if(MSVC) + # Make build use multiple threads under MSVC: + add_compile_options(/MP) + + # Make build use Unicode: + add_compile_definitions(UNICODE _UNICODE) +endif() + +##################################################################################################################################### +# YUViewApp +##################################################################################################################################### +# get source and include files fo the app +file( GLOB_RECURSE APP_SRC_FILES "YUViewApp/src/*.cpp" ) +file( GLOB_RECURSE APP_INC_FILES "YUViewApp/src/*.h" ) + +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + # Mac OS X specific code + # see https://doc-snapshots.qt.io/qt6-dev/appicon.html + # The MACOSX_BUNDLE_ICON_FILE variable is added to the Info.plist + # generated by CMake. This variable contains the .icns file name, + # without the path. + set(MACOSX_BUNDLE_ICON_FILE YUView.icns) + + # And the following tells CMake where to find and install the file itself. + set(app_icon_macos "${CMAKE_CURRENT_SOURCE_DIR}/YUViewApp/images/YUView.icns") + set_source_files_properties(${app_icon_macos} PROPERTIES + MACOSX_PACKAGE_LOCATION "Resources") + + add_executable( YUView MACOSX_BUNDLE ${APP_SRC_FILES} ${APP_INC_FILES} ${app_icon_macos}) + target_link_libraries( YUView + YUViewLib + Qt::Gui + Qt::Widgets + Qt::OpenGL + Qt::Xml + Qt::Concurrent + Qt::Network + ) + target_include_directories(YUView PUBLIC + "YUViewApp/src" + ) + + install(TARGETS YUView + BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX}/bin ) +endif() + +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_executable( YUView ${APP_SRC_FILES} ${APP_INC_FILES} ) + target_link_libraries( YUView + YUViewLib + Qt::Gui + Qt::Widgets + Qt::OpenGL + Qt::Xml + Qt::Concurrent + Qt::Network + ) + target_include_directories(YUView PUBLIC + "YUViewApp/src" + ) + + install(TARGETS YUView) + + # Install desktop entry + install(FILES packaging/linux/de.rwth_aachen.ient.YUView.desktop + DESTINATION share/applications ) + # Install mime file + install(FILES packaging/linux/de.rwth_aachen.ient.YUView.xml + DESTINATION share/mime/packages ) + # Install metainfo + install(FILES packaging/linux/de.rwth_aachen.ient.YUView.appdata.xml + DESTINATION share/metainfo ) + # Install icons + install(FILES packaging/linux/icons/32x32/de.rwth_aachen.ient.YUView.png + DESTINATION share/icons/hicolor/32x32/apps) + install(FILES packaging/linux/icons/64x64/de.rwth_aachen.ient.YUView.png + DESTINATION share/icons/hicolor/64x64/apps) + install(FILES packaging/linux/icons/128x128/de.rwth_aachen.ient.YUView.png + DESTINATION share/icons/hicolor/128x128/apps) + install(FILES packaging/linux/icons/256x256/de.rwth_aachen.ient.YUView.png + DESTINATION share/icons/hicolor/256x256/apps) + install(FILES packaging/linux/icons/512x512/de.rwth_aachen.ient.YUView.png + DESTINATION share/icons/hicolor/512x512/apps) +endif() + +if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + add_executable( YUView ${APP_SRC_FILES} ${APP_INC_FILES} ) + target_link_libraries( YUView + YUViewLib + Qt::Gui + Qt::Widgets + Qt::OpenGL + Qt::Xml + Qt::Concurrent + Qt::Network + ) + target_include_directories(YUView PUBLIC + "YUViewApp/src" + ) + + install(TARGETS YUView) +endif() + +##################################################################################################################################### +# YUViewLib +##################################################################################################################################### + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOUIC_SEARCH_PATHS "YUViewLib/ui") + +# get source files +file( GLOB_RECURSE LIB_SRC_FILES "YUViewLib/src/*.cpp" ) + +# get include files +file( GLOB_RECURSE LIB_INC_FILES "YUViewLib/src/*.h" ) + +# get forms, ui files +file( GLOB LIB_FORMS_FILES "YUViewLib/ui/*.ui" ) + +# Resources +file (GLOB LIB_RSC_FILES + "YUViewLib/images/images.qrc" + "YUViewLib/docs/docs.qrc" +) + +add_library( YUViewLib STATIC ${LIB_SRC_FILES} ${LIB_INC_FILES} ${LIB_FORMS_FILES} ${LIB_RSC_FILES} ) +target_link_libraries( YUViewLib PRIVATE + Qt::Gui + Qt::Widgets + Qt::OpenGL + Qt::Xml + Qt::Concurrent + Qt::Network +) +target_include_directories(YUViewLib PUBLIC "YUViewLib/src") + + + + +##################################################################################################################################### +# YUViewUnitTest +##################################################################################################################################### +enable_testing(true) # needs to be before add_subdirectory (or in the root CMake file?) + +set(CMAKE_AUTOMOC ON) + +# get all test files +file( GLOB_RECURSE TST_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "YUViewUnitTest/*.cpp" ) + +# add a target for each test file +FOREACH(test_file_name ${TST_FILES}) + get_filename_component(test_base_name ${test_file_name} NAME_WE ) + + message( VERBOSE "Adding executable for ${test_base_name}") + + list(APPEND TEST_LIST ${test_base_name}) + add_executable( ${test_base_name} ${test_file_name}) + add_test(NAME ${test_base_name} COMMAND ${test_base_name}) + target_link_libraries( ${test_base_name} + YUViewLib + Qt::Test + ) + # target_include_directories(${test_base_name} PUBLIC "YUViewLib/src") # are those not pulled by the lib dependency? + +ENDFOREACH() diff --git a/YUViewLib/src/ui/widgets/QLabelClickable.h b/YUViewLib/src/ui/widgets/QLabelClickable.h index 4d8e7f764..cce7a67cd 100644 --- a/YUViewLib/src/ui/widgets/QLabelClickable.h +++ b/YUViewLib/src/ui/widgets/QLabelClickable.h @@ -30,6 +30,8 @@ * along with this program. If not, see . */ +#pragma once + #include // A label that emits a 'clicked' signal when clicked. diff --git a/packaging/linux/icons/32x32/de.ient.YUView.png b/packaging/linux/icons/32x32/de.rwth_aachen.ient.YUView.png similarity index 100% rename from packaging/linux/icons/32x32/de.ient.YUView.png rename to packaging/linux/icons/32x32/de.rwth_aachen.ient.YUView.png From 252551befe80d187fea05e99699bc1a2cec1dc93 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Thu, 8 Apr 2021 17:41:14 +0200 Subject: [PATCH 02/12] fixed compile problem due to include not found --- CMakeLists.txt | 4 ++-- YUViewLib/src/common/YUViewDomElement.h | 2 +- YUViewLib/src/playlistitem/playlistItems.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b1eb3bb0e..b9635671d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,13 +13,13 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) # try to find Qt6 first find_package(Qt6 COMPONENTS Gui Widgets OpenGL Xml Concurrent Network Test) if (Qt6_FOUND) - message(STATUS "Building YUView using Qt6") + message(STATUS "Building YUView using Qt6, Version ${Qt6Core_VERSION}") endif() if (NOT Qt6_FOUND) # fallback: try to find Qt5 find_package(Qt5 COMPONENTS Gui Widgets OpenGL Xml Concurrent Network Test REQUIRED) if (Qt5_FOUND) - message(STATUS "Building YUView using Qt5") + message(STATUS "Building YUView using Qt5, Version ${Qt5Core_VERSION}") endif() endif() diff --git a/YUViewLib/src/common/YUViewDomElement.h b/YUViewLib/src/common/YUViewDomElement.h index cf8267e31..703c9f96f 100644 --- a/YUViewLib/src/common/YUViewDomElement.h +++ b/YUViewLib/src/common/YUViewDomElement.h @@ -32,7 +32,7 @@ #pragma once -#include +#include #include "typedef.h" diff --git a/YUViewLib/src/playlistitem/playlistItems.h b/YUViewLib/src/playlistitem/playlistItems.h index 5be270770..c39182d42 100644 --- a/YUViewLib/src/playlistitem/playlistItems.h +++ b/YUViewLib/src/playlistitem/playlistItems.h @@ -33,7 +33,7 @@ #pragma once #include -#include +#include #include #include From 784a068c82cb8f3804313337ea580b538c7f1dfe Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Thu, 8 Apr 2021 19:15:55 +0200 Subject: [PATCH 03/12] work on flatpak for building with cmake --- de.rwth_aachen.ient.YUView.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/de.rwth_aachen.ient.YUView.yaml b/de.rwth_aachen.ient.YUView.yaml index 2454b9688..ca2d54c4f 100644 --- a/de.rwth_aachen.ient.YUView.yaml +++ b/de.rwth_aachen.ient.YUView.yaml @@ -7,7 +7,7 @@ finish-args: - --socket=wayland - --socket=x11 - --share=ipc - - --share=network + - --share=network - --filesystem=host - --env=QT_NO_FT_CACHE=1 @@ -41,7 +41,7 @@ modules: - /share/ffmpeg/examples - name: YUView - buildsystem: qmake + buildsystem: cmake-ninja sources: - type: dir path: . From 73d239fcc3991b91d43e91e3d64015c9f4bd0af4 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Thu, 8 Apr 2021 19:32:17 +0200 Subject: [PATCH 04/12] work on flatpak build --- de.rwth_aachen.ient.YUView.yaml | 55 +++++++++++++++++---------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/de.rwth_aachen.ient.YUView.yaml b/de.rwth_aachen.ient.YUView.yaml index ca2d54c4f..d246c4c2c 100644 --- a/de.rwth_aachen.ient.YUView.yaml +++ b/de.rwth_aachen.ient.YUView.yaml @@ -12,36 +12,39 @@ finish-args: - --env=QT_NO_FT_CACHE=1 modules: - - name: libde265 - buildsystem: cmake-ninja - config-opts: - - -DONLY_LIB=ON - - -DCMAKE_INSTALL_LIBDIR:PATH=/app/lib - sources: - - type: git - branch: internal - url: https://github.com/nolyn/libde265.git - commit: e655e91d7495785996552e935f308f45c0e6e161 + # - name: libde265 + # buildsystem: cmake-ninja + # config-opts: + # - -DONLY_LIB=ON + # - -DCMAKE_INSTALL_LIBDIR:PATH=/app/lib + # sources: + # - type: git + # branch: internal + # url: https://github.com/nolyn/libde265.git + # commit: e655e91d7495785996552e935f308f45c0e6e161 - - name: ffmpeg - config-opts: - - --enable-shared - - --disable-static - - --enable-gnutls - - --disable-doc - - --disable-programs - - --disable-encoders - - --disable-muxers - - --enable-encoder=png - sources: - - type: archive - url: https://www.ffmpeg.org/releases/ffmpeg-4.2.3.tar.xz - sha256: 9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31 - cleanup: - - /share/ffmpeg/examples + # - name: ffmpeg + # config-opts: + # - --enable-shared + # - --disable-static + # - --enable-gnutls + # - --disable-doc + # - --disable-programs + # - --disable-encoders + # - --disable-muxers + # - --enable-encoder=png + # sources: + # - type: archive + # url: https://www.ffmpeg.org/releases/ffmpeg-4.2.3.tar.xz + # sha256: 9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31 + # cleanup: + # - /share/ffmpeg/examples - name: YUView buildsystem: cmake-ninja + builddir: true + config-opts: + - -DCMAKE_BUILD_TYPE=Release sources: - type: dir path: . From 5f14ac92c062ee96922b37ef7b90395ff3136f19 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Thu, 8 Apr 2021 19:41:29 +0200 Subject: [PATCH 05/12] Update de.rwth_aachen.ient.YUView.yaml --- de.rwth_aachen.ient.YUView.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/de.rwth_aachen.ient.YUView.yaml b/de.rwth_aachen.ient.YUView.yaml index d246c4c2c..c76ba39b3 100644 --- a/de.rwth_aachen.ient.YUView.yaml +++ b/de.rwth_aachen.ient.YUView.yaml @@ -1,6 +1,6 @@ app-id: de.rwth_aachen.ient.YUView runtime: org.kde.Platform -runtime-version: '5.14' +runtime-version: '5.15' sdk: org.kde.Sdk command: YUView finish-args: From 81f153479ba7abe8deff183c3ff1da7fee5ce984 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Thu, 8 Apr 2021 19:53:46 +0200 Subject: [PATCH 06/12] Update de.rwth_aachen.ient.YUView.yaml --- de.rwth_aachen.ient.YUView.yaml | 52 ++++++++++++++++----------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/de.rwth_aachen.ient.YUView.yaml b/de.rwth_aachen.ient.YUView.yaml index c76ba39b3..a3fc3b49b 100644 --- a/de.rwth_aachen.ient.YUView.yaml +++ b/de.rwth_aachen.ient.YUView.yaml @@ -12,33 +12,33 @@ finish-args: - --env=QT_NO_FT_CACHE=1 modules: - # - name: libde265 - # buildsystem: cmake-ninja - # config-opts: - # - -DONLY_LIB=ON - # - -DCMAKE_INSTALL_LIBDIR:PATH=/app/lib - # sources: - # - type: git - # branch: internal - # url: https://github.com/nolyn/libde265.git - # commit: e655e91d7495785996552e935f308f45c0e6e161 + - name: libde265 + buildsystem: cmake-ninja + config-opts: + - -DONLY_LIB=ON + - -DCMAKE_INSTALL_LIBDIR:PATH=/app/lib + sources: + - type: git + branch: internal + url: https://github.com/nolyn/libde265.git + commit: e655e91d7495785996552e935f308f45c0e6e161 - # - name: ffmpeg - # config-opts: - # - --enable-shared - # - --disable-static - # - --enable-gnutls - # - --disable-doc - # - --disable-programs - # - --disable-encoders - # - --disable-muxers - # - --enable-encoder=png - # sources: - # - type: archive - # url: https://www.ffmpeg.org/releases/ffmpeg-4.2.3.tar.xz - # sha256: 9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31 - # cleanup: - # - /share/ffmpeg/examples + - name: ffmpeg + config-opts: + - --enable-shared + - --disable-static + - --enable-gnutls + - --disable-doc + - --disable-programs + - --disable-encoders + - --disable-muxers + - --enable-encoder=png + sources: + - type: archive + url: https://www.ffmpeg.org/releases/ffmpeg-4.2.3.tar.xz + sha256: 9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31 + cleanup: + - /share/ffmpeg/examples - name: YUView buildsystem: cmake-ninja From 32196483e7a7a06e922dbd4a2eb97d3f6d56f084 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Sat, 24 Apr 2021 09:57:34 +0200 Subject: [PATCH 07/12] renamed artifacts for cmake build to have no conflict with old build system --- .github/workflows/Build-Linux.yml | 10 +++++----- .github/workflows/Build-Mac.yml | 2 +- .github/workflows/Build-Windows.yml | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/Build-Linux.yml b/.github/workflows/Build-Linux.yml index 838e06725..af3ff4fe9 100644 --- a/.github/workflows/Build-Linux.yml +++ b/.github/workflows/Build-Linux.yml @@ -16,7 +16,7 @@ jobs: - os: ubuntu-16.04 qt_version: Qt5 qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_xenial.zip - ARTIFACT_NAME: YUView.AppImage + ARTIFACT_NAME: YUView-cmake.AppImage - os: ubuntu-18.04 qt_version: Qt5 qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_bionic.zip @@ -98,14 +98,14 @@ jobs: ########################################################################################## ############################### Packaging YUView, Installers ############################# ########################################################################################## - + - name: Build Appimage (Linux) # only run on oldest supported ubuntu: # Please run on a system with a glibc version no newer than what comes with the oldest # currently still-supported mainstream distribution. # This is so that the resulting bundle will work on most still-supported Linux distributions. if: matrix.os == 'ubuntu-16.04' && matrix.qt_version == 'Qt5' - shell: bash + shell: bash run: | cd $HOME curl -L https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage -o linuxdeployqt-6-x86_64.AppImage @@ -113,9 +113,9 @@ jobs: cd $GITHUB_WORKSPACE/build make install DESTDIR=appdir $HOME/linuxdeployqt-6-x86_64.AppImage appdir/usr/share/applications/de.rwth_aachen.ient.YUView.desktop -appimage -qmake=$HOME/YUViewQt/Qt/bin/qmake -bundle-non-qt-libs -verbose=2 - mv YUView-*.AppImage YUView.AppImage + mv YUView-*.AppImage ${{matrix.ARTIFACT_NAME}} mkdir $GITHUB_WORKSPACE/artifacts - cp YUView.AppImage $GITHUB_WORKSPACE/artifacts/ + cp ${{matrix.ARTIFACT_NAME}} $GITHUB_WORKSPACE/artifacts/ cd $GITHUB_WORKSPACE ls -l cd $GITHUB_WORKSPACE/artifacts diff --git a/.github/workflows/Build-Mac.yml b/.github/workflows/Build-Mac.yml index 886001c7c..30fcb0c89 100644 --- a/.github/workflows/Build-Mac.yml +++ b/.github/workflows/Build-Mac.yml @@ -18,7 +18,7 @@ jobs: qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_mac.zip qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-5.15.1/qtTools_5.15.1_mac.zip qt_tools_path: Qttools/bin/macdeployqt - ARTIFACT_NAME: YUView-Mac.zip + ARTIFACT_NAME: YUView-Mac-cmake.zip - os: macos-10.15 qt_version: Qt6 qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.0.2/qtBase_6.0.2_mac.zip diff --git a/.github/workflows/Build-Windows.yml b/.github/workflows/Build-Windows.yml index c3d677cfd..59b99b4f3 100644 --- a/.github/workflows/Build-Windows.yml +++ b/.github/workflows/Build-Windows.yml @@ -19,14 +19,14 @@ jobs: qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-5.15.1/qtTools_5.15.1_win.zip qt_tools_path: Qttools/bin/windeployqt.exe auto_update: true - ARTIFACT_NAME: YUView-Win.zip + ARTIFACT_NAME: YUView-Win-cmake.zip - os: windows-2019 qt_version: Qt5 qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-5.15.1/qtBase_5.15.1_win.zip qt_tools_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtDeployTools-5.15.1/qtTools_5.15.1_win.zip qt_tools_path: Qttools/bin/windeployqt.exe auto_update: false - ARTIFACT_NAME: YUView-Win-noautoupdate.zip + ARTIFACT_NAME: YUView-Win-noautoupdate-cmake.zip - os: windows-2019 qt_version: Qt6 qt_base_link: https://github.com/ChristianFeldmann/YUViewQt/releases/download/QtBase-6.0.2/qtBase_6.0.2_win.zip @@ -145,7 +145,7 @@ jobs: cd .. python deployment/versioning.py -d deploy -o deploy/versioninfo.txt mkdir artifacts - 7z a artifacts/YUView-Win.zip ./deploy/* + 7z a artifacts/${{matrix.ARTIFACT_NAME}} ./deploy/* shell: bash - name: Wix Windows run: | @@ -183,7 +183,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: artifacts/YUView-Win.zip + asset_path: artifacts/${{matrix.ARTIFACT_NAME}} asset_name: ${{matrix.ARTIFACT_NAME}} asset_content_type: application/zip - name: Upload Windows installer to Release From 5b61975cf82bbcd82396fdd63b7c1fb0e823d27d Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Sat, 24 Apr 2021 14:34:40 +0200 Subject: [PATCH 08/12] added include required for std::logic_error --- YUViewLib/src/common/EnumMapper.h | 1 + 1 file changed, 1 insertion(+) diff --git a/YUViewLib/src/common/EnumMapper.h b/YUViewLib/src/common/EnumMapper.h index c58c3f4ce..4992a0081 100644 --- a/YUViewLib/src/common/EnumMapper.h +++ b/YUViewLib/src/common/EnumMapper.h @@ -36,6 +36,7 @@ #include #include #include +#include /* This class implement mapping of "enum class" values to and from names (string). */ From 667e13ae89b5da0510b0c57aedb2d7f5b4bbea68 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Sat, 24 Apr 2021 20:05:51 +0200 Subject: [PATCH 09/12] added cmake code to get version and hash from git and set it as compile definition --- CMakeLists.txt | 51 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b9635671d..1fad404c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,11 +26,60 @@ endif() if(MSVC) # Make build use multiple threads under MSVC: add_compile_options(/MP) - + # Make build use Unicode: add_compile_definitions(UNICODE _UNICODE) endif() + +##################################################################################################################################### +# Getting YUView version +##################################################################################################################################### +find_package(Git QUIET REQUIRED) + +# reconfigure if index changes +set_property(GLOBAL APPEND + PROPERTY CMAKE_CONFIGURE_DEPENDS + "${CMAKE_SOURCE_DIR}/.git/index") + +# get version from git (tag) +execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --always HEAD + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE YUVIEW_VERSION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +if(${res}) + message("Git describe failed!") +else() + message("Git describe version: ${YUVIEW_VERSION}") +endif() +if(!${YUVIEW_VERSION}) + message("Do not have YUView version. Setting to 0.") + set(YUVIEW_VERSION 0) +endif() +add_compile_definitions(YUVIEW_VERSION=\"${YUVIEW_VERSION}\") + +# get git hash +execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE YUVIEW_HASH + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +if(${res}) + message("Git rev-parse failed!") +else() + message("Git hash: ${YUVIEW_HASH}") +endif() +if(!${YUVIEW_HASH}) + message("Do not have YUView hash. Setting to 0.") + set(YUVIEW_HASH 0) +endif() +add_compile_definitions(YUVIEW_HASH=\"${YUVIEW_HASH}\") + ##################################################################################################################################### # YUViewApp ##################################################################################################################################### From fe0ca3d0333a10fd37e126460e1978fa8db2e5f3 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Sun, 25 Apr 2021 09:46:02 +0200 Subject: [PATCH 10/12] debugging mac/linux artifacts not uploaded --- .github/workflows/Build-Linux.yml | 2 ++ .github/workflows/Build-Mac.yml | 3 +++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/Build-Linux.yml b/.github/workflows/Build-Linux.yml index af3ff4fe9..9d345f0c1 100644 --- a/.github/workflows/Build-Linux.yml +++ b/.github/workflows/Build-Linux.yml @@ -113,10 +113,12 @@ jobs: cd $GITHUB_WORKSPACE/build make install DESTDIR=appdir $HOME/linuxdeployqt-6-x86_64.AppImage appdir/usr/share/applications/de.rwth_aachen.ient.YUView.desktop -appimage -qmake=$HOME/YUViewQt/Qt/bin/qmake -bundle-non-qt-libs -verbose=2 + echo "ls -l appdir"; ls -l appdir mv YUView-*.AppImage ${{matrix.ARTIFACT_NAME}} mkdir $GITHUB_WORKSPACE/artifacts cp ${{matrix.ARTIFACT_NAME}} $GITHUB_WORKSPACE/artifacts/ cd $GITHUB_WORKSPACE + echo "ls -l build"; ls -l build ls -l cd $GITHUB_WORKSPACE/artifacts ls -l diff --git a/.github/workflows/Build-Mac.yml b/.github/workflows/Build-Mac.yml index 30fcb0c89..3bd8b5775 100644 --- a/.github/workflows/Build-Mac.yml +++ b/.github/workflows/Build-Mac.yml @@ -92,11 +92,14 @@ jobs: cd $GITHUB_WORKSPACE $HOME/YUViewQt/Qt/bin/macdeployqt build/YUView.app -always-overwrite -verbose=2 cp $HOME/libde265-internals.dylib build/YUView.app/Contents/MacOS/. + echo "ls -l build/YUView.app/Contents/MacOS/"; ls -l build/YUView.app/Contents/MacOS/ cd build # Zip zip -r ${{matrix.ARTIFACT_NAME}} YUView.app/ mkdir $GITHUB_WORKSPACE/artifacts + echo "ls -l"; ls -l cp ${{matrix.ARTIFACT_NAME}} $GITHUB_WORKSPACE/artifacts/ + echo "ls -l $GITHUB_WORKSPACE/artifacts"; ls -l $GITHUB_WORKSPACE/artifacts ########################################################################################## ############################### Upload ################################################### From 113843e9335134b76a0725f4ce3aa8e03093b338 Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Sun, 25 Apr 2021 10:09:08 +0200 Subject: [PATCH 11/12] added upload-artifcat actions for mac/linux --- .github/workflows/Build-Linux.yml | 13 ++++++++++++- .github/workflows/Build-Mac.yml | 14 +++++++++++++- .github/workflows/Build-Windows.yml | 7 ++++++- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Build-Linux.yml b/.github/workflows/Build-Linux.yml index 9d345f0c1..464f7fa66 100644 --- a/.github/workflows/Build-Linux.yml +++ b/.github/workflows/Build-Linux.yml @@ -124,7 +124,18 @@ jobs: ls -l ########################################################################################## -############################### Upload ################################################### +############################### Upload artifacts ######################################### +########################################################################################## + + - name: Upload Artifact + if: matrix.os == 'ubuntu-16.04' && matrix.qt_version == 'Qt5' + uses: actions/upload-artifact@v2 + with: + name: ${{matrix.ARTIFACT_NAME}} + path: artifacts + +########################################################################################## +############################### Upload release ########################################### ########################################################################################## - name: Upload Release diff --git a/.github/workflows/Build-Mac.yml b/.github/workflows/Build-Mac.yml index 3bd8b5775..3b6b4aea8 100644 --- a/.github/workflows/Build-Mac.yml +++ b/.github/workflows/Build-Mac.yml @@ -101,8 +101,20 @@ jobs: cp ${{matrix.ARTIFACT_NAME}} $GITHUB_WORKSPACE/artifacts/ echo "ls -l $GITHUB_WORKSPACE/artifacts"; ls -l $GITHUB_WORKSPACE/artifacts + +########################################################################################## +############################### Upload artifacts ######################################### +########################################################################################## + + - name: Upload Artifact + if: matrix.qt_version == 'Qt5' + uses: actions/upload-artifact@v2 + with: + name: ${{matrix.ARTIFACT_NAME}} + path: artifacts + ########################################################################################## -############################### Upload ################################################### +############################### Upload release ########################################### ########################################################################################## - name: Upload Release diff --git a/.github/workflows/Build-Windows.yml b/.github/workflows/Build-Windows.yml index 59b99b4f3..29e1ef71f 100644 --- a/.github/workflows/Build-Windows.yml +++ b/.github/workflows/Build-Windows.yml @@ -161,7 +161,7 @@ jobs: if: matrix.auto_update == true ########################################################################################## -############################### Upload ################################################### +############################### Upload artifacts ######################################### ########################################################################################## - name: Upload Artifact @@ -176,6 +176,11 @@ jobs: with: name: YUViewSetup.msi path: ./YUViewSetup.msi + +########################################################################################## +############################### Upload release ########################################### +########################################################################################## + - name: Upload Windows zip to Release if: matrix.qt_version == 'Qt5' && github.event_name == 'release' uses: actions/upload-release-asset@v1.0.1 From 4f2cd3292c13825ba9144cce2b4054e52b80d58d Mon Sep 17 00:00:00 2001 From: Johannes Sauer Date: Sun, 25 Apr 2021 12:18:56 +0200 Subject: [PATCH 12/12] windows cmake build: renamed YUViewSetup.msi to YUViewSetup-cmake.msi to avoid name conflict with qmake build workflow --- .github/workflows/Build-Windows.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/Build-Windows.yml b/.github/workflows/Build-Windows.yml index 29e1ef71f..ec82daf6b 100644 --- a/.github/workflows/Build-Windows.yml +++ b/.github/workflows/Build-Windows.yml @@ -156,7 +156,8 @@ jobs: "${WIX}\bin\candle.exe" -dConfiguration=Release -dOutDir=bin/Release/ -dTargetExt=.msi -dTargetFileName=YUViewSetup.msi -dTargetName=YUViewSetup -out obj/Release/ -arch x64 harvestedDirectory.wxs "${WIX}\bin\Light.exe" -b ../../deploy -out bin/Release/YUViewSetup.msi -pdbout bin/Release/YUViewSetup.wixpdb -cultures:null -ext "${WIX}\bin\WixUIExtension.dll" -contentsfile obj/Release/YUViewSetup.wixproj.BindContentsFileListnull.txt -outputsfile obj/Release/YUViewSetup.wixproj.BindOutputsFileListnull.txt -builtoutputsfile obj/Release/YUViewSetup.wixproj.BindBuiltOutputsFileListnull.txt obj/Release/YUView.wixobj obj/Release/harvestedDirectory.wixobj cd $GITHUB_WORKSPACE - cp deployment/wix/bin/Release/YUViewSetup.msi ./ + # rename to avoid name conflict with qmake build workflow + cp deployment/wix/bin/Release/YUViewSetup.msi ./YUViewSetup-cmake.msi shell: bash if: matrix.auto_update == true @@ -174,8 +175,8 @@ jobs: if: matrix.qt_version == 'Qt5' && matrix.auto_update == true uses: actions/upload-artifact@v2 with: - name: YUViewSetup.msi - path: ./YUViewSetup.msi + name: YUViewSetup-cmake.msi + path: ./YUViewSetup-cmake.msi ########################################################################################## ############################### Upload release ########################################### @@ -198,8 +199,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: YUViewSetup.msi - asset_name: YUViewSetup.msi + asset_path: YUViewSetup-cmake.msi + asset_name: YUViewSetup-cmake.msi asset_content_type: application/zip # How to upload files to the release: