From aacd5dd33d718972497835a1b739defdd07611b5 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Wed, 16 Sep 2020 19:57:25 +0200 Subject: [PATCH 01/47] Whitespace cleanup --- .github/workflows/ci.yml | 52 ++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9566f287e..83883e23a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: CMake on: push: - branches: + branches: - master env: @@ -12,7 +12,7 @@ env: jobs: build: # The CMake configure and build commands are platform agnostic and should work equally - # well on Windows or Mac. You can convert this to a matrix build if you need + # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix runs-on: windows-latest @@ -24,49 +24,49 @@ jobs: - name: Set package name shell: bash run: echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-Windows-x86_64)" - + - uses: actions/checkout@v2 - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands run: cmake -E make_directory ${{runner.workspace}}/build - + - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1.3.0 - + - name: Acquire Qt uses: jurplel/install-qt-action@v2.8.0 with: version: 5.15.1 - + - name: Acquire FFmpeg run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ffmpeg-win.7z && 7z x ffmpeg-win.7z - + - name: Acquire OpenColorIO run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ocio-win.7z && 7z x ocio-win.7z - + - name: Acquire OpenEXR run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/openexr-win.7z && 7z x openexr-win.7z - + - name: Acquire OpenImageIO run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/oiio-win.7z && 7z x oiio-win.7z - + - name: Acquire libpng run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libpng-win.7z && 7z x libpng-win.7z - + - name: Acquire libtiff run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libtiff-win.7z && 7z x libtiff-win.7z - + - name: Acquire turbojpeg run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/turbojpeg-win.7z && 7z x turbojpeg-win.7z - + - name: Acquire zlib run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/zlib-win.7z && 7z x zlib-win.7z - + - name: Acquire Boost run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/boost-win.7z && 7z x boost-win.7z - + - name: Acquire Crashpad run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/crashpad-win.7z && 7z x crashpad-win.7z @@ -75,21 +75,21 @@ jobs: # access regardless of the host operating system shell: bash working-directory: ${{runner.workspace}}/build - # Note the current convention is to use the -S and -B options here to specify source - # and build directories, but this is only available with CMake 3.13 and higher. + # Note the current convention is to use the -S and -B options here to specify source + # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 run: PATH=$GITHUB_WORKSPACE:$PATH cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G "Ninja" - name: Build working-directory: ${{runner.workspace}}/build shell: bash - # Execute the build. You can specify a specific target with "--target " + # Execute the build. You can specify a specific target with "--target " run: cmake --build . --config $BUILD_TYPE - name: Test working-directory: ${{runner.workspace}}/build shell: bash - # Execute tests defined by the CMake configuration. + # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: ctest -C $BUILD_TYPE @@ -97,44 +97,44 @@ jobs: working-directory: ${{runner.workspace}}/build shell: cmd run: mkdir olive-editor && copy app\olive-editor.exe olive-editor && copy app\olive-editor.pdb olive-editor && windeployqt olive-editor\olive-editor.exe && copy %GITHUB_WORKSPACE%\bin\*.dll olive-editor && copy %GITHUB_WORKSPACE%\out\Default\crashpad_handler.exe olive-editor - + - name: Deploy Installer working-directory: ${{runner.workspace}}/build shell: cmd run: copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . && copy %GITHUB_WORKSPACE%\LICENSE . && "C:/Program Files (x86)/NSIS/makensis.exe" -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi - + - name: Deploy Portable working-directory: ${{runner.workspace}}/build shell: cmd run: type NUL > olive-editor\portable && 7z a %PKGNAME%.zip olive-editor - + - name: Export Crashpad Symbols and Upload To Server working-directory: ${{runner.workspace}}/build shell: cmd env: GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} run: curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe && dump_syms app\olive-editor.pdb > olive-editor.sym && curl -X POST -F symfile=@olive-editor.sym -F key="%GH_AUTH_KEY%" https://olivevideoeditor.org/crashpad/symbols.php - + - name: Upload Installer to Nightly Page shell: bash working-directory: ${{runner.workspace}}/build env: GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} run: curl -X POST -F file=@$PKGNAME.exe -F key="$GH_AUTH_KEY" -F hash="$GITHUB_SHA" -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" https://olivevideoeditor.org/dl/push.php - + - name: Upload Portable to Nightly Page shell: bash working-directory: ${{runner.workspace}}/build env: GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} run: curl -X POST -F file=@$PKGNAME.zip -F key="$GH_AUTH_KEY" -F hash="$GITHUB_SHA" -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" https://olivevideoeditor.org/dl/push.php - + - name: Upload Installer Artifact uses: actions/upload-artifact@v2 with: name: ${{env.PKGNAME}}.exe path: ${{runner.workspace}}/build/${{env.PKGNAME}}.exe - + - name: Upload Portable Artifact uses: actions/upload-artifact@v2 with: From c07cc9c2daee2ab9773ab509f5a8e9da35fbd7f5 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Wed, 16 Sep 2020 20:01:37 +0200 Subject: [PATCH 02/47] Formatting --- .github/workflows/ci.yml | 94 +++++++++++++++++++++++++++++++--------- 1 file changed, 73 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83883e23a..040e800ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,14 +23,16 @@ jobs: steps: - name: Set package name shell: bash - run: echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-Windows-x86_64)" + run: | + echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-Windows-x86_64)" - uses: actions/checkout@v2 - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands - run: cmake -E make_directory ${{runner.workspace}}/build + run: | + cmake -E make_directory ${{runner.workspace}}/build - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1.3.0 @@ -41,34 +43,54 @@ jobs: version: 5.15.1 - name: Acquire FFmpeg - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ffmpeg-win.7z && 7z x ffmpeg-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ffmpeg-win.7z + 7z x ffmpeg-win.7z - name: Acquire OpenColorIO - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ocio-win.7z && 7z x ocio-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ocio-win.7z + 7z x ocio-win.7z - name: Acquire OpenEXR - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/openexr-win.7z && 7z x openexr-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/openexr-win.7z + 7z x openexr-win.7z - name: Acquire OpenImageIO - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/oiio-win.7z && 7z x oiio-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/oiio-win.7z + 7z x oiio-win.7z - name: Acquire libpng - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libpng-win.7z && 7z x libpng-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libpng-win.7z + 7z x libpng-win.7z - name: Acquire libtiff - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libtiff-win.7z && 7z x libtiff-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libtiff-win.7z + 7z x libtiff-win.7z - name: Acquire turbojpeg - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/turbojpeg-win.7z && 7z x turbojpeg-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/turbojpeg-win.7z + 7z x turbojpeg-win.7z - name: Acquire zlib - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/zlib-win.7z && 7z x zlib-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/zlib-win.7z + 7z x zlib-win.7z - name: Acquire Boost - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/boost-win.7z && 7z x boost-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/boost-win.7z + 7z x boost-win.7z - name: Acquire Crashpad - run: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/crashpad-win.7z && 7z x crashpad-win.7z + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/crashpad-win.7z + 7z x crashpad-win.7z - name: Configure CMake # Use a bash shell so we can use the same syntax for environment variable @@ -78,56 +100,86 @@ jobs: # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: PATH=$GITHUB_WORKSPACE:$PATH cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G "Ninja" + run: | + PATH=$GITHUB_WORKSPACE:$PATH \ + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G "Ninja" - name: Build working-directory: ${{runner.workspace}}/build shell: bash # Execute the build. You can specify a specific target with "--target " - run: cmake --build . --config $BUILD_TYPE + run: | + cmake --build . --config $BUILD_TYPE - name: Test working-directory: ${{runner.workspace}}/build shell: bash # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest -C $BUILD_TYPE + run: | + ctest -C $BUILD_TYPE - name: Create Package working-directory: ${{runner.workspace}}/build shell: cmd - run: mkdir olive-editor && copy app\olive-editor.exe olive-editor && copy app\olive-editor.pdb olive-editor && windeployqt olive-editor\olive-editor.exe && copy %GITHUB_WORKSPACE%\bin\*.dll olive-editor && copy %GITHUB_WORKSPACE%\out\Default\crashpad_handler.exe olive-editor + run: | + mkdir olive-editor + copy app\olive-editor.exe olive-editor + copy app\olive-editor.pdb olive-editor + windeployqt olive-editor\olive-editor.exe + copy %GITHUB_WORKSPACE%\bin\*.dll olive-editor + copy %GITHUB_WORKSPACE%\out\Default\crashpad_handler.exe olive-editor - name: Deploy Installer working-directory: ${{runner.workspace}}/build shell: cmd - run: copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . && copy %GITHUB_WORKSPACE%\LICENSE . && "C:/Program Files (x86)/NSIS/makensis.exe" -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi + run: | + copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . + copy %GITHUB_WORKSPACE%\LICENSE . + "C:/Program Files (x86)/NSIS/makensis.exe" -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi - name: Deploy Portable working-directory: ${{runner.workspace}}/build shell: cmd - run: type NUL > olive-editor\portable && 7z a %PKGNAME%.zip olive-editor + run: | + type NUL > olive-editor\portable + 7z a %PKGNAME%.zip olive-editor - name: Export Crashpad Symbols and Upload To Server working-directory: ${{runner.workspace}}/build shell: cmd env: GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} - run: curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe && dump_syms app\olive-editor.pdb > olive-editor.sym && curl -X POST -F symfile=@olive-editor.sym -F key="%GH_AUTH_KEY%" https://olivevideoeditor.org/crashpad/symbols.php + run: | + curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe + dump_syms app\olive-editor.pdb > olive-editor.sym + curl -X POST -F symfile=@olive-editor.sym -F key="%GH_AUTH_KEY%" https://olivevideoeditor.org/crashpad/symbols.php - name: Upload Installer to Nightly Page shell: bash working-directory: ${{runner.workspace}}/build env: GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} - run: curl -X POST -F file=@$PKGNAME.exe -F key="$GH_AUTH_KEY" -F hash="$GITHUB_SHA" -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" https://olivevideoeditor.org/dl/push.php + run: | + curl -X POST -F file=@$PKGNAME.exe \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php - name: Upload Portable to Nightly Page shell: bash working-directory: ${{runner.workspace}}/build env: GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} - run: curl -X POST -F file=@$PKGNAME.zip -F key="$GH_AUTH_KEY" -F hash="$GITHUB_SHA" -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" https://olivevideoeditor.org/dl/push.php + run: | + curl -X POST -F file=@$PKGNAME.zip \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php - name: Upload Installer Artifact uses: actions/upload-artifact@v2 From b7ba48709c47ff772f91bec9e033eeaaa545f257 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Sep 2020 00:05:15 +0200 Subject: [PATCH 03/47] Rename workflow to CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 040e800ac..2c2506965 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CMake +name: CI on: push: From 598e1d0fbb53061e50c95cb8ff0626a8c784f5a4 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Sep 2020 00:07:51 +0200 Subject: [PATCH 04/47] Formatting --- .github/workflows/ci.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c2506965..ce45a5ef5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands run: | - cmake -E make_directory ${{runner.workspace}}/build + cmake -E make_directory ${{ runner.workspace }}/build - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1.3.0 @@ -96,7 +96,7 @@ jobs: # Use a bash shell so we can use the same syntax for environment variable # access regardless of the host operating system shell: bash - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 @@ -105,14 +105,14 @@ jobs: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G "Ninja" - name: Build - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build shell: bash # Execute the build. You can specify a specific target with "--target " run: | cmake --build . --config $BUILD_TYPE - name: Test - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build shell: bash # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail @@ -120,7 +120,7 @@ jobs: ctest -C $BUILD_TYPE - name: Create Package - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build shell: cmd run: | mkdir olive-editor @@ -131,7 +131,7 @@ jobs: copy %GITHUB_WORKSPACE%\out\Default\crashpad_handler.exe olive-editor - name: Deploy Installer - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build shell: cmd run: | copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . @@ -139,17 +139,17 @@ jobs: "C:/Program Files (x86)/NSIS/makensis.exe" -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi - name: Deploy Portable - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build shell: cmd run: | type NUL > olive-editor\portable 7z a %PKGNAME%.zip olive-editor - name: Export Crashpad Symbols and Upload To Server - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build shell: cmd env: - GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} + GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} run: | curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe dump_syms app\olive-editor.pdb > olive-editor.sym @@ -157,9 +157,9 @@ jobs: - name: Upload Installer to Nightly Page shell: bash - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build env: - GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} + GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} run: | curl -X POST -F file=@$PKGNAME.exe \ -F key="$GH_AUTH_KEY" \ @@ -170,9 +170,9 @@ jobs: - name: Upload Portable to Nightly Page shell: bash - working-directory: ${{runner.workspace}}/build + working-directory: ${{ runner.workspace }}/build env: - GH_AUTH_KEY: ${{secrets.GH_AUTH_KEY}} + GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} run: | curl -X POST -F file=@$PKGNAME.zip \ -F key="$GH_AUTH_KEY" \ @@ -184,11 +184,11 @@ jobs: - name: Upload Installer Artifact uses: actions/upload-artifact@v2 with: - name: ${{env.PKGNAME}}.exe - path: ${{runner.workspace}}/build/${{env.PKGNAME}}.exe + name: ${{ env.PKGNAME }}.exe + path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.exe - name: Upload Portable Artifact uses: actions/upload-artifact@v2 with: - name: ${{env.PKGNAME}}.zip - path: ${{runner.workspace}}/build/${{env.PKGNAME}}.zip + name: ${{ env.PKGNAME }}.zip + path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip From 711a3b4df324653c09673d99bee0fcfd1dcf1062 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Sep 2020 00:10:39 +0200 Subject: [PATCH 05/47] Remove unused and broken code --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ce45a5ef5..d2b58866d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,6 @@ jobs: # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix runs-on: windows-latest - env: - PKGNAME: Olive-${GITHUB_SHA:8}-Windows-x86_64 - steps: - name: Set package name shell: bash From d62e5a526748eec36e0ddbe36bccbe461946892a Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Sep 2020 00:10:53 +0200 Subject: [PATCH 06/47] Add build matrix --- .github/workflows/ci.yml | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2b58866d..09789a18f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,16 +5,20 @@ on: branches: - master -env: - # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - BUILD_TYPE: RelWithDebInfo - jobs: - build: - # The CMake configure and build commands are platform agnostic and should work equally - # well on Windows or Mac. You can convert this to a matrix build if you need - # cross-platform coverage. - # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix + windows: + strategy: + matrix: + build: [1] + include: + - build: 1 + build-type: RelWithDebInfo + compiler-name: MSVC 16.x + os-name: Windows + name: | + ${{ matrix.os-name }} + <${{ matrix.compiler-name }}, + ${{ matrix.build-type }}> runs-on: windows-latest steps: @@ -99,14 +103,14 @@ jobs: # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 run: | PATH=$GITHUB_WORKSPACE:$PATH \ - cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G "Ninja" + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G "Ninja" - name: Build working-directory: ${{ runner.workspace }}/build shell: bash # Execute the build. You can specify a specific target with "--target " run: | - cmake --build . --config $BUILD_TYPE + cmake --build . --config ${{ matrix.build-type }} - name: Test working-directory: ${{ runner.workspace }}/build @@ -114,7 +118,7 @@ jobs: # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: | - ctest -C $BUILD_TYPE + ctest -C ${{ matrix.build-type }} - name: Create Package working-directory: ${{ runner.workspace }}/build From 621e500190ead16bea2ffb7b74a095c676115571 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Sep 2020 00:49:31 +0200 Subject: [PATCH 07/47] Formatting --- .github/workflows/ci.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09789a18f..929094a76 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -154,7 +154,10 @@ jobs: run: | curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe dump_syms app\olive-editor.pdb > olive-editor.sym - curl -X POST -F symfile=@olive-editor.sym -F key="%GH_AUTH_KEY%" https://olivevideoeditor.org/crashpad/symbols.php + curl -X POST \ + -F symfile=@olive-editor.sym \ + -F key="%GH_AUTH_KEY%" \ + https://olivevideoeditor.org/crashpad/symbols.php - name: Upload Installer to Nightly Page shell: bash @@ -162,7 +165,8 @@ jobs: env: GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} run: | - curl -X POST -F file=@$PKGNAME.exe \ + curl -X POST \ + -F file=@$PKGNAME.exe \ -F key="$GH_AUTH_KEY" \ -F hash="$GITHUB_SHA" \ -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ @@ -175,7 +179,8 @@ jobs: env: GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} run: | - curl -X POST -F file=@$PKGNAME.zip \ + curl -X POST \ + -F file=@$PKGNAME.zip \ -F key="$GH_AUTH_KEY" \ -F hash="$GITHUB_SHA" \ -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ From e3d49e78b0389647800e4e17129edf9644c642ed Mon Sep 17 00:00:00 2001 From: Simran Date: Thu, 17 Sep 2020 01:04:59 +0200 Subject: [PATCH 08/47] Build on PRs against master But don't upload to nightly page (to be tested) --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 929094a76..c3b2fc8ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,9 @@ on: push: branches: - master + pull_request: + branches: + - master jobs: windows: @@ -172,6 +175,7 @@ jobs: -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ https://olivevideoeditor.org/dl/push.php + if: github.event_name != 'pull_request' - name: Upload Portable to Nightly Page shell: bash @@ -186,6 +190,7 @@ jobs: -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ https://olivevideoeditor.org/dl/push.php + if: github.event_name != 'pull_request' - name: Upload Installer Artifact uses: actions/upload-artifact@v2 From ad6b94e40623b4aecc64351a17918f6f72a1cbbe Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Sep 2020 12:45:42 +0200 Subject: [PATCH 09/47] Remove pull_request trigger until better understood --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c3b2fc8ff..b60641d31 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,9 +4,6 @@ on: push: branches: - master - pull_request: - branches: - - master jobs: windows: From c668caf66ee740d2367a598c2972b6ae413cac50 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Sep 2020 12:46:50 +0200 Subject: [PATCH 10/47] Fix new line escaping for cmd --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b60641d31..19e7c9d77 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -154,9 +154,9 @@ jobs: run: | curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe dump_syms app\olive-editor.pdb > olive-editor.sym - curl -X POST \ - -F symfile=@olive-editor.sym \ - -F key="%GH_AUTH_KEY%" \ + curl -X POST ^ + -F symfile=@olive-editor.sym ^ + -F key="%GH_AUTH_KEY%" ^ https://olivevideoeditor.org/crashpad/symbols.php - name: Upload Installer to Nightly Page From a9242f0235b9b6e9f2105ddece93d05282eda2b4 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Fri, 18 Sep 2020 00:07:44 +0200 Subject: [PATCH 11/47] We use Ninja single config --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19e7c9d77..105a4c4fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,7 +110,7 @@ jobs: shell: bash # Execute the build. You can specify a specific target with "--target " run: | - cmake --build . --config ${{ matrix.build-type }} + cmake --build . - name: Test working-directory: ${{ runner.workspace }}/build From e1baa154b47c0a86102d39645054c1d801d9c82e Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Fri, 18 Sep 2020 00:08:43 +0200 Subject: [PATCH 12/47] makensis seems to be in PATH in GitHub env --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 105a4c4fa..d3fda4bab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -137,7 +137,7 @@ jobs: run: | copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . copy %GITHUB_WORKSPACE%\LICENSE . - "C:/Program Files (x86)/NSIS/makensis.exe" -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi + makensis -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi - name: Deploy Portable working-directory: ${{ runner.workspace }}/build From e733d1c278aa4a644bb0a6ae6fe03735a9cfc409 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 18 Sep 2020 12:26:30 +1000 Subject: [PATCH 13/47] github: clarify what "commit hash" means in all templates --- .github/ISSUE_TEMPLATE/01-crash_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-build_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-cache_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-codec_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-color_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-editing_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-export_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-node_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-playback_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-project_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-renderer_issue.md | 2 +- .github/ISSUE_TEMPLATE/50-ui_issue.md | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01-crash_issue.md b/.github/ISSUE_TEMPLATE/01-crash_issue.md index c05544838..0b68b7202 100644 --- a/.github/ISSUE_TEMPLATE/01-crash_issue.md +++ b/.github/ISSUE_TEMPLATE/01-crash_issue.md @@ -6,7 +6,7 @@ labels: "Crash, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-build_issue.md b/.github/ISSUE_TEMPLATE/50-build_issue.md index f14b6c914..8d93ad06d 100644 --- a/.github/ISSUE_TEMPLATE/50-build_issue.md +++ b/.github/ISSUE_TEMPLATE/50-build_issue.md @@ -6,7 +6,7 @@ labels: "Building/Packaging, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-cache_issue.md b/.github/ISSUE_TEMPLATE/50-cache_issue.md index 13b8bc14b..0d088aa8c 100644 --- a/.github/ISSUE_TEMPLATE/50-cache_issue.md +++ b/.github/ISSUE_TEMPLATE/50-cache_issue.md @@ -6,7 +6,7 @@ labels: "Disk Cache, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-codec_issue.md b/.github/ISSUE_TEMPLATE/50-codec_issue.md index a3a936915..04082833f 100644 --- a/.github/ISSUE_TEMPLATE/50-codec_issue.md +++ b/.github/ISSUE_TEMPLATE/50-codec_issue.md @@ -6,7 +6,7 @@ labels: "Codec, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-color_issue.md b/.github/ISSUE_TEMPLATE/50-color_issue.md index 6a7464ea3..99889a56b 100644 --- a/.github/ISSUE_TEMPLATE/50-color_issue.md +++ b/.github/ISSUE_TEMPLATE/50-color_issue.md @@ -6,7 +6,7 @@ labels: "Color Management, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-editing_issue.md b/.github/ISSUE_TEMPLATE/50-editing_issue.md index c731e221f..0465e88a5 100644 --- a/.github/ISSUE_TEMPLATE/50-editing_issue.md +++ b/.github/ISSUE_TEMPLATE/50-editing_issue.md @@ -6,7 +6,7 @@ labels: "Timeline/Editing, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-export_issue.md b/.github/ISSUE_TEMPLATE/50-export_issue.md index e21a79294..7ccef22fc 100644 --- a/.github/ISSUE_TEMPLATE/50-export_issue.md +++ b/.github/ISSUE_TEMPLATE/50-export_issue.md @@ -6,7 +6,7 @@ labels: "Export, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-node_issue.md b/.github/ISSUE_TEMPLATE/50-node_issue.md index 7749521ba..4d15ecebe 100644 --- a/.github/ISSUE_TEMPLATE/50-node_issue.md +++ b/.github/ISSUE_TEMPLATE/50-node_issue.md @@ -6,7 +6,7 @@ labels: "Nodes/Compositing, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-playback_issue.md b/.github/ISSUE_TEMPLATE/50-playback_issue.md index 00aa98149..5e35446f5 100644 --- a/.github/ISSUE_TEMPLATE/50-playback_issue.md +++ b/.github/ISSUE_TEMPLATE/50-playback_issue.md @@ -6,7 +6,7 @@ labels: "Playback, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-project_issue.md b/.github/ISSUE_TEMPLATE/50-project_issue.md index 9e151539c..fa65f393e 100644 --- a/.github/ISSUE_TEMPLATE/50-project_issue.md +++ b/.github/ISSUE_TEMPLATE/50-project_issue.md @@ -6,7 +6,7 @@ labels: "Project, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-renderer_issue.md b/.github/ISSUE_TEMPLATE/50-renderer_issue.md index 3d6812004..f97a22079 100644 --- a/.github/ISSUE_TEMPLATE/50-renderer_issue.md +++ b/.github/ISSUE_TEMPLATE/50-renderer_issue.md @@ -6,7 +6,7 @@ labels: "Renderer, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** diff --git a/.github/ISSUE_TEMPLATE/50-ui_issue.md b/.github/ISSUE_TEMPLATE/50-ui_issue.md index 12af9f863..a0cfa3c02 100644 --- a/.github/ISSUE_TEMPLATE/50-ui_issue.md +++ b/.github/ISSUE_TEMPLATE/50-ui_issue.md @@ -6,7 +6,7 @@ labels: "User Interface, Triage" assignees: '' --- -**Commit Hash** +**Commit Hash (8 character string of letters/numbers in title bar)** **Platform** From 8506c82a0c2d00aae4e814e2e02f2d99b23f2a2c Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 18 Sep 2020 12:58:24 +1000 Subject: [PATCH 14/47] import: safely handle unsupported files Fixes #1191 --- app/codec/ffmpeg/ffmpegdecoder.cpp | 34 +++++++++--- app/core.cpp | 10 +++- app/task/project/import/CMakeLists.txt | 2 + app/task/project/import/import.cpp | 5 +- app/task/project/import/import.h | 12 +++++ app/task/project/import/importerrordialog.cpp | 53 +++++++++++++++++++ app/task/project/import/importerrordialog.h | 40 ++++++++++++++ 7 files changed, 148 insertions(+), 8 deletions(-) create mode 100644 app/task/project/import/importerrordialog.cpp create mode 100644 app/task/project/import/importerrordialog.h diff --git a/app/codec/ffmpeg/ffmpegdecoder.cpp b/app/codec/ffmpeg/ffmpegdecoder.cpp index 096cfcd07..46cac10fc 100644 --- a/app/codec/ffmpeg/ffmpegdecoder.cpp +++ b/app/codec/ffmpeg/ffmpegdecoder.cpp @@ -477,14 +477,19 @@ bool FFmpegDecoder::Probe(Footage *f, const QAtomicInt* cancelled) // Retrieve metadata about the media avformat_find_stream_info(fmt_ctx, nullptr); + QVector streams(fmt_ctx->nb_streams); + // Dump it into the Footage object for (unsigned int i=0;inb_streams;i++) { AVStream* avstream = fmt_ctx->streams[i]; + // Find decoder for this stream, if it exists we can proceed + AVCodec* decoder = avcodec_find_decoder(avstream->codecpar->codec_id); + StreamPtr str; - if (avstream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { + if (avstream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && decoder) { bool image_is_still = false; rational pixel_aspect_ratio; @@ -564,7 +569,7 @@ bool FFmpegDecoder::Probe(Footage *f, const QAtomicInt* cancelled) str = image_stream; - } else if (avstream->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { + } else if (avstream->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && decoder) { // Create an audio stream object AudioStreamPtr audio_stream = std::make_shared(); @@ -600,7 +605,7 @@ bool FFmpegDecoder::Probe(Footage *f, const QAtomicInt* cancelled) str->set_type(Stream::kAttachment); break; default: - // We should never realistically get here, but we make an "invalid" stream just in case + // Fallback to an unknown stream str->set_type(Stream::kUnknown); break; } @@ -611,11 +616,27 @@ bool FFmpegDecoder::Probe(Footage *f, const QAtomicInt* cancelled) str->set_timebase(avstream->time_base); str->set_duration(avstream->duration); - f->add_stream(str); + streams[i] = str; } - // As long as we can open the container and retrieve information, this was a successful probe - result = true; + // Check if we could pick up any streams in this file + bool found_valid_streams = false; + + foreach (StreamPtr stream, streams) { + if (stream->type() != Stream::kUnknown) { + found_valid_streams = true; + break; + } + } + + if (found_valid_streams) { + // Copy streams over + foreach (StreamPtr stream, streams) { + f->add_stream(stream); + } + + result = true; + } } // Free all memory @@ -1330,6 +1351,7 @@ void FFmpegDecoderInstance::RemoveFirstFrame() FFmpegDecoderInstance::FFmpegDecoderInstance(const char *filename, int stream_index) : fmt_ctx_(nullptr), + codec_ctx_(nullptr), opts_(nullptr), scale_ctx_(nullptr), scale_divider_(0), diff --git a/app/core.cpp b/app/core.cpp index 9790246ed..5ba51ee45 100644 --- a/app/core.cpp +++ b/app/core.cpp @@ -51,6 +51,7 @@ #include "render/pixelformat.h" #include "render/shaderinfo.h" #include "task/project/import/import.h" +#include "task/project/import/importerrordialog.h" #include "task/project/load/load.h" #include "task/project/save/save.h" #include "task/taskmanager.h" @@ -473,7 +474,14 @@ void Core::AddOpenProjectFromTask(Task *task) void Core::ImportTaskComplete(Task* task) { - QUndoCommand *command = static_cast(task)->GetCommand(); + ProjectImportTask* import_task = static_cast(task); + + QUndoCommand *command = import_task->GetCommand(); + + if (import_task->HasInvalidFiles()) { + ProjectImportErrorDialog d(import_task->GetInvalidFiles(), main_window_); + d.exec(); + } undo_stack_.pushIfHasChildren(command); } diff --git a/app/task/project/import/CMakeLists.txt b/app/task/project/import/CMakeLists.txt index 77b4f31a6..4a25a6b03 100644 --- a/app/task/project/import/CMakeLists.txt +++ b/app/task/project/import/CMakeLists.txt @@ -18,5 +18,7 @@ set(OLIVE_SOURCES ${OLIVE_SOURCES} task/project/import/import.h task/project/import/import.cpp + task/project/import/importerrordialog.h + task/project/import/importerrordialog.cpp PARENT_SCOPE ) diff --git a/app/task/project/import/import.cpp b/app/task/project/import/import.cpp index 270e3a7d4..ef5767886 100644 --- a/app/task/project/import/import.cpp +++ b/app/task/project/import/import.cpp @@ -122,7 +122,10 @@ void ProjectImportTask::Import(Folder *folder, const QFileInfoList &import, int f->set_project(nullptr); - if (f->status() != Footage::kInvalid) { + if (f->status() == Footage::kInvalid) { + // Add to list so we can tell the user about it later + invalid_files_.append(file_info.absoluteFilePath()); + } else { // Create undoable command that adds the items to the model new ProjectViewModel::AddItemCommand(model_, folder, diff --git a/app/task/project/import/import.h b/app/task/project/import/import.h index d092fa192..2257fc8ea 100644 --- a/app/task/project/import/import.h +++ b/app/task/project/import/import.h @@ -42,6 +42,16 @@ public: return command_; } + const QStringList& GetInvalidFiles() const + { + return invalid_files_; + } + + bool HasInvalidFiles() const + { + return !invalid_files_.isEmpty(); + } + protected: virtual bool Run() override; @@ -58,6 +68,8 @@ private: int file_count_; + QStringList invalid_files_; + }; OLIVE_NAMESPACE_EXIT diff --git a/app/task/project/import/importerrordialog.cpp b/app/task/project/import/importerrordialog.cpp new file mode 100644 index 000000000..c6b5e4d8c --- /dev/null +++ b/app/task/project/import/importerrordialog.cpp @@ -0,0 +1,53 @@ +/*** + + Olive - Non-Linear Video Editor + Copyright (C) 2019 Olive Team + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +***/ + +#include "importerrordialog.h" + +#include +#include +#include +#include + +OLIVE_NAMESPACE_ENTER + +ProjectImportErrorDialog::ProjectImportErrorDialog(const QStringList& filenames, QWidget* parent) : + QDialog(parent) +{ + QVBoxLayout* layout = new QVBoxLayout(this); + + setWindowTitle(tr("Import Error")); + + layout->addWidget(new QLabel(tr("The following files failed to import. Olive likely does not " + "support their formats."))); + + QListWidget* list_widget = new QListWidget(); + foreach (const QString& s, filenames) { + list_widget->addItem(s); + } + layout->addWidget(list_widget); + + QDialogButtonBox* buttons = new QDialogButtonBox(); + buttons->setStandardButtons(QDialogButtonBox::Ok); + buttons->setCenterButtons(true); + connect(buttons, &QDialogButtonBox::accepted, this, &ProjectImportErrorDialog::accept); + layout->addWidget(buttons); +} + +OLIVE_NAMESPACE_EXIT diff --git a/app/task/project/import/importerrordialog.h b/app/task/project/import/importerrordialog.h new file mode 100644 index 000000000..8ee6bf740 --- /dev/null +++ b/app/task/project/import/importerrordialog.h @@ -0,0 +1,40 @@ +/*** + + Olive - Non-Linear Video Editor + Copyright (C) 2019 Olive Team + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +***/ + +#ifndef PROJECTIMPORTERRORDIALOG_H +#define PROJECTIMPORTERRORDIALOG_H + +#include + +#include "common/define.h" + +OLIVE_NAMESPACE_ENTER + +class ProjectImportErrorDialog : public QDialog +{ + Q_OBJECT +public: + ProjectImportErrorDialog(const QStringList& filenames, QWidget* parent = nullptr); + +}; + +OLIVE_NAMESPACE_EXIT + +#endif // PROJECTIMPORTERRORDIALOG_H From 9c488d9a37fd3c15aa00f354defeccaf7a84b82d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 18 Sep 2020 12:59:16 +1000 Subject: [PATCH 15/47] timeline: use full viewport update Fixes #1190 --- app/widget/timelinewidget/view/timelineview.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/app/widget/timelinewidget/view/timelineview.cpp b/app/widget/timelinewidget/view/timelineview.cpp index 4b60ec0b7..99fd892a0 100644 --- a/app/widget/timelinewidget/view/timelineview.cpp +++ b/app/widget/timelinewidget/view/timelineview.cpp @@ -46,6 +46,7 @@ TimelineView::TimelineView(Qt::Alignment vertical_alignment, QWidget *parent) : setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); setBackgroundRole(QPalette::Window); setContextMenuPolicy(Qt::CustomContextMenu); + setViewportUpdateMode(QGraphicsView::FullViewportUpdate); viewport()->setMouseTracking(true); } From 01428276f74a34cd493c8285e0e5a74b7f7b26b4 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 18 Sep 2020 13:06:10 +1000 Subject: [PATCH 16/47] export: alternate method of checking video/audio parameters based on ticket type Fixes #1196 --- app/render/backend/renderbackend.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index 9c72f47a9..8e5c0110b 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -375,13 +375,6 @@ void RenderBackend::RunNextJob() return; } - // Check if params are valid - if (!video_params_.is_valid() - || !audio_params_.is_valid()) { - qDebug() << "Failed to run job, parameters are invalid"; - return; - } - // If we have a value update queued, check if all workers are available and proceed from there if (autocache_enabled_ && !graph_update_queue_.isEmpty()) { bool all_workers_available = true; @@ -449,6 +442,8 @@ void RenderBackend::RunNextJob() switch (ticket->GetType()) { case RenderTicket::kTypeHash: + Q_ASSERT(video_params_.is_valid()); + QtConcurrent::run(&thread_pool_, worker, &RenderWorker::Hash, @@ -458,6 +453,8 @@ void RenderBackend::RunNextJob() break; case RenderTicket::kTypeVideo: { + Q_ASSERT(video_params_.is_valid()); + rational frame = ticket->GetTime().value(); QtConcurrent::run(&thread_pool_, @@ -474,6 +471,8 @@ void RenderBackend::RunNextJob() break; } case RenderTicket::kTypeAudio: + Q_ASSERT(audio_params_.is_valid()); + QtConcurrent::run(&thread_pool_, worker, &RenderWorker::RenderAudio, From 27a4dbc85fd16fae623ee8822c2e3363d45ab60a Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 18 Sep 2020 13:19:18 +1000 Subject: [PATCH 17/47] import: fixed progres reporting --- app/task/project/import/import.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/task/project/import/import.cpp b/app/task/project/import/import.cpp index ef5767886..c8cd0a6c9 100644 --- a/app/task/project/import/import.cpp +++ b/app/task/project/import/import.cpp @@ -135,7 +135,7 @@ void ProjectImportTask::Import(Folder *folder, const QFileInfoList &import, int counter++; - emit ProgressChanged((counter * 100) / file_count_); + emit ProgressChanged(static_cast(counter) / static_cast(file_count_)); } } From 3103359cd6898fe219af5a1c0c421d1dc20fc54e Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 18 Sep 2020 23:49:40 +1000 Subject: [PATCH 18/47] slider: fixed crash when clicking another mouse button while dragging --- app/widget/slider/sliderlabel.cpp | 10 ++++++---- app/widget/slider/sliderladder.cpp | 13 ++++++++++--- app/widget/slider/sliderladder.h | 2 ++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/widget/slider/sliderlabel.cpp b/app/widget/slider/sliderlabel.cpp index d100379a5..ffc07fb2c 100644 --- a/app/widget/slider/sliderlabel.cpp +++ b/app/widget/slider/sliderlabel.cpp @@ -51,10 +51,12 @@ SliderLabel::SliderLabel(QWidget *parent) : void SliderLabel::mousePressEvent(QMouseEvent *e) { - if (e->modifiers() & Qt::AltModifier) { - emit RequestReset(); - } else { - emit LabelPressed(); + if (e->button() == Qt::LeftButton) { + if (e->modifiers() & Qt::AltModifier) { + emit RequestReset(); + } else { + emit LabelPressed(); + } } } diff --git a/app/widget/slider/sliderladder.cpp b/app/widget/slider/sliderladder.cpp index 5a9c4d235..c5c0054ae 100644 --- a/app/widget/slider/sliderladder.cpp +++ b/app/widget/slider/sliderladder.cpp @@ -103,9 +103,7 @@ void SliderLadder::mouseReleaseEvent(QMouseEvent *event) { Q_UNUSED(event) - drag_timer_.stop(); - - emit Released(); + this->close(); } void SliderLadder::showEvent(QShowEvent *event) @@ -115,6 +113,15 @@ void SliderLadder::showEvent(QShowEvent *event) drag_timer_.start(); } +void SliderLadder::closeEvent(QCloseEvent *event) +{ + Q_UNUSED(event) + + drag_timer_.stop(); + + emit Released(); +} + void SliderLadder::TimerUpdate() { int32_t x_mvmt, y_mvmt; diff --git a/app/widget/slider/sliderladder.h b/app/widget/slider/sliderladder.h index ce0ae6193..9fc30e511 100644 --- a/app/widget/slider/sliderladder.h +++ b/app/widget/slider/sliderladder.h @@ -75,6 +75,8 @@ protected: virtual void showEvent(QShowEvent *event) override; + virtual void closeEvent(QCloseEvent* event) override; + signals: void DraggedByValue(int value, double multiplier); From 6117ca44e931e14c9c715d05653c7250437d4d0d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 19 Sep 2020 12:07:36 +1000 Subject: [PATCH 19/47] sequence: ignore disabled streams --- app/project/item/sequence/sequence.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/project/item/sequence/sequence.cpp b/app/project/item/sequence/sequence.cpp index fcf76c8dd..ede8f6f88 100644 --- a/app/project/item/sequence/sequence.cpp +++ b/app/project/item/sequence/sequence.cpp @@ -268,6 +268,10 @@ void Sequence::set_parameters_from_footage(const QList footage) foreach (Footage* f, footage) { foreach (StreamPtr s, f->streams()) { + if (!s->enabled()) { + continue; + } + switch (s->type()) { case Stream::kVideo: { From 9c57899ae2d6582ec6b084ed13f1f6a539311d67 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 19 Sep 2020 12:07:52 +1000 Subject: [PATCH 20/47] mainwindow: auto-close footage in footage viewer when closing parent project --- app/window/mainwindow/mainwindow.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/window/mainwindow/mainwindow.cpp b/app/window/mainwindow/mainwindow.cpp index 4c010e963..cbb4b48da 100644 --- a/app/window/mainwindow/mainwindow.cpp +++ b/app/window/mainwindow/mainwindow.cpp @@ -349,6 +349,22 @@ void MainWindow::ProjectClose(Project *p) CloseSequence(seq); } } + + // Close any open footage in footage viewer + QList footage = p->get_items_of_type(Item::kFootage); + QList footage_in_viewer = footage_viewer_panel_->GetSelectedFootage(); + + if (!footage_in_viewer.isEmpty()) { + // FootageViewer only has the one footage item + Footage* f = footage_in_viewer.first(); + + foreach (ItemPtr i, footage) { + if (f == i.get()) { + footage_viewer_panel_->SetFootage(nullptr); + break; + } + } + } } void MainWindow::SetApplicationProgressStatus(ProgressStatus status) From 855c460ff37687f3a1c5167ea6b650772fe057a5 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 19 Sep 2020 12:30:42 +1000 Subject: [PATCH 21/47] footageviewer: use sequence functions to set video/audio params Code improvement by re-using existing code. Existing code prevents crash when loading a still image. --- app/widget/viewer/footageviewer.cpp | 51 +++++++++++------------------ app/widget/viewer/footageviewer.h | 4 +-- 2 files changed, 22 insertions(+), 33 deletions(-) diff --git a/app/widget/viewer/footageviewer.cpp b/app/widget/viewer/footageviewer.cpp index c4df185ce..5ca81ae1e 100644 --- a/app/widget/viewer/footageviewer.cpp +++ b/app/widget/viewer/footageviewer.cpp @@ -33,8 +33,10 @@ FootageViewerWidget::FootageViewerWidget(QWidget *parent) : footage_(nullptr) { video_node_ = new VideoInput(); + sequence_.AddNode(video_node_); + audio_node_ = new AudioInput(); - viewer_node_ = new ViewerOutput(); + sequence_.AddNode(audio_node_); connect(display_widget(), &ViewerDisplayWidget::DragStarted, this, &FootageViewerWidget::StartFootageDrag); @@ -55,17 +57,29 @@ void FootageViewerWidget::SetFootage(Footage *footage) ConnectViewerNode(nullptr); - NodeParam::DisconnectEdge(video_node_->output(), viewer_node_->texture_input()); - NodeParam::DisconnectEdge(audio_node_->output(), viewer_node_->samples_input()); + NodeParam::DisconnectEdge(video_node_->output(), sequence_.viewer_output()->texture_input()); + NodeParam::DisconnectEdge(audio_node_->output(), sequence_.viewer_output()->samples_input()); } footage_ = footage; if (footage_) { + // Update sequence media name + sequence_.viewer_output()->set_media_name(footage_->name()); + + // Reset parameters and then attempt to set from footage + sequence_.set_default_parameters(); + sequence_.set_parameters_from_footage({footage_}); + + // Use first of each stream VideoStreamPtr video_stream = nullptr; AudioStreamPtr audio_stream = nullptr; foreach (StreamPtr s, footage_->streams()) { + if (!s->enabled()) { + continue; + } + if (!audio_stream && s->type() == Stream::kAudio) { audio_stream = std::static_pointer_cast(s); } @@ -80,42 +94,17 @@ void FootageViewerWidget::SetFootage(Footage *footage) } } - viewer_node_->set_media_name(footage_->name()); - if (video_stream) { video_node_->SetFootage(video_stream); - viewer_node_->set_video_params(VideoParams(video_stream->width(), - video_stream->height(), - video_stream->frame_rate().flipped(), - static_cast(Config::Current()["DefaultSequencePreviewFormat"].toInt()), - video_stream->pixel_aspect_ratio(), - video_stream->interlacing(), - VideoParams::generate_auto_divider(video_stream->width(), video_stream->height()))); - NodeParam::ConnectEdge(video_node_->output(), viewer_node_->texture_input()); - } else { - int width = Config::Current()["DefaultSequenceWidth"].toInt(); - int height = Config::Current()["DefaultSequenceHeight"].toInt(); - - viewer_node_->set_video_params(VideoParams(width, - height, - Config::Current()["DefaultSequenceFrameRate"].value(), - static_cast(Config::Current()["DefaultSequencePreviewFormat"].toInt()), - Config::Current()["DefaultSequencePixelAspect"].value(), - Config::Current()["DefaultSequenceInterlacing"].value(), - VideoParams::generate_auto_divider(width, height))); + NodeParam::ConnectEdge(video_node_->output(), sequence_.viewer_output()->texture_input()); } if (audio_stream) { audio_node_->SetFootage(audio_stream); - viewer_node_->set_audio_params(AudioParams(audio_stream->sample_rate(), audio_stream->channel_layout(), SampleFormat::kInternalFormat)); - NodeParam::ConnectEdge(audio_node_->output(), viewer_node_->samples_input()); - } else { - viewer_node_->set_audio_params(AudioParams(Config::Current()["DefaultSequenceAudioFrequency"].toInt(), - Config::Current()["DefaultSequenceAudioLayout"].toULongLong(), - SampleFormat::kInternalFormat)); + NodeParam::ConnectEdge(audio_node_->output(), sequence_.viewer_output()->samples_input()); } - ConnectViewerNode(viewer_node_, footage_->project()->color_manager()); + ConnectViewerNode(sequence_.viewer_output(), footage_->project()->color_manager()); SetTimestamp(cached_timestamps_.value(footage_, 0)); } diff --git a/app/widget/viewer/footageviewer.h b/app/widget/viewer/footageviewer.h index 36f688fa9..af093eb8f 100644 --- a/app/widget/viewer/footageviewer.h +++ b/app/widget/viewer/footageviewer.h @@ -47,12 +47,12 @@ private: Footage* footage_; + Sequence sequence_; + VideoInput* video_node_; AudioInput* audio_node_; - ViewerOutput* viewer_node_; - QHash cached_timestamps_; private slots: From 7bc841904a6fe802f0bf42b6110a649458b362c8 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 19 Sep 2020 12:45:40 +1000 Subject: [PATCH 22/47] viewer: display image infinitely if video length is null Allows for displaying still images in viewer without a finite length. --- app/widget/viewer/viewer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index 4af7869b6..b3b52231a 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -566,7 +566,9 @@ QString ViewerWidget::GetCachedFilenameFromTime(const rational &time) bool ViewerWidget::FrameExistsAtTime(const rational &time) { - return GetConnectedNode() && time >= 0 && time < GetConnectedNode()->video_frame_cache()->GetLength(); + return GetConnectedNode() + && ((time >= 0 && time < GetConnectedNode()->video_frame_cache()->GetLength()) + || GetConnectedNode()->video_frame_cache()->GetLength().isNull()); } void ViewerWidget::SetDisplayImage(FramePtr frame, bool main_only) From 8e0c86a6fa7bc32bd2177d8b72f19f6a4f92d8e9 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 19 Sep 2020 12:53:07 +1000 Subject: [PATCH 23/47] renderer: if texture is null, don't allocate a frame unless exporting --- app/render/backend/renderworker.cpp | 2 +- app/widget/viewer/viewerdisplay.cpp | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/render/backend/renderworker.cpp b/app/render/backend/renderworker.cpp index 28e8a50f5..2db075c25 100644 --- a/app/render/backend/renderworker.cpp +++ b/app/render/backend/renderworker.cpp @@ -126,7 +126,7 @@ void RenderWorker::RenderFrame(RenderTicketPtr ticket, ViewerOutput* viewer, con FramePtr frame = Frame::Create(); frame->set_timestamp(time); - if (video_force_download_resolution_ || texture.isNull()) { + if (video_force_download_resolution_) { // If we're setting the resolution ourselves or we're zeroing it out, allocate the frame now frame->set_video_params(VideoParams(video_params_.width(), video_params_.height(), diff --git a/app/widget/viewer/viewerdisplay.cpp b/app/widget/viewer/viewerdisplay.cpp index 983f422e1..25f13ac58 100644 --- a/app/widget/viewer/viewerdisplay.cpp +++ b/app/widget/viewer/viewerdisplay.cpp @@ -99,7 +99,11 @@ void ViewerDisplayWidget::SetSignalCursorColorEnabled(bool e) void ViewerDisplayWidget::SetImage(FramePtr in_buffer) { - last_loaded_buffer_ = in_buffer; + if (in_buffer && in_buffer->is_allocated()) { + last_loaded_buffer_ = in_buffer; + } else { + last_loaded_buffer_ = nullptr; + } if (last_loaded_buffer_) { makeCurrent(); From 7c38ff74e2df74f601376d69225f4491ff45baab Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 00:38:50 +1000 Subject: [PATCH 24/47] ci: modified if syntax --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36f4fcfa8..2a5027401 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,17 +32,17 @@ jobs: runs-on: ${{ matrix.os }} steps: - - if: matrix.os == 'windows-latest' - name: Set package name shell: bash + if: matrix.os == 'windows-latest' run: | echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-Windows-x86_64)" - - if: matrix.os == 'macos-latest' - - name: Set package name - shell: bash - run: | - echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-macOS)" + - name: Set package name + shell: bash + if: matrix.os == 'macos-latest' + run: | + echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-macOS)" - uses: actions/checkout@v2 From cc8cbac5320b4b9fe885d22c340355e7141bb76b Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 00:44:10 +1000 Subject: [PATCH 25/47] ci: fixed indentation issue --- .github/workflows/ci.yml | 257 ++++++++++++++++++++------------------- 1 file changed, 132 insertions(+), 125 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a5027401..da648748d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,11 +32,11 @@ jobs: runs-on: ${{ matrix.os }} steps: - - name: Set package name - shell: bash - if: matrix.os == 'windows-latest' - run: | - echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-Windows-x86_64)" + - name: Set package name + shell: bash + if: matrix.os == 'windows-latest' + run: | + echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-Windows-x86_64)" - name: Set package name shell: bash @@ -50,9 +50,9 @@ jobs: run: | cmake -E make_directory ${{ runner.workspace }}/build - - if: matrix.os == 'windows-latest' - - name: Enable Developer Command Prompt - uses: ilammy/msvc-dev-cmd@v1.3.0 + - name: Enable Developer Command Prompt + uses: ilammy/msvc-dev-cmd@v1.3.0 + if: matrix.os == 'windows-latest' - name: Acquire Qt uses: jurplel/install-qt-action@v2.8.0 @@ -122,15 +122,15 @@ jobs: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/turbojpeg-$DEP_SUFFIX 7z x turbojpeg-$DEP_SUFFIX - - if: matrix.os == 'windows-latest' - - name: Acquire zlib - shell: bash - env: - DEP_SUFFIX: ${{ matrix.dep-suffix }} - EXTRACT_TOOL: ${{ matrix.extract-tool }} - run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/zlib-$DEP_SUFFIX - 7z x zlib-$DEP_SUFFIX + - name: Acquire zlib + shell: bash + env: + DEP_SUFFIX: ${{ matrix.dep-suffix }} + EXTRACT_TOOL: ${{ matrix.extract-tool }} + run: | + curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/zlib-$DEP_SUFFIX + 7z x zlib-$DEP_SUFFIX + if: matrix.os == 'windows-latest' - name: Acquire Boost shell: bash @@ -169,121 +169,128 @@ jobs: run: | ctest -C ${{ matrix.build-type }} - - if: matrix.os == 'windows-latest' - - name: Create Package - working-directory: ${{ runner.workspace }}/build - shell: cmd - run: | - mkdir olive-editor - copy app\olive-editor.exe olive-editor - copy app\olive-editor.pdb olive-editor - windeployqt olive-editor\olive-editor.exe - copy %GITHUB_WORKSPACE%\bin\*.dll olive-editor - copy %GITHUB_WORKSPACE%\out\Default\crashpad_handler.exe olive-editor + - name: Create Package + working-directory: ${{ runner.workspace }}/build + shell: cmd + run: | + mkdir olive-editor + copy app\olive-editor.exe olive-editor + copy app\olive-editor.pdb olive-editor + windeployqt olive-editor\olive-editor.exe + copy %GITHUB_WORKSPACE%\bin\*.dll olive-editor + copy %GITHUB_WORKSPACE%\out\Default\crashpad_handler.exe olive-editor + if: matrix.os == 'windows-latest' - - name: Deploy Installer - working-directory: ${{ runner.workspace }}/build - shell: cmd - run: | - copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . - copy %GITHUB_WORKSPACE%\LICENSE . - makensis -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi + - name: Create Package + working-directory: ${{ runner.workspace }}/build + env: + BUNDLE_NAME: Olive.app + run: | + mv app/$BUNDLE_NAME . + macdeployqt $BUNDLE_NAME + curl -fLOSs --retry 3 https://github.com/arl/macdeployqtfix/raw/master/macdeployqtfix.py + python2 macdeployqtfix.py $BUNDLE_NAME/Contents/MacOS/Olive /usr/local/Cellar/qt5/5.*/ + if: matrix.os == 'macos-latest' - - name: Deploy Portable - working-directory: ${{ runner.workspace }}/build - shell: cmd - run: | - type NUL > olive-editor\portable - 7z a %PKGNAME%.zip olive-editor + - name: Deploy Installer + working-directory: ${{ runner.workspace }}/build + shell: cmd + run: | + copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . + copy %GITHUB_WORKSPACE%\LICENSE . + makensis -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi + if: matrix.os == 'windows-latest' - - name: Upload Installer to Nightly Page - shell: bash - working-directory: ${{ runner.workspace }}/build - env: - GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} - run: | - curl -X POST \ - -F file=@$PKGNAME.exe \ - -F key="$GH_AUTH_KEY" \ - -F hash="$GITHUB_SHA" \ - -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ - -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ - https://olivevideoeditor.org/dl/push.php - if: github.event_name != 'pull_request' + - name: Deploy Portable + working-directory: ${{ runner.workspace }}/build + shell: cmd + run: | + type NUL > olive-editor\portable + 7z a %PKGNAME%.zip olive-editor + if: matrix.os == 'windows-latest' - - name: Upload Portable to Nightly Page - shell: bash - working-directory: ${{ runner.workspace }}/build - env: - GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} - run: | - curl -X POST \ - -F file=@$PKGNAME.zip \ - -F key="$GH_AUTH_KEY" \ - -F hash="$GITHUB_SHA" \ - -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ - -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ - https://olivevideoeditor.org/dl/push.php - if: github.event_name != 'pull_request' + - name: Deploy Package + working-directory: ${{ runner.workspace }}/build + run: | + zip -r $PKGNAME.zip $BUNDLE_NAME + if: matrix.os == 'macos-latest' - - name: Upload Installer Artifact to GitHub - uses: actions/upload-artifact@v2 - with: - name: ${{ env.PKGNAME }}.exe - path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.exe + - name: Upload Installer to Nightly Page + shell: bash + working-directory: ${{ runner.workspace }}/build + env: + GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} + run: | + curl -X POST \ + -F file=@$PKGNAME.exe \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php + if: matrix.os == 'windows-latest' && github.event_name != 'pull_request' - - name: Upload Portable Artifact to GitHub - uses: actions/upload-artifact@v2 - with: - name: ${{ env.PKGNAME }}.zip - path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip + - name: Upload Portable to Nightly Page + shell: bash + working-directory: ${{ runner.workspace }}/build + env: + GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} + run: | + curl -X POST \ + -F file=@$PKGNAME.zip \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php + if: matrix.os == 'windows-latest' && github.event_name != 'pull_request' - - name: Export Crashpad Symbols and Upload To Server - working-directory: ${{ runner.workspace }}/build - shell: cmd - env: - GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} - run: | - curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe - dump_syms app\olive-editor.pdb > olive-editor.sym - curl -X POST ^ - -F symfile=@olive-editor.sym ^ - -F key="%GH_AUTH_KEY%" ^ - https://olivevideoeditor.org/crashpad/symbols.php + - name: Upload Artifact to Nightly Page + shell: bash + working-directory: ${{ runner.workspace }}/build + env: + GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} + run: | + curl -X POST \ + -F file=@$PKGNAME.zip \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php + if: matrix.os == 'macos-latest' && github.event_name != 'pull_request' - - if: matrix.os == 'macos-latest' - - name: Create Package - working-directory: ${{ runner.workspace }}/build - env: - BUNDLE_NAME: Olive.app - run: | - mv app/$BUNDLE_NAME . - macdeployqt $BUNDLE_NAME - curl -fLOSs --retry 3 https://github.com/arl/macdeployqtfix/raw/master/macdeployqtfix.py - python2 macdeployqtfix.py $BUNDLE_NAME/Contents/MacOS/Olive /usr/local/Cellar/qt5/5.*/ - - - name: Deploy Package - working-directory: ${{ runner.workspace }}/build - run: | - zip -r $PKGNAME.zip $BUNDLE_NAME + - name: Upload Installer Artifact to GitHub + uses: actions/upload-artifact@v2 + with: + name: ${{ env.PKGNAME }}.exe + path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.exe + if: matrix.os == 'windows-latest' - - name: Upload Artifact to Nightly Page - shell: bash - working-directory: ${{ runner.workspace }}/build - env: - GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} - run: | - curl -X POST \ - -F file=@$PKGNAME.zip \ - -F key="$GH_AUTH_KEY" \ - -F hash="$GITHUB_SHA" \ - -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ - -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ - https://olivevideoeditor.org/dl/push.php - if: github.event_name != 'pull_request' + - name: Upload Portable Artifact to GitHub + uses: actions/upload-artifact@v2 + with: + name: ${{ env.PKGNAME }}.zip + path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip + if: matrix.os == 'windows-latest' - - name: Upload Artifact to GitHub - uses: actions/upload-artifact@v2 - with: - name: ${{ env.PKGNAME }}.zip - path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip + - name: Upload Artifact to GitHub + uses: actions/upload-artifact@v2 + with: + name: ${{ env.PKGNAME }}.zip + path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip + if: matrix.os == 'macos-latest' + + - name: Export Crashpad Symbols and Upload To Server + working-directory: ${{ runner.workspace }}/build + shell: cmd + env: + GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} + run: | + curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe + dump_syms app\olive-editor.pdb > olive-editor.sym + curl -X POST ^ + -F symfile=@olive-editor.sym ^ + -F key="%GH_AUTH_KEY%" ^ + https://olivevideoeditor.org/crashpad/symbols.php + if: matrix.os == 'windows-latest' From 0234529b5bc84026e67c2c3c91e5b3ee0e080e15 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 00:45:19 +1000 Subject: [PATCH 26/47] ci: fixed other indentation issue --- .github/workflows/ci.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da648748d..41fc54d9f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,7 +66,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ffmpeg-$DEP_SUFFIX - 7z x ffmpeg-$DEP_SUFFIX + $EXTRACT_TOOL ffmpeg-$DEP_SUFFIX - name: Acquire OpenColorIO shell: bash @@ -75,7 +75,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ocio-$DEP_SUFFIX - 7z x ocio-$DEP_SUFFIX + $EXTRACT_TOOL ocio-$DEP_SUFFIX - name: Acquire OpenEXR shell: bash @@ -84,7 +84,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/openexr-$DEP_SUFFIX - 7z x openexr-$DEP_SUFFIX + $EXTRACT_TOOL openexr-$DEP_SUFFIX - name: Acquire OpenImageIO shell: bash @@ -93,7 +93,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/oiio-$DEP_SUFFIX - 7z x oiio-$DEP_SUFFIX + $EXTRACT_TOOL oiio-$DEP_SUFFIX - name: Acquire libpng shell: bash @@ -102,7 +102,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libpng-$DEP_SUFFIX - 7z x libpng-$DEP_SUFFIX + $EXTRACT_TOOL libpng-$DEP_SUFFIX - name: Acquire libtiff shell: bash @@ -111,7 +111,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libtiff-$DEP_SUFFIX - 7z x libtiff-$DEP_SUFFIX + $EXTRACT_TOOL libtiff-$DEP_SUFFIX - name: Acquire turbojpeg shell: bash @@ -120,16 +120,16 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/turbojpeg-$DEP_SUFFIX - 7z x turbojpeg-$DEP_SUFFIX + $EXTRACT_TOOL turbojpeg-$DEP_SUFFIX - name: Acquire zlib shell: bash env: DEP_SUFFIX: ${{ matrix.dep-suffix }} - EXTRACT_TOOL: ${{ matrix.extract-tool }} + EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/zlib-$DEP_SUFFIX - 7z x zlib-$DEP_SUFFIX + $EXTRACT_TOOL zlib-$DEP_SUFFIX if: matrix.os == 'windows-latest' - name: Acquire Boost @@ -139,7 +139,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/boost-$DEP_SUFFIX - 7z x boost-$DEP_SUFFIX + $EXTRACT_TOOL boost-$DEP_SUFFIX - name: Acquire Crashpad shell: bash @@ -148,7 +148,7 @@ jobs: EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/crashpad-$DEP_SUFFIX - 7z x crashpad-$DEP_SUFFIX + $EXTRACT_TOOL crashpad-$DEP_SUFFIX - name: Configure CMake shell: bash From d1f7d52943f431bd911ced81fa214397e566a644 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 00:53:04 +1000 Subject: [PATCH 27/47] ci: don't use ninja --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41fc54d9f..a5d7d97d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,7 +155,7 @@ jobs: working-directory: ${{ runner.workspace }}/build run: | PATH=$GITHUB_WORKSPACE:$PATH \ - cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G "Ninja" + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} - name: Build working-directory: ${{ runner.workspace }}/build @@ -294,3 +294,6 @@ jobs: -F key="%GH_AUTH_KEY%" ^ https://olivevideoeditor.org/crashpad/symbols.php if: matrix.os == 'windows-latest' + + macos: + From 8d13f0f5c0ca0434ce9b0fa29e8211f1d455d6d8 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 00:53:49 +1000 Subject: [PATCH 28/47] ci: fixed typo --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a5d7d97d2..c78ad0bc8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -294,6 +294,3 @@ jobs: -F key="%GH_AUTH_KEY%" ^ https://olivevideoeditor.org/crashpad/symbols.php if: matrix.os == 'windows-latest' - - macos: - From ef867f4e3b5e0411c9ac4f945e292215051fc834 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 00:57:40 +1000 Subject: [PATCH 29/47] ci: set openexr_root --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c78ad0bc8..038a77921 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,6 +155,7 @@ jobs: working-directory: ${{ runner.workspace }}/build run: | PATH=$GITHUB_WORKSPACE:$PATH \ + OPENEXR_ROOT=$GITHUB_WORKSPACE \ cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} - name: Build From 1b4cd3a2dd5364a1c7f3b5d0a44741563fcacadc Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 01:16:54 +1000 Subject: [PATCH 30/47] ci: set ffmpeg root --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 038a77921..62ac8c11b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -156,6 +156,7 @@ jobs: run: | PATH=$GITHUB_WORKSPACE:$PATH \ OPENEXR_ROOT=$GITHUB_WORKSPACE \ + FFMPEG_ROOT=$GITHUB_WORKSPACE \ cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} - name: Build From c04eaef24a4b826aebc65cb982b2e4c107216d03 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 01:31:37 +1000 Subject: [PATCH 31/47] ci: use ninja but only on windows --- .github/workflows/ci.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62ac8c11b..ca4a5994c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -150,6 +150,16 @@ jobs: curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/crashpad-$DEP_SUFFIX $EXTRACT_TOOL crashpad-$DEP_SUFFIX + - name: Configure CMake + shell: bash + working-directory: ${{ runner.workspace }}/build + run: | + PATH=$GITHUB_WORKSPACE:$PATH \ + OPENEXR_ROOT=$GITHUB_WORKSPACE \ + FFMPEG_ROOT=$GITHUB_WORKSPACE \ + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G Ninja + if: matrix.os == 'windows-latest' + - name: Configure CMake shell: bash working-directory: ${{ runner.workspace }}/build @@ -158,6 +168,7 @@ jobs: OPENEXR_ROOT=$GITHUB_WORKSPACE \ FFMPEG_ROOT=$GITHUB_WORKSPACE \ cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} + if: matrix.os == 'macos-latest' - name: Build working-directory: ${{ runner.workspace }}/build From 0798dbb0a268320dc245e26ba027cd62e1a723e6 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 01:46:20 +1000 Subject: [PATCH 32/47] ci: restored vcredist line that was accidentally removed in the merge --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ca4a5994c..86b5e1cdd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -209,6 +209,7 @@ jobs: working-directory: ${{ runner.workspace }}/build shell: cmd run: | + curl -fLOSs https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . copy %GITHUB_WORKSPACE%\LICENSE . makensis -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi From 9b1242e3606088453bcf57bd53ec1bc132cc05c7 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 03:29:40 +1000 Subject: [PATCH 33/47] ci: extract to root on mac --- .github/workflows/ci.yml | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86b5e1cdd..d25fba645 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,13 +18,15 @@ jobs: os: windows-latest dep-suffix: win.7z extract-tool: 7z x + cmake-gen: Ninja - build: 2 build-type: RelWithDebInfo compiler-name: Clang LLVM os-name: macOS os: macos-latest dep-suffix: mac.zip - extract-tool: unzip + extract-tool: sudo unzip -d / + cmake-gen: "Unix Makefiles" name: | ${{ matrix.os-name }} <${{ matrix.compiler-name }}, @@ -153,22 +155,11 @@ jobs: - name: Configure CMake shell: bash working-directory: ${{ runner.workspace }}/build + env: + CMAKE_GEN: ${{ matrix.cmake-gen }} run: | PATH=$GITHUB_WORKSPACE:$PATH \ - OPENEXR_ROOT=$GITHUB_WORKSPACE \ - FFMPEG_ROOT=$GITHUB_WORKSPACE \ - cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G Ninja - if: matrix.os == 'windows-latest' - - - name: Configure CMake - shell: bash - working-directory: ${{ runner.workspace }}/build - run: | - PATH=$GITHUB_WORKSPACE:$PATH \ - OPENEXR_ROOT=$GITHUB_WORKSPACE \ - FFMPEG_ROOT=$GITHUB_WORKSPACE \ - cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} - if: matrix.os == 'macos-latest' + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G $CMAKE_GEN - name: Build working-directory: ${{ runner.workspace }}/build From 2094c4f9da3a55dbf271e57f794d2b6b848a1cdd Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 03:47:11 +1000 Subject: [PATCH 34/47] ci: extract to /usr/local on mac --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d25fba645..770d3c311 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: os-name: macOS os: macos-latest dep-suffix: mac.zip - extract-tool: sudo unzip -d / + extract-tool: sudo unzip -d /usr/local -o cmake-gen: "Unix Makefiles" name: | ${{ matrix.os-name }} From a3027299996f1bd4e2f1067225ce1f749257dc3a Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 03:49:14 +1000 Subject: [PATCH 35/47] ci: attempt escape cmake generator --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 770d3c311..5725b5c4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: os: macos-latest dep-suffix: mac.zip extract-tool: sudo unzip -d /usr/local -o - cmake-gen: "Unix Makefiles" + cmake-gen: \"Unix Makefiles\" name: | ${{ matrix.os-name }} <${{ matrix.compiler-name }}, From fc0d4528e94f0fb21ed7e8cd510cadcb767eae15 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 03:51:27 +1000 Subject: [PATCH 36/47] ci: use quotes elsewhere --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5725b5c4a..c6ab79116 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: os: macos-latest dep-suffix: mac.zip extract-tool: sudo unzip -d /usr/local -o - cmake-gen: \"Unix Makefiles\" + cmake-gen: Unix Makefiles name: | ${{ matrix.os-name }} <${{ matrix.compiler-name }}, @@ -159,7 +159,7 @@ jobs: CMAKE_GEN: ${{ matrix.cmake-gen }} run: | PATH=$GITHUB_WORKSPACE:$PATH \ - cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G $CMAKE_GEN + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G "$CMAKE_GEN" - name: Build working-directory: ${{ runner.workspace }}/build From dbd54d06d5e24f737519f5a8d38b123be2b6329b Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Sep 2020 13:20:39 +1000 Subject: [PATCH 37/47] ci: set DYLD_LIBRARY_PATH --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c6ab79116..d53ea339c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -190,6 +190,7 @@ jobs: env: BUNDLE_NAME: Olive.app run: | + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib mv app/$BUNDLE_NAME . macdeployqt $BUNDLE_NAME curl -fLOSs --retry 3 https://github.com/arl/macdeployqtfix/raw/master/macdeployqtfix.py From 9e49224406e9ffbea04a685f1f7370342cf0de5d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 00:51:31 +1000 Subject: [PATCH 38/47] crashpad: correct handler path on non-Windows systems --- app/common/crashpadinterface.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/common/crashpadinterface.cpp b/app/common/crashpadinterface.cpp index 6c55ab45e..770e8a84a 100644 --- a/app/common/crashpadinterface.cpp +++ b/app/common/crashpadinterface.cpp @@ -81,7 +81,11 @@ bool InitializeCrashpad() // FIXME: On Linux, probably should put this in a subdir so that it doesn't conflict with // anything else in /usr/bin +#ifdef Q_OS_WINDOWS base::FilePath handler(TO_BASE_STRING_TYPE(QDir(exe_dir).filePath(QStringLiteral("crashpad_handler.exe")))); +#else + base::FilePath handler(TO_BASE_STRING_TYPE(QDir(exe_dir).filePath(QStringLiteral("crashpad_handler")))); +#endif base::FilePath reports_dir(TO_BASE_STRING_TYPE(QDir(OLIVE_NAMESPACE::FileFunctions::GetTempFilePath()).filePath("reports"))); From 3ea173c9c0a755d4906b69b9d65c8cbfc631fc47 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 03:48:13 +1000 Subject: [PATCH 39/47] ci: restructured deps --- .github/workflows/ci.yml | 242 +++++++++++++++------------------------ 1 file changed, 93 insertions(+), 149 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d53ea339c..cc829695d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,44 +15,46 @@ jobs: build-type: RelWithDebInfo compiler-name: MSVC 16.x os-name: Windows + os-arch: x86_64 os: windows-latest + cmake-gen: Ninja dep-suffix: win.7z extract-tool: 7z x - cmake-gen: Ninja - build: 2 build-type: RelWithDebInfo compiler-name: Clang LLVM os-name: macOS + os-arch: x86_64 os: macos-latest + cmake-gen: Unix Makefiles dep-suffix: mac.zip extract-tool: sudo unzip -d /usr/local -o - cmake-gen: Unix Makefiles name: | ${{ matrix.os-name }} <${{ matrix.compiler-name }}, ${{ matrix.build-type }}> runs-on: ${{ matrix.os }} + env: + DOWNLOAD_TOOL: curl -fLOSs --retry 3 + steps: - - name: Set package name + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Automatically Generate Package Name shell: bash - if: matrix.os == 'windows-latest' + env: + PLATFORM: ${{ matrix.os-name }} + ARCH: ${{ matrix.os-arch }} run: | - echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-Windows-x86_64)" + echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-$PLATFORM-$ARCH)" - - name: Set package name - shell: bash - if: matrix.os == 'macos-latest' - run: | - echo "::set-env name=PKGNAME::$(echo Olive-${GITHUB_SHA::8}-macOS)" - - - uses: actions/checkout@v2 - - - name: Create Build Environment + - name: Create Build Folder run: | cmake -E make_directory ${{ runner.workspace }}/build - - name: Enable Developer Command Prompt + - name: Enable Developer Command Prompt (Windows) uses: ilammy/msvc-dev-cmd@v1.3.0 if: matrix.os == 'windows-latest' @@ -67,7 +69,7 @@ jobs: DEP_SUFFIX: ${{ matrix.dep-suffix }} EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ffmpeg-$DEP_SUFFIX + $DOWNLOAD_TOOL http://olivevideoeditor.org/deps/ffmpeg-$DEP_SUFFIX $EXTRACT_TOOL ffmpeg-$DEP_SUFFIX - name: Acquire OpenColorIO @@ -76,7 +78,7 @@ jobs: DEP_SUFFIX: ${{ matrix.dep-suffix }} EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/ocio-$DEP_SUFFIX + $DOWNLOAD_TOOL http://olivevideoeditor.org/deps/ocio-$DEP_SUFFIX $EXTRACT_TOOL ocio-$DEP_SUFFIX - name: Acquire OpenEXR @@ -85,7 +87,7 @@ jobs: DEP_SUFFIX: ${{ matrix.dep-suffix }} EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/openexr-$DEP_SUFFIX + $DOWNLOAD_TOOL http://olivevideoeditor.org/deps/openexr-$DEP_SUFFIX $EXTRACT_TOOL openexr-$DEP_SUFFIX - name: Acquire OpenImageIO @@ -94,62 +96,16 @@ jobs: DEP_SUFFIX: ${{ matrix.dep-suffix }} EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/oiio-$DEP_SUFFIX + $DOWNLOAD_TOOL http://olivevideoeditor.org/deps/oiio-$DEP_SUFFIX $EXTRACT_TOOL oiio-$DEP_SUFFIX - - name: Acquire libpng - shell: bash - env: - DEP_SUFFIX: ${{ matrix.dep-suffix }} - EXTRACT_TOOL: ${{ matrix.extract-tool }} - run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libpng-$DEP_SUFFIX - $EXTRACT_TOOL libpng-$DEP_SUFFIX - - - name: Acquire libtiff - shell: bash - env: - DEP_SUFFIX: ${{ matrix.dep-suffix }} - EXTRACT_TOOL: ${{ matrix.extract-tool }} - run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/libtiff-$DEP_SUFFIX - $EXTRACT_TOOL libtiff-$DEP_SUFFIX - - - name: Acquire turbojpeg - shell: bash - env: - DEP_SUFFIX: ${{ matrix.dep-suffix }} - EXTRACT_TOOL: ${{ matrix.extract-tool }} - run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/turbojpeg-$DEP_SUFFIX - $EXTRACT_TOOL turbojpeg-$DEP_SUFFIX - - - name: Acquire zlib - shell: bash - env: - DEP_SUFFIX: ${{ matrix.dep-suffix }} - EXTRACT_TOOL: ${{ matrix.extract-tool }} - run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/zlib-$DEP_SUFFIX - $EXTRACT_TOOL zlib-$DEP_SUFFIX - if: matrix.os == 'windows-latest' - - - name: Acquire Boost - shell: bash - env: - DEP_SUFFIX: ${{ matrix.dep-suffix }} - EXTRACT_TOOL: ${{ matrix.extract-tool }} - run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/boost-$DEP_SUFFIX - $EXTRACT_TOOL boost-$DEP_SUFFIX - - name: Acquire Crashpad shell: bash env: DEP_SUFFIX: ${{ matrix.dep-suffix }} EXTRACT_TOOL: ${{ matrix.extract-tool }} run: | - curl -fLOSs --retry 3 http://olivevideoeditor.org/deps/crashpad-$DEP_SUFFIX + $DOWNLOAD_TOOL http://olivevideoeditor.org/deps/crashpad-$DEP_SUFFIX $EXTRACT_TOOL crashpad-$DEP_SUFFIX - name: Configure CMake @@ -175,112 +131,100 @@ jobs: - name: Create Package working-directory: ${{ runner.workspace }}/build - shell: cmd - run: | - mkdir olive-editor - copy app\olive-editor.exe olive-editor - copy app\olive-editor.pdb olive-editor - windeployqt olive-editor\olive-editor.exe - copy %GITHUB_WORKSPACE%\bin\*.dll olive-editor - copy %GITHUB_WORKSPACE%\out\Default\crashpad_handler.exe olive-editor - if: matrix.os == 'windows-latest' - - - name: Create Package - working-directory: ${{ runner.workspace }}/build + shell: bash env: - BUNDLE_NAME: Olive.app + PLATFORM: ${{ matrix.os-name }} run: | - export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib - mv app/$BUNDLE_NAME . - macdeployqt $BUNDLE_NAME - curl -fLOSs --retry 3 https://github.com/arl/macdeployqtfix/raw/master/macdeployqtfix.py - python2 macdeployqtfix.py $BUNDLE_NAME/Contents/MacOS/Olive /usr/local/Cellar/qt5/5.*/ - if: matrix.os == 'macos-latest' + if [ "$PLATFORM" == "Windows" ] + then + mkdir olive-editor + cp app/olive-editor.exe olive-editor + cp app/olive-editor.pdb olive-editor + windeployqt olive-editor/olive-editor.exe + copy $GITHUB_WORKSPACE/bin/*.dll olive-editor + copy $GITHUB_WORKSPACE/out/Default/crashpad_handler.exe olive-editor + elif [ "$PLATFORM" == "macOS" ] + then + export BUNDLE_NAME=Olive.app + mv app/$BUNDLE_NAME . + macdeployqt $BUNDLE_NAME + $DOWNLOAD_TOOL https://github.com/arl/macdeployqtfix/raw/master/macdeployqtfix.py + python2 macdeployqtfix.py $BUNDLE_NAME/Contents/MacOS/Olive /usr/local/Cellar/qt5/5.*/ + fi - - name: Deploy Installer + - name: Deploy Packages working-directory: ${{ runner.workspace }}/build - shell: cmd + shell: bash + env: + PLATFORM: ${{ matrix.os-name }} run: | - curl -fLOSs https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe - copy %GITHUB_WORKSPACE%\app\packaging\windows\nsis\* . - copy %GITHUB_WORKSPACE%\LICENSE . - makensis -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi - if: matrix.os == 'windows-latest' + if [ "$PLATFORM" == "Windows" ] + then + # Create Installer Executable + curl -fLOSs https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe + copy $GITHUB_WORKSPACE\app\packaging\windows\nsis\* . + copy $GITHUB_WORKSPACE\LICENSE . + makensis -V4 -DX64 "-XOutFile $PKGNAME.exe" olive.nsi - - name: Deploy Portable - working-directory: ${{ runner.workspace }}/build - shell: cmd - run: | - type NUL > olive-editor\portable - 7z a %PKGNAME%.zip olive-editor - if: matrix.os == 'windows-latest' + # Create Portable ZIP + type NUL > olive-editor\portable + 7z a $PKGNAME.zip olive-editor + elif [ "$PLATFORM" == "macOS" ] + then + zip -r $PKGNAME.zip Olive.app + fi - - name: Deploy Package - working-directory: ${{ runner.workspace }}/build - run: | - zip -r $PKGNAME.zip $BUNDLE_NAME - if: matrix.os == 'macos-latest' - - - name: Upload Installer to Nightly Page + - name: Upload Packages to Nightly Page shell: bash working-directory: ${{ runner.workspace }}/build env: GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} + PLATFORM: ${{ matrix.os-name }} run: | - curl -X POST \ - -F file=@$PKGNAME.exe \ - -F key="$GH_AUTH_KEY" \ - -F hash="$GITHUB_SHA" \ - -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ - -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ - https://olivevideoeditor.org/dl/push.php - if: matrix.os == 'windows-latest' && github.event_name != 'pull_request' + if [ "$PLATFORM" == "Windows" ] + then + curl -X POST \ + -F file=@$PKGNAME.exe \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php - - name: Upload Portable to Nightly Page - shell: bash - working-directory: ${{ runner.workspace }}/build - env: - GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} - run: | - curl -X POST \ - -F file=@$PKGNAME.zip \ - -F key="$GH_AUTH_KEY" \ - -F hash="$GITHUB_SHA" \ - -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ - -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ - https://olivevideoeditor.org/dl/push.php - if: matrix.os == 'windows-latest' && github.event_name != 'pull_request' + curl -X POST \ + -F file=@$PKGNAME.zip \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php + elif [ "$PLATFORM" == "macOS" ] + then + curl -X POST \ + -F file=@$PKGNAME.zip \ + -F key="$GH_AUTH_KEY" \ + -F hash="$GITHUB_SHA" \ + -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ + -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ + https://olivevideoeditor.org/dl/push.php + fi + if: github.event_name != 'pull_request' - - name: Upload Artifact to Nightly Page - shell: bash - working-directory: ${{ runner.workspace }}/build - env: - GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} - run: | - curl -X POST \ - -F file=@$PKGNAME.zip \ - -F key="$GH_AUTH_KEY" \ - -F hash="$GITHUB_SHA" \ - -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ - -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ - https://olivevideoeditor.org/dl/push.php - if: matrix.os == 'macos-latest' && github.event_name != 'pull_request' - - - name: Upload Installer Artifact to GitHub + - name: Upload Installer Artifact to GitHub (Windows) uses: actions/upload-artifact@v2 with: name: ${{ env.PKGNAME }}.exe path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.exe if: matrix.os == 'windows-latest' - - name: Upload Portable Artifact to GitHub + - name: Upload Portable Artifact to GitHub (Windows) uses: actions/upload-artifact@v2 with: name: ${{ env.PKGNAME }}.zip path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip if: matrix.os == 'windows-latest' - - name: Upload Artifact to GitHub + - name: Upload Artifact to GitHub (macOS) uses: actions/upload-artifact@v2 with: name: ${{ env.PKGNAME }}.zip @@ -289,14 +233,14 @@ jobs: - name: Export Crashpad Symbols and Upload To Server working-directory: ${{ runner.workspace }}/build - shell: cmd + shell: bash env: GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} run: | curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe - dump_syms app\olive-editor.pdb > olive-editor.sym + dump_syms app/olive-editor.pdb > olive-editor.sym curl -X POST ^ -F symfile=@olive-editor.sym ^ - -F key="%GH_AUTH_KEY%" ^ + -F key="$GH_AUTH_KEY" ^ https://olivevideoeditor.org/crashpad/symbols.php if: matrix.os == 'windows-latest' From ff188d44b19fe2c5847ce1b176e12111745b4319 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 04:15:41 +1000 Subject: [PATCH 40/47] ci: use bash syntax on crashpad step --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cc829695d..3318b60a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -238,7 +238,7 @@ jobs: GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} run: | curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe - dump_syms app/olive-editor.pdb > olive-editor.sym + ./dump_syms app/olive-editor.pdb > olive-editor.sym curl -X POST ^ -F symfile=@olive-editor.sym ^ -F key="$GH_AUTH_KEY" ^ From f9af69ca81965cf1ff08b1714a2c794fd04de4e4 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 04:15:52 +1000 Subject: [PATCH 41/47] mathbase: use sample indices and copy rather than zeroing out --- app/node/math/math/mathbase.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/node/math/math/mathbase.cpp b/app/node/math/math/mathbase.cpp index 4a793af93..731a750da 100644 --- a/app/node/math/math/mathbase.cpp +++ b/app/node/math/math/mathbase.cpp @@ -248,8 +248,8 @@ NodeValueTable MathNodeBase::ValueInternal(NodeValueDatabase &value, Operation o SampleBufferPtr mixed_samples = SampleBuffer::CreateAllocated(samples_a->audio_params(), max_samples); - // Mix samples that are in both buffers for (int i=0;iaudio_params().channel_count();i++) { + // Mix samples that are in both buffers for (int j=0;jdata()[i][j] = PerformAll(operation, samples_a->data()[i][j], samples_b->data()[i][j]); } @@ -259,9 +259,11 @@ NodeValueTable MathNodeBase::ValueInternal(NodeValueDatabase &value, Operation o // Fill in remainder space with 0s int remainder = max_samples - min_samples; + SampleBufferPtr larger_buffer = (max_samples == samples_a->sample_count()) ? samples_a : samples_b; + for (int i=0;iaudio_params().channel_count();i++) { - memset(mixed_samples->data()[i] + min_samples * sizeof(float), - 0, + memcpy(&mixed_samples->data()[i][min_samples], + &larger_buffer->data()[i][min_samples], remainder * sizeof(float)); } } From 82ceef20139fa9bcb869fcdde7affa173a48acbf Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 04:44:55 +1000 Subject: [PATCH 42/47] audio: don't write samples if channel count is zero --- app/audio/audiovisualwaveform.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/app/audio/audiovisualwaveform.cpp b/app/audio/audiovisualwaveform.cpp index 08c6c27b0..9cba6f755 100644 --- a/app/audio/audiovisualwaveform.cpp +++ b/app/audio/audiovisualwaveform.cpp @@ -37,6 +37,7 @@ void AudioVisualWaveform::OverwriteSamples(SampleBufferPtr samples, int sample_r { if (!channels_) { qWarning() << "Failed to write samples - channel count is zero"; + return; } int start_index = time_to_samples(start); From 7bc1aee71b62bc7b8b0aea3f07b93826387e5ce7 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 04:44:59 +1000 Subject: [PATCH 43/47] ci: updated more syntax for bash --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3318b60a8..0186f9a3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -239,8 +239,8 @@ jobs: run: | curl -fLSs --retry 3 https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe ./dump_syms app/olive-editor.pdb > olive-editor.sym - curl -X POST ^ - -F symfile=@olive-editor.sym ^ - -F key="$GH_AUTH_KEY" ^ + curl -X POST \ + -F symfile=@olive-editor.sym \ + -F key="$GH_AUTH_KEY" \ https://olivevideoeditor.org/crashpad/symbols.php if: matrix.os == 'windows-latest' From 16da806a032d85d286333e25f61e8fa61512cc62 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 05:00:06 +1000 Subject: [PATCH 44/47] ci: try os instead of os-name --- .github/workflows/ci.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0186f9a3c..cc9093f2e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,17 +133,17 @@ jobs: working-directory: ${{ runner.workspace }}/build shell: bash env: - PLATFORM: ${{ matrix.os-name }} + MATRIX_OS: ${{ matrix.os }} run: | - if [ "$PLATFORM" == "Windows" ] + if [ "$MATRIX_OS" == "windows-latest" ] then mkdir olive-editor cp app/olive-editor.exe olive-editor cp app/olive-editor.pdb olive-editor windeployqt olive-editor/olive-editor.exe - copy $GITHUB_WORKSPACE/bin/*.dll olive-editor - copy $GITHUB_WORKSPACE/out/Default/crashpad_handler.exe olive-editor - elif [ "$PLATFORM" == "macOS" ] + cp $GITHUB_WORKSPACE/bin/*.dll olive-editor + cp $GITHUB_WORKSPACE/out/Default/crashpad_handler.exe olive-editor + elif [ "$MATRIX_OS" == "macos-latest " ] then export BUNDLE_NAME=Olive.app mv app/$BUNDLE_NAME . @@ -162,12 +162,12 @@ jobs: then # Create Installer Executable curl -fLOSs https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe - copy $GITHUB_WORKSPACE\app\packaging\windows\nsis\* . - copy $GITHUB_WORKSPACE\LICENSE . + cp $GITHUB_WORKSPACE/app/packaging/windows/nsis/* . + cp $GITHUB_WORKSPACE/LICENSE . makensis -V4 -DX64 "-XOutFile $PKGNAME.exe" olive.nsi # Create Portable ZIP - type NUL > olive-editor\portable + echo -n > olive-editor/portable 7z a $PKGNAME.zip olive-editor elif [ "$PLATFORM" == "macOS" ] then From f25c3680cbbac1e8759198adc3ba717a52f968bd Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 05:13:12 +1000 Subject: [PATCH 45/47] ci: use relative path for cp command --- .github/workflows/ci.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cc9093f2e..fee0103e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -141,8 +141,8 @@ jobs: cp app/olive-editor.exe olive-editor cp app/olive-editor.pdb olive-editor windeployqt olive-editor/olive-editor.exe - cp $GITHUB_WORKSPACE/bin/*.dll olive-editor - cp $GITHUB_WORKSPACE/out/Default/crashpad_handler.exe olive-editor + cp ../bin/*.dll olive-editor + cp ../out/Default/crashpad_handler.exe olive-editor elif [ "$MATRIX_OS" == "macos-latest " ] then export BUNDLE_NAME=Olive.app @@ -156,20 +156,20 @@ jobs: working-directory: ${{ runner.workspace }}/build shell: bash env: - PLATFORM: ${{ matrix.os-name }} + MATRIX_OS: ${{ matrix.os }} run: | - if [ "$PLATFORM" == "Windows" ] + if [ "$MATRIX_OS" == "windows-latest" ] then # Create Installer Executable curl -fLOSs https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe - cp $GITHUB_WORKSPACE/app/packaging/windows/nsis/* . - cp $GITHUB_WORKSPACE/LICENSE . + cp ../app/packaging/windows/nsis/* . + cp ../LICENSE . makensis -V4 -DX64 "-XOutFile $PKGNAME.exe" olive.nsi # Create Portable ZIP echo -n > olive-editor/portable 7z a $PKGNAME.zip olive-editor - elif [ "$PLATFORM" == "macOS" ] + elif [ "$MATRIX_OS" == "macos-latest" ] then zip -r $PKGNAME.zip Olive.app fi @@ -179,9 +179,9 @@ jobs: working-directory: ${{ runner.workspace }}/build env: GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }} - PLATFORM: ${{ matrix.os-name }} + MATRIX_OS: ${{ matrix.os }} run: | - if [ "$PLATFORM" == "Windows" ] + if [ "$MATRIX_OS" == "windows-latest" ] then curl -X POST \ -F file=@$PKGNAME.exe \ @@ -198,7 +198,7 @@ jobs: -F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \ -F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \ https://olivevideoeditor.org/dl/push.php - elif [ "$PLATFORM" == "macOS" ] + elif [ "$MATRIX_OS" == "macos-latest" ] then curl -X POST \ -F file=@$PKGNAME.zip \ From 038f54ae18487e2421e4b85048db053596281ce2 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 05:28:41 +1000 Subject: [PATCH 46/47] ci: use cygpath to retrieve path from env --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fee0103e2..bf790662a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -141,8 +141,8 @@ jobs: cp app/olive-editor.exe olive-editor cp app/olive-editor.pdb olive-editor windeployqt olive-editor/olive-editor.exe - cp ../bin/*.dll olive-editor - cp ../out/Default/crashpad_handler.exe olive-editor + cp $(cygpath $GITHUB_WORKSPACE)/bin/*.dll olive-editor + cp $(cygpath $GITHUB_WORKSPACE)/out/Default/crashpad_handler.exe olive-editor elif [ "$MATRIX_OS" == "macos-latest " ] then export BUNDLE_NAME=Olive.app @@ -162,8 +162,8 @@ jobs: then # Create Installer Executable curl -fLOSs https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe - cp ../app/packaging/windows/nsis/* . - cp ../LICENSE . + cp $(cygpath $GITHUB_WORKSPACE)/app/packaging/windows/nsis/* . + cp $(cygpath $GITHUB_WORKSPACE)/LICENSE . makensis -V4 -DX64 "-XOutFile $PKGNAME.exe" olive.nsi # Create Portable ZIP From 15ecf755fcd1f8b6bdc2bab252ebf135e7237016 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 10:55:55 +1000 Subject: [PATCH 47/47] ci: remove extraneous space --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf790662a..07ebcbdd7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -143,7 +143,7 @@ jobs: windeployqt olive-editor/olive-editor.exe cp $(cygpath $GITHUB_WORKSPACE)/bin/*.dll olive-editor cp $(cygpath $GITHUB_WORKSPACE)/out/Default/crashpad_handler.exe olive-editor - elif [ "$MATRIX_OS" == "macos-latest " ] + elif [ "$MATRIX_OS" == "macos-latest" ] then export BUNDLE_NAME=Olive.app mv app/$BUNDLE_NAME .