From 9d029c4ae45f59a590f427578c6d023389c93eb0 Mon Sep 17 00:00:00 2001 From: Simran Date: Tue, 27 Oct 2020 18:21:54 +0100 Subject: [PATCH 01/15] Docker: Add more & update libraries for FFmpeg (#1279) * Fix error: x265 not found using pkg-config Need to checkout tag or fetch tags, see https://bitbucket.org/multicoreware/x265_git/issues/572/pc-file-is-not-generated * Add libs ogg, vorbis, theora, webp, xvid, openjpeg, png to ffmpeg * ffmpeg x265 uses libnuma (but optional) ci-common image not updated yet, pkg-config error resolved by checking out a tag. Installing libnuma was a suggested fix here: https://stackoverflow.com/questions/51918409/compiling-ffmpeg-x265-not-found-using-pkg-config * Add Docker Images readme --- docker/README.md | 62 +++++++ docker/ci-ffmpeg/Dockerfile | 33 +++- docker/scripts/build_ffmpeg.sh | 180 +++++++++++++++---- docker/scripts/common/install_yumpackages.sh | 1 + 4 files changed, 242 insertions(+), 34 deletions(-) create mode 100644 docker/README.md diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..750c17e64 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,62 @@ +# Docker Images + +Olive uses Docker containers for continuous integration on Linux. +No Docker images are involved for the Windows and macOS CI. + +## Overview + +`ci-common` is the shared build image with GCC, Clang and packages that are +needed by most dependent images. It is used to compile Olive's dependencies +in a controlled environment. The final CI image `ci-olive` is assembled from +images maintained by the Olive team as well as from +[aswf-docker](https://github.com/AcademySoftwareFoundation/aswf-docker/). + +Dependency hierarchy: + +1. `ci-common` +2. `ci-otio`, `ci-crashpad`, `ci-ffmpeg` +3. `ci-olive` + +## Usage + +Pull images from [Docker Hub](https://hub.docker.com/u/olivevideoeditor): + +``` +docker pull olivevideoeditor/ci-common:2 +docker pull olivevideoeditor/ci-package-otio +docker pull olivevideoeditor/ci-package-crashpad +docker pull olivevideoeditor/ci-package-ffmpeg:4.2.4 +docker pull olivevideoeditor/ci-olive:2021.2 +``` + +Use `ci-olive` image as local build container, by mounting working copy at +`~/olive` into guest system at `/opt/olive/olive`: + +```bash +docker run --rm -it -v ~/olive:/opt/olive/olive olivevideoeditor/ci-olive:2021.2 +mkdir build +cd build +cmake .. -G Ninja +cmake --build . +``` + +Rebuild all images locally: + +``` +cd docker +docker build -t olivevideoeditor/ci-common:2 -f ci-common/Dockerfile . +docker build -t olivevideoeditor/ci-package-otio -f ci-otio/Dockerfile . +docker build -t olivevideoeditor/ci-package-crashpad -f ci-crashpad/Dockerfile . +docker build -t olivevideoeditor/ci-package-ffmpeg:4.2.4 -f ci-ffmpeg/Dockerfile . +docker build -t olivevideoeditor/ci-olive:2021.2 -f ci-olive/Dockerfile . +``` + +Publish images: + +``` +docker push olivevideoeditor/ci-common:2 +docker push olivevideoeditor/ci-package-otio +docker push olivevideoeditor/ci-package-crashpad +docker push olivevideoeditor/ci-package-ffmpeg:4.2.4 +docker push olivevideoeditor/ci-olive:2021.2 +``` diff --git a/docker/ci-ffmpeg/Dockerfile b/docker/ci-ffmpeg/Dockerfile index 8a664ca02..0c3d05273 100644 --- a/docker/ci-ffmpeg/Dockerfile +++ b/docker/ci-ffmpeg/Dockerfile @@ -9,8 +9,17 @@ ARG CI_COMMON_VERSION=2 ARG FFMPEG_VERSION=4.2.4 ARG NASM_VERSION=2.15.03 ARG YASM_VERSION=1.3.0 -ARG LAME_VERSION=3.100 +ARG X265_VERSION=3.4 +ARG OGG_VERSION=1.3.4 ARG OPUS_VERSION=1.3.1 +ARG VORBIS_VERSION=1.3.7 +ARG THEORA_VERSION=1.1.1 +ARG VPX_VERSION=1.9.0 +ARG WEBP_VERSION=1.1.0 +ARG LAME_VERSION=3.100 +ARG XVID_VERSION=1.3.5 +ARG OPENJPEG_VERSION=2.3.1 +ARG LIBPNG_VERSION=1.6.31 # TODO: Make version of x264, x265 and libvpx selectable? ARG NUM_JOBS=2 @@ -21,8 +30,17 @@ ARG CI_COMMON_VERSION ARG FFMPEG_VERSION ARG NASM_VERSION ARG YASM_VERSION -ARG LAME_VERSION +ARG X265_VERSION +ARG OGG_VERSION ARG OPUS_VERSION +ARG VORBIS_VERSION +ARG THEORA_VERSION +ARG VPX_VERSION +ARG WEBP_VERSION +ARG LAME_VERSION +ARG XVID_VERSION +ARG OPENJPEG_VERSION +ARG LIBPNG_VERSION # TODO: Make version of x264, x265 and libvpx selectable? ARG NUM_JOBS=2 @@ -43,8 +61,17 @@ ENV OLIVE_ORG=${OLIVE_ORG} \ FFMPEG_VERSION=${FFMPEG_VERSION} \ NASM_VERSION=${NASM_VERSION} \ YASM_VERSION=${YASM_VERSION} \ - LAME_VERSION=${LAME_VERSION} \ + X265_VERSION=${X265_VERSION} \ + OGG_VERSION=${OGG_VERSION} \ OPUS_VERSION=${OPUS_VERSION} \ + VORBIS_VERSION=${VORBIS_VERSION} \ + THEORA_VERSION=${THEORA_VERSION} \ + VPX_VERSION=${VPX_VERSION} \ + WEBP_VERSION=${WEBP_VERSION} \ + LAME_VERSION=${LAME_VERSION} \ + XVID_VERSION=${XVID_VERSION} \ + OPENJPEG_VERSION=${OPENJPEG_VERSION} \ + LIBPNG_VERSION=${LIBPNG_VERSION} \ NUM_JOBS=${NUM_JOBS} \ OLIVE_INSTALL_PREFIX=/usr/local diff --git a/docker/scripts/build_ffmpeg.sh b/docker/scripts/build_ffmpeg.sh index 1f2c36a91..7853903b3 100644 --- a/docker/scripts/build_ffmpeg.sh +++ b/docker/scripts/build_ffmpeg.sh @@ -46,6 +46,7 @@ wait # Set up libx264 { + # TODO: Checkout stable branch instead of master? git clone --depth 1 "https://code.videolan.org/videolan/x264.git" cd x264 ./configure \ @@ -53,7 +54,7 @@ wait --enable-shared \ --enable-pic \ --disable-cli - make -j${NUM_JOBS} + make make install cd .. rm -rf x264 @@ -63,18 +64,121 @@ wait { # BitBucket dropped support for Mercurial repos #hg clone https://bitbucket.org/multicoreware/x265 - git clone --depth 1 "https://bitbucket.org/multicoreware/x265_git.git" x265 + # Need to fetch tags (off by default for shallow clones) or checkout a tag to avoid pkg-config error + git clone --depth 1 --branch "${X265_VERSION}" "https://bitbucket.org/multicoreware/x265_git.git" x265 cd x265/build/linux cmake \ -G "Unix Makefiles" \ -DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \ ../../source - make -j${NUM_JOBS} + make make install cd ../../.. rm -rf x265 } & +# Set up libogg +{ + curl -fLsS -o libogg.tar.gz "http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz" + tar xf libogg.tar.gz + rm -f libogg.tar.gz + cd libogg* + ./configure \ + --prefix="${OLIVE_INSTALL_PREFIX}" \ + --enable-shared + make + make install + cd .. + rm -rf libogg* +} & + +# Set up libopus +{ + curl -fLsS -o opus.tar.gz "https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz" + tar xf opus.tar.gz + rm -f opus.tar.gz + cd opus* + ./configure \ + --prefix="${OLIVE_INSTALL_PREFIX}" \ + --enable-shared + make + make install + cd .. + rm -rf opus* +} & + +# join jobs, libvorbis and libtheora depend on libogg +wait + +# Set up libvorbis +{ + curl -fLsS -o libvorbis.tar.gz "http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz" + tar xf libvorbis.tar.gz + rm -f libvorbis.tar.gz + cd libvorbis* + ./configure \ + --prefix="${OLIVE_INSTALL_PREFIX}" \ + --with-ogg="${OLIVE_INSTALL_PREFIX}" \ + --enable-shared + make + make install + cd .. + rm -rf libvorbis* +} & + +# Set up libtheora +{ + curl -fLsS -o libtheora.tar.gz "http://downloads.xiph.org/releases/theora/libtheora-${THEORA_VERSION}.tar.gz" + tar xf libtheora.tar.gz + rm -f libtheora.tar.gz + cd libtheora* + ./configure \ + --prefix="${OLIVE_INSTALL_PREFIX}" \ + --with-ogg="${OLIVE_INSTALL_PREFIX}" \ + --enable-shared + make + make install + cd .. + rm -rf libtheora* +} & + +# Set up libvpx +{ + git clone --depth 1 --branch "v${VPX_VERSION}" "https://chromium.googlesource.com/webm/libvpx.git" + cd libvpx + ./configure \ + --prefix="${OLIVE_INSTALL_PREFIX}" \ + --enable-shared \ + --enable-pic \ + --enable-vp8 \ + --enable-vp9 \ + --enable-vp9-highbitdepth \ + --as=yasm \ + --disable-examples \ + --disable-unit-tests \ + --disable-docs \ + --disable-install-bins + make + make install + cd .. + rm -rf libvpx +} & + +### Set up libwebp +{ + curl -fLsS -o libwebp.tar.gz "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz" + tar xf libwebp.tar.gz + rm -f libwebp.tar.gz + cd libwebp* + ./configure \ + --prefix="${OLIVE_INSTALL_PREFIX}" \ + --enable-shared + make + make install + cd .. + rm -rf libwebp* +} & + # Set up libmp3lame { curl -fLsS -o lame.tar.gz "https://downloads.sourceforge.net/project/lame/lame/${LAME_VERSION}/lame-${LAME_VERSION}.tar.gz" @@ -86,45 +190,54 @@ wait --enable-shared \ --enable-nasm \ --disable-frontend - make -j${NUM_JOBS} + make make install cd .. rm -rf lame* } & -# Set up libopus +### Set up xvid { - curl -fLsS -o opus.tar.gz "https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz" - tar xf opus.tar.gz - rm -f opus.tar.gz - cd opus* + curl -fLsS -o xvidcore.tar.gz "http://downloads.xvid.org/downloads/xvidcore-${XVID_VERSION}.tar.gz" + tar xf xvidcore.tar.gz + rm -f xvidcore.tar.gz + cd xvidcore/build/generic ./configure \ --prefix="${OLIVE_INSTALL_PREFIX}" \ - --enable-shared - make -j${NUM_JOBS} + --bindir="${OLIVE_INSTALL_PREFIX}/bin" + make make install - cd .. - rm -rf opus* + cd ../../.. + rm -rf xvidcore } & -# Set up libvpx +# Set up openjpeg { - git clone --depth 1 "https://chromium.googlesource.com/webm/libvpx.git" - cd libvpx - ./configure \ - --prefix="${OLIVE_INSTALL_PREFIX}" \ - --enable-shared \ - --enable-pic \ - --enable-vp9-highbitdepth \ - --as=yasm \ - --disable-examples \ - --disable-unit-tests \ - --disable-docs \ - --disable-install-bins - make -j${NUM_JOBS} + curl -fLsS -o openjpeg.tar.gz "https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz" + tar xf openjpeg.tar.gz + rm -f openjpeg.tar.gz + cd openjpeg* + cmake \ + -DBUILD_THIRDPARTY:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \ + . + make make install cd .. - rm -rf libvpx + rm -rf openjpeg* +} & + +# Set up libpng +{ + git clone --depth 1 "https://git.code.sf.net/p/libpng/code" libpng --branch "v${LIBPNG_VERSION}" + cd libpng + ./autogen.sh + ./configure \ + --prefix="${OLIVE_INSTALL_PREFIX}" + make check + make install + cd .. + rm -rf libpng } & # join all jobs @@ -142,11 +255,16 @@ PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" ./configure \ --enable-version3 \ --enable-shared \ --enable-libfreetype \ - --enable-libmp3lame \ - --enable-libopus \ - --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libwebp \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libopenjpeg \ --prefix="${OLIVE_INSTALL_PREFIX}" \ --extra-libs=-lpthread \ --extra-libs=-lm \ diff --git a/docker/scripts/common/install_yumpackages.sh b/docker/scripts/common/install_yumpackages.sh index f5003675c..064c5e1f1 100644 --- a/docker/scripts/common/install_yumpackages.sh +++ b/docker/scripts/common/install_yumpackages.sh @@ -26,6 +26,7 @@ yum install --setopt=tsflags=nodocs -y \ libxkbcommon-x11-devel \ libXScrnSaver libXScrnSaver-devel \ mesa-libGL-devel \ + numactl-devel \ openjpeg2-devel \ pciutils-devel \ pulseaudio-libs pulseaudio-libs-devel \ From 2959f1eb11ff63262783e027ccfb8694225e5bfd Mon Sep 17 00:00:00 2001 From: Simran Date: Wed, 28 Oct 2020 09:10:16 +0100 Subject: [PATCH 02/15] Update 50-build_issue.md There is a separate label for continuous integration now, but we don't have a separate issue template for that. It's unlikely that someone wants to report CI issue anyway. --- .github/ISSUE_TEMPLATE/50-build_issue.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/50-build_issue.md b/.github/ISSUE_TEMPLATE/50-build_issue.md index 556e4cabe..8ac8af650 100644 --- a/.github/ISSUE_TEMPLATE/50-build_issue.md +++ b/.github/ISSUE_TEMPLATE/50-build_issue.md @@ -1,8 +1,8 @@ --- name: Build/Packaging about: >- - Report an issue related to compiling or packaging (including continuous - integration). Note that we do not officially support custom build + Report an issue related to compiling or packaging. + Note that we do not officially support custom build configurations and may not address issues involving them. title: '[BUILD] ' labels: 'Building/Packaging, Triage' From 10d2ea823c45dccd058cbb2d06bd9fcadcf5c375 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Thu, 29 Oct 2020 01:39:03 +1100 Subject: [PATCH 03/15] ci: try new dependencies --- .github/workflows/ci.yml | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f68c7c77a..02d7fd7b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -158,29 +158,11 @@ jobs: with: version: 5.15.1 - - name: Acquire FFmpeg + - name: Acquire Dependencies shell: bash run: | - $DOWNLOAD_TOOL https://olivevideoeditor.org/deps/ffmpeg-win.7z - $EXTRACT_TOOL ffmpeg-win.7z - - - name: Acquire OpenColorIO - shell: bash - run: | - $DOWNLOAD_TOOL https://olivevideoeditor.org/deps/ocio-win.7z - $EXTRACT_TOOL ocio-win.7z - - - name: Acquire OpenEXR - shell: bash - run: | - $DOWNLOAD_TOOL https://olivevideoeditor.org/deps/openexr-win.7z - $EXTRACT_TOOL openexr-win.7z - - - name: Acquire OpenImageIO - shell: bash - run: | - $DOWNLOAD_TOOL https://olivevideoeditor.org/deps/oiio-win.7z - $EXTRACT_TOOL oiio-win.7z + $DOWNLOAD_TOOL https://olivevideoeditor.org/deps/dep-win.7z + $EXTRACT_TOOL dep-win.7z - name: Acquire Crashpad shell: bash From 59241f9023803d886c4a4d61887911a2c8bc9776 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Thu, 29 Oct 2020 01:39:22 +1100 Subject: [PATCH 04/15] generate OCIO extraction directory BEFORE setting C locale for OCIO --- app/render/colormanager.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/render/colormanager.cpp b/app/render/colormanager.cpp index 2e4f496dd..3bf4e0164 100644 --- a/app/render/colormanager.cpp +++ b/app/render/colormanager.cpp @@ -69,6 +69,10 @@ OCIO::ConstConfigRcPtr ColorManager::GetDefaultConfig() void ColorManager::SetUpDefaultConfig() { + // Extract OCIO config - kind of hacky, but it'll work + // Must do this before setting C locale + QString dir = QDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)).filePath(QStringLiteral("ocioconf")); + OCIO_SET_C_LOCALE_FOR_SCOPE; if (!qgetenv("OCIO").isEmpty()) { @@ -82,9 +86,6 @@ void ColorManager::SetUpDefaultConfig() } } - // Extract OCIO config - kind of hacky, but it'll work - QString dir = QDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)).filePath(QStringLiteral("ocioconf")); - FileFunctions::CopyDirectory(QStringLiteral(":/ocioconf"), dir, true); From 34cb7c96de1075f7e00f8bf87b3211177bc1da46 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Thu, 29 Oct 2020 02:20:59 +1100 Subject: [PATCH 05/15] further enclosed C locale setting --- app/render/colormanager.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/render/colormanager.cpp b/app/render/colormanager.cpp index 3bf4e0164..a559b06f4 100644 --- a/app/render/colormanager.cpp +++ b/app/render/colormanager.cpp @@ -69,15 +69,10 @@ OCIO::ConstConfigRcPtr ColorManager::GetDefaultConfig() void ColorManager::SetUpDefaultConfig() { - // Extract OCIO config - kind of hacky, but it'll work - // Must do this before setting C locale - QString dir = QDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)).filePath(QStringLiteral("ocioconf")); - - OCIO_SET_C_LOCALE_FOR_SCOPE; - if (!qgetenv("OCIO").isEmpty()) { // Attempt to set config from "OCIO" environment variable try { + OCIO_SET_C_LOCALE_FOR_SCOPE; default_config_ = OCIO::Config::CreateFromEnv(); return; @@ -86,13 +81,19 @@ void ColorManager::SetUpDefaultConfig() } } + // Extract OCIO config - kind of hacky, but it'll work + QString dir = QDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)).filePath(QStringLiteral("ocioconf")); + FileFunctions::CopyDirectory(QStringLiteral(":/ocioconf"), dir, true); qDebug() << "Extracting default OCIO config to" << dir; - default_config_ = CreateConfigFromFile(QDir(dir).filePath(QStringLiteral("config.ocio"))); + { + OCIO_SET_C_LOCALE_FOR_SCOPE; + default_config_ = CreateConfigFromFile(QDir(dir).filePath(QStringLiteral("config.ocio"))); + } } void ColorManager::SetConfig(const QString &filename) From 0b3dd128e1a9d5085bc45069537f8f64e4b711df Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 29 Oct 2020 10:54:16 +0100 Subject: [PATCH 06/15] Remove old Travis CI (Linux, macOS) --- .travis.yml | 44 ----------------------- .travis/after_success.sh | 40 --------------------- .travis/before_install.sh | 17 --------- .travis/install.sh | 18 ---------- .travis/script.sh | 76 --------------------------------------- 5 files changed, 195 deletions(-) delete mode 100644 .travis.yml delete mode 100644 .travis/after_success.sh delete mode 100644 .travis/before_install.sh delete mode 100644 .travis/install.sh delete mode 100644 .travis/script.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9b7b9d3ff..000000000 --- a/.travis.yml +++ /dev/null @@ -1,44 +0,0 @@ -language: cpp - -matrix: - include: - - os: linux - env: ARCH=x86_64 - compiler: gcc - sudo: require - dist: xenial - - os: osx - osx_image: xcode10.3 - before_cache: - - brew cleanup - cache: - directories: - - $HOME/Library/Caches/Homebrew - addons: - homebrew: - packages: - - ffmpeg - - qt5 - - grep - - opencolorio - - openimageio - update: true - # Can't build on Windows - affected by https://travis-ci.community/t/current-known-issues-please-read-this-before-posting-a-new-topic/264/10 - # - os: windows - -before_install: - - source ./.travis/before_install.sh - -install: - - source ./.travis/install.sh - -script: - - source ./.travis/script.sh - -after_success: - - source ./.travis/after_success.sh - -branches: - except: - - # Do not build tags that we create when we upload to GitHub Releases - - /^(?i:continuous)/ diff --git a/.travis/after_success.sh b/.travis/after_success.sh deleted file mode 100644 index e189720f2..000000000 --- a/.travis/after_success.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# Check if there's been a new commit since this build, and if so don't upload it - -GREP_PATH=grep - -if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - GREP_PATH=ggrep -fi - -# Get current repo commit from GitHub (problems arose from trying to pipe cURL directly into grep, so we buffer it through a file) -REMOTE=$(curl -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/repos/olive-editor/olive/commits/master | $GREP_PATH -Po '(?<=: \")(([a-z0-9])\w+)(?=\")' -m 1 --) -LOCAL=$(git rev-parse HEAD) - -if [ "$TRAVIS_TAG" != "" ] || [ "$REMOTE" == "$LOCAL" ] -then - echo "[INFO] Still current. Uploading..." - - export UPLOADTOOL_BODY=$(cat release.txt) - - # Retrieve upload tool - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - - bash upload.sh Olive*.zip - - elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - - find appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - - bash upload.sh Olive*.AppImage* - - fi - -else - - echo "[INFO] No longer current. $REMOTE vs $LOCAL - aborting upload." - -fi diff --git a/.travis/before_install.sh b/.travis/before_install.sh deleted file mode 100644 index 569d5f5bb..000000000 --- a/.travis/before_install.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - - # Qt 5.11 - sudo add-apt-repository ppa:beineri/opt-qt-5.11.0-xenial -y - - # FFmpeg 4.x - sudo add-apt-repository ppa:jonathonf/ffmpeg-4 -y - - # OpenColorIO - sudo add-apt-repository ppa:olive-editor/opencolorio -y - - # Update apt - sudo apt-get update -qq - -fi diff --git a/.travis/install.sh b/.travis/install.sh deleted file mode 100644 index 8d57de697..000000000 --- a/.travis/install.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - - export PATH="/usr/local/opt/qt/bin:/usr/local/opt/python@2/libexec/bin:$PATH" - -elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - - sudo apt-get -y -o Dpkg::Options::="--force-overwrite" install qt511base qt511multimedia qt511svg qt511tools libavformat-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev libswresample-dev libopencolorio-dev libopenimageio-dev libgl1-mesa-dev - source /opt/qt*/bin/qt*-env.sh - - # Acquire latest cmake (apt somehow gets the wrong version?) - wget -c https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2-Linux-x86_64.sh -O cmake.sh - chmod +x cmake.sh - ./cmake.sh --skip-license --prefix=cmake --exclude-dir - export PATH=$PWD/cmake/bin:$PATH - -fi diff --git a/.travis/script.sh b/.travis/script.sh deleted file mode 100644 index 4a7a7fa2c..000000000 --- a/.travis/script.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash - -# linuxdeployqt uses this for naming the file -export VERSION=$(git rev-parse --short=8 HEAD) - -if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - - # Generate Makefile - cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo - - # Make - make -j$(sysctl -n hw.ncpu) - - # Handle compile failure - if [ "$?" != "0" ] - then - exit 1 - fi - - BUNDLE_NAME=Olive.app - - # Move bundle to working directory - mv app/$BUNDLE_NAME . - - # Move Qt deps into bundle - macdeployqt $BUNDLE_NAME - - # Fix other deps that macdeployqt missed - 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.*/ - - # Fix deps on crash handler - python2 macdeployqtfix.py $BUNDLE_NAME/Contents/MacOS/olive-crashhandler /usr/local/Cellar/qt5/5.*/ - - # Fix OpenEXR libs that seem to be missed by both macdeployqt _and_ macdeployqtfix - cd $BUNDLE_NAME/Contents/Frameworks - exrlib=(libImath-*.dylib libHalf-*.dylib libIexMath-*.dylib libIex-*.dylib libIlmThread-*.dylib) - - for a in ${exrlib[@]}; do - for b in ${exrlib[@]}; do - install_name_tool -change @rpath/$b @executable_path/../Frameworks/$b $a - done - done - - cd ../../.. - - # Distribute in zip - zip -r Olive-$VERSION-macOS.zip $BUNDLE_NAME - -elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - - # Generate Makefile - cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo - - # Make - make -j$(nproc) - - # Handle compile failure - if [ "$?" != "0" ] - then - exit 1 - fi - - # Use `make install` on `appdir` to place files in the correct place - make DESTDIR=appdir install - - # Download linuxdeployqt - wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - chmod a+x linuxdeployqt-continuous-x86_64.AppImage - - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - # Use linuxdeployqt to set up dependencies - ./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/local/share/applications/*.desktop -extra-plugins=imageformats/libqsvg.so -appimage - -fi From ee8961eeae4b055901bd98a47276442caf682024 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 29 Oct 2020 10:54:26 +0100 Subject: [PATCH 07/15] Remove old AppVayor CI (Windows) --- .appveyor/build.bat | 117 -------------------------------------------- appveyor.yml | 22 --------- 2 files changed, 139 deletions(-) delete mode 100644 .appveyor/build.bat delete mode 100644 appveyor.yml diff --git a/.appveyor/build.bat b/.appveyor/build.bat deleted file mode 100644 index fa4e48ecc..000000000 --- a/.appveyor/build.bat +++ /dev/null @@ -1,117 +0,0 @@ -REM Get git hash in variable [this seems to be the most efficient way] -git rev-parse --short=8 HEAD > hash.txt -git rev-parse HEAD > longhash.txt -set /p GITHASH= < hash.txt -set /p GITLONGHASH= < longhash.txt -set /p TRAVIS_COMMIT= < longhash.txt - -REM Set up Visual Studio x64 environment -call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" - -REM Install 64-bit packages -set VCPKG_DEFAULT_TRIPLET=x64-windows - -REM Hack to only install release builds for time -echo set(VCPKG_BUILD_TYPE release) >> C:\Tools\vcpkg\triplets\x64-windows.cmake - -REM Install Open*IO libraries -vcpkg install opencolorio -vcpkg install openimageio - -REM Integrate libraries -cd c:\tools\vcpkg -vcpkg integrate install -cd %APPVEYOR_BUILD_FOLDER% - -REM Acquire FFmpeg -set FFMPEG_VER=ffmpeg-4.2.3-win64 -curl https://ffmpeg.zeranoe.com/builds/win64/dev/%FFMPEG_VER%-dev.zip > %FFMPEG_VER%-dev.zip -curl https://ffmpeg.zeranoe.com/builds/win64/shared/%FFMPEG_VER%-shared.zip > %FFMPEG_VER%-shared.zip -7z x %FFMPEG_VER%-dev.zip -7z x %FFMPEG_VER%-shared.zip - -REM Acquire Google Crashpad -git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git -set PATH=%PATH%;%APPVEYOR_BUILD_FOLDER%\depot_tools - -REM Run `fetch` through cmd /c since fetch is a batch file that seems to call exit -cmd /c fetch crashpad -cd crashpad -cmd /c gn gen out/Default - -REM Patch to build a dynamic release instead of a static release -ren out\Default\toolchain.ninja toolchain.ninja.old -sed "s/${cflags_c}/${cflags_c} \/MD/g" out\Default\toolchain.ninja.old > out\Default\toolchain.ninja - -REM Build Crashpad -ninja.exe -C out/Default -cd .. - -REM Add Qt, FFmpeg, and Crashpad to path -set PATH=%PATH%;C:\Qt\5.13.2\msvc2017_64\bin;%APPVEYOR_BUILD_FOLDER%\%FFMPEG_VER%-dev;%APPVEYOR_BUILD_FOLDER%\crashpad;%APPVEYOR_BUILD_FOLDER%\crashpad\out\Default - -REM Run cmake -cmake -G "Ninja" . -DCMAKE_TOOLCHAIN_FILE=c:/Tools/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo - -REM Build with Ninja -ninja.exe || exit /B 1 - -REM If this is a pull request, no further packaging/deploying needs to be done -if NOT "%APPVEYOR_PULL_REQUEST_NUMBER%" == "" goto end - -REM Create Crashpad symbol file and upload it -C:\msys64\usr\bin\wget.exe https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true -O dump_syms.exe -dump_syms app\olive-editor.pdb > olive-editor.sym -curl -F symfile=@olive-editor.sym https://olivevideoeditor.org/crashpad/symbols.php - -REM Start building package -mkdir olive-editor -cd olive-editor -copy ..\app\olive-editor.exe . -copy ..\app\olive-editor.pdb . -copy ..\app\crashhandler.exe . -copy ..\crashpad\out\Default\crashpad_handler.exe . -windeployqt olive-editor.exe -copy ..\%FFMPEG_VER%-shared\bin\*.dll . -copy ..\app\*.dll . - -REM Package done, begin deployment -cd .. -set PKGNAME=Olive-%GITHASH%-Windows-x86_64 - -REM Create installer -copy app\packaging\windows\nsis\* . -"C:/Program Files (x86)/NSIS/makensis.exe" -V4 -DX64 "-XOutFile %PKGNAME%.exe" olive.nsi - -REM Create portable -copy nul olive-editor\portable -7z a %PKGNAME%.zip olive-editor - -REM If this was a tagged build, upload -if "%APPVEYOR_REPO_TAG%"=="true" GOTO upload - -REM Else, if this is a continuous build, check if this commit is the most recent - -REM Force locale to UTF-8 or grep -P fails -set LC_ALL=en_US.UTF-8 - -curl -H "Authorization: token %GITHUB_TOKEN%" https://api.github.com/repos/olive-editor/olive/commits/master > repoinfo.txt -grep -Po '(?^<=: \")(([a-z0-9])\w+)(?=\")' -m 1 repoinfo.txt > latestcommit.txt -set /p REMOTEHASH= < latestcommit.txt -if "%REMOTEHASH%"=="%GITLONGHASH%" GOTO upload - -REM The previous if statements failed, skip to the end -GOTO end - -:upload -set /p UPLOADTOOL_BODY= < latestcommit.txt - -curl -L https://github.com/probonopd/uploadtool/raw/master/upload.sh > upload.sh -bash upload.sh Olive*.zip -bash upload.sh Olive*.exe - -:end -REM Check if this build should set up a debugging session -IF "%ENABLE_RDP%"=="1" ( - powershell -command "$blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))" -) diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 436930972..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: "{build}" -image: Visual Studio 2017 -environment: - TRAVIS_REPO_SLUG: olive-editor/olive - -# Hack to not build the "continuous" tag (https://github.com/appveyor/ci/issues/486) -# FIXME: Will unfortunately skip release tags -skip_tags: true - -install: -- cd C:\Tools\vcpkg -- git pull -- .\bootstrap-vcpkg.bat -- cd %APPVEYOR_BUILD_FOLDER% -build_script: -- cmd: .appveyor\build.bat -#artifacts: -#- path: Olive*.zip -# name: Olive Portable -#- path: Olive*.exe -# name: Olive Installer -cache: c:\tools\vcpkg\installed\ From 493babab595e4e252d68ebcbdd50711ae45a3937 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 29 Oct 2020 11:15:35 +0100 Subject: [PATCH 08/15] Update Qt gitignores --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index eaf33fa1c..5e0716088 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ build/ CmakeSettings.json # -# Qt ignores taken from https://github.com/github/gitignore +# Qt ignores taken from https://github.com/github/gitignore/blob/master/Qt.gitignore # # C++ objects and libs @@ -24,6 +24,7 @@ CmakeSettings.json *.la *.lai *.so +*.so.* *.dll *.dylib @@ -46,6 +47,8 @@ ui_*.h *.jsc Makefile* *build-* +*.qm +*.prl # Qt unit tests target_wrapper.* @@ -65,3 +68,5 @@ compile_commands.json # QtCreator local machine specific files for imported projects *creator.user* + +*_qmlcache.qrc From 8c1f7d6d94a3b624f4e22db32f2204e6b2bd6b84 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 29 Oct 2020 11:16:03 +0100 Subject: [PATCH 09/15] Cleanup and add a few more gitignores --- .gitignore | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 5e0716088..a2d250b96 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,36 @@ -*.pro.user* -Makefile -.qmake.stash -effects/frei0r -ts/*.qm -docs -history -build/ -.DS_Store +# CMake artifacts +build*/ -.vscode -.vs +# Doxygen +docs/ + +# Visual Studio (Code) +.localhistory/ +.history/ +.vscode/ +.vs/ CmakeSettings.json +# macOS General +.DS_Store +.AppleDouble +.LSOverride + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Windows folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares (Windows) +$RECYCLE.BIN/ + +# Windows shortcuts +*.lnk + # # Qt ignores taken from https://github.com/github/gitignore/blob/master/Qt.gitignore # From 82347ccda605d0f80ae002b6e617d09658cd8c9d Mon Sep 17 00:00:00 2001 From: Simran Date: Thu, 29 Oct 2020 17:24:34 +0100 Subject: [PATCH 10/15] Limit build*/ and docs/ to top level, ignore out/ at top level --- .gitignore | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index a2d250b96..88b977edd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,15 @@ # CMake artifacts -build*/ +/build*/ # Doxygen -docs/ +/docs/ # Visual Studio (Code) .localhistory/ .history/ .vscode/ .vs/ +/out/ CmakeSettings.json # macOS General From de48eba7131232314878205dae3664991a752435 Mon Sep 17 00:00:00 2001 From: Simran Date: Mon, 2 Nov 2020 12:10:20 +0100 Subject: [PATCH 11/15] Make dialog for saving a project actually a save dialog AcceptMode defaults to QFileDialog::AcceptOpen --- app/core.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/app/core.cpp b/app/core.cpp index 8db737dbd..c070bac7e 100644 --- a/app/core.cpp +++ b/app/core.cpp @@ -925,6 +925,7 @@ bool Core::SaveProjectAs(ProjectPtr p) { QFileDialog fd(main_window_, tr("Save Project As")); + fd.setAcceptMode(QFileDialog::AcceptSave); fd.setNameFilter(GetProjectFilter(false)); if (fd.exec() == QDialog::Accepted) { From cc777756924b488e19a4b3d71d17a67775b58a55 Mon Sep 17 00:00:00 2001 From: Simran Date: Thu, 5 Nov 2020 10:18:53 +0100 Subject: [PATCH 12/15] Update CONTRIBUTING.md --- CONTRIBUTING.md | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9e35c5a9..ef3600f54 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,29 @@ # Contributing to Olive -Thank you for your interest in contributing to Olive! In order to keep the code as readable and maintainable as possible, code submitted should abide by the following standards: +Thank you for your interest in contributing to Olive! -### Standards +## Reporting issues -When contributing to Olive, it's recommended to use the following rules: +Bug reports help to make the software more stable and usable. +Please read the pinned [issue #1175](https://github.com/olive-editor/olive/issues/1175) +for guidelines before you create a new issue. -* The code style generally follows the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) including, but not limited to: +## Writing code + +Code contributions are welcome. Note that the code base is rapidly changing in +the current stage of development however. There is some documentation in the form +of code comments, including Javadoc in header files. Feel free to reach out via +an issue or pull request if you have questions about the architecture or +implementation details. + +### Code Standards + +In order to keep the code as readable and maintainable as possible, code +submitted should abide by the following standards: + +* The code style generally follows the + [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) + including, but not limited to: * Indentation is 2 spaces wide, spaces only (no tabs) * `lowercase_underscored_variable_names` * `lowercase_underscored_functions()` or `SentenceCaseFunctions()` From 6d3357d13bc18618a70b1a33af7caab722e40b56 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 5 Nov 2020 10:30:05 +0100 Subject: [PATCH 13/15] Add more comments to issue templates --- .github/ISSUE_TEMPLATE/01-crash_issue.md | 7 +++++-- .github/ISSUE_TEMPLATE/50-build_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-cache_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-codec_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-color_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-editing_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-export_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-node_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-playback_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-project_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-renderer_issue.md | 6 ++++-- .github/ISSUE_TEMPLATE/50-ui_issue.md | 6 ++++-- 12 files changed, 49 insertions(+), 24 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01-crash_issue.md b/.github/ISSUE_TEMPLATE/01-crash_issue.md index 24f1d03ec..52448433b 100644 --- a/.github/ISSUE_TEMPLATE/01-crash_issue.md +++ b/.github/ISSUE_TEMPLATE/01-crash_issue.md @@ -5,10 +5,13 @@ title: '[CRASH] ' labels: 'Crash, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** + **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-build_issue.md b/.github/ISSUE_TEMPLATE/50-build_issue.md index 8ac8af650..3f50177f3 100644 --- a/.github/ISSUE_TEMPLATE/50-build_issue.md +++ b/.github/ISSUE_TEMPLATE/50-build_issue.md @@ -8,10 +8,12 @@ title: '[BUILD] ' labels: 'Building/Packaging, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-cache_issue.md b/.github/ISSUE_TEMPLATE/50-cache_issue.md index aa67eb877..049da13e6 100644 --- a/.github/ISSUE_TEMPLATE/50-cache_issue.md +++ b/.github/ISSUE_TEMPLATE/50-cache_issue.md @@ -8,10 +8,12 @@ title: '[CACHE] ' labels: 'Disk Cache, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-codec_issue.md b/.github/ISSUE_TEMPLATE/50-codec_issue.md index c0a94eef6..623f24968 100644 --- a/.github/ISSUE_TEMPLATE/50-codec_issue.md +++ b/.github/ISSUE_TEMPLATE/50-codec_issue.md @@ -7,10 +7,12 @@ title: '[CODEC] ' labels: 'Codec, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-color_issue.md b/.github/ISSUE_TEMPLATE/50-color_issue.md index 7fb55c049..e779730a2 100644 --- a/.github/ISSUE_TEMPLATE/50-color_issue.md +++ b/.github/ISSUE_TEMPLATE/50-color_issue.md @@ -7,10 +7,12 @@ title: '[COLOR] ' labels: 'Color Management, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-editing_issue.md b/.github/ISSUE_TEMPLATE/50-editing_issue.md index 08d8cb93f..a96d26652 100644 --- a/.github/ISSUE_TEMPLATE/50-editing_issue.md +++ b/.github/ISSUE_TEMPLATE/50-editing_issue.md @@ -7,10 +7,12 @@ title: '[EDIT] ' labels: 'Timeline/Editing, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-export_issue.md b/.github/ISSUE_TEMPLATE/50-export_issue.md index 9f7544115..22bda9eb2 100644 --- a/.github/ISSUE_TEMPLATE/50-export_issue.md +++ b/.github/ISSUE_TEMPLATE/50-export_issue.md @@ -7,10 +7,12 @@ title: '[EXPORT] ' labels: 'Export, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-node_issue.md b/.github/ISSUE_TEMPLATE/50-node_issue.md index 3d60610aa..a272691d0 100644 --- a/.github/ISSUE_TEMPLATE/50-node_issue.md +++ b/.github/ISSUE_TEMPLATE/50-node_issue.md @@ -7,10 +7,12 @@ title: '[NODES] ' labels: 'Nodes/Compositing, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-playback_issue.md b/.github/ISSUE_TEMPLATE/50-playback_issue.md index 14aa90f62..2b64327c1 100644 --- a/.github/ISSUE_TEMPLATE/50-playback_issue.md +++ b/.github/ISSUE_TEMPLATE/50-playback_issue.md @@ -7,10 +7,12 @@ title: '[PLAYBACK] ' labels: 'Playback, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-project_issue.md b/.github/ISSUE_TEMPLATE/50-project_issue.md index 1cf79b649..b9c9abd11 100644 --- a/.github/ISSUE_TEMPLATE/50-project_issue.md +++ b/.github/ISSUE_TEMPLATE/50-project_issue.md @@ -7,10 +7,12 @@ title: '[PROJECT] ' labels: 'Project, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-renderer_issue.md b/.github/ISSUE_TEMPLATE/50-renderer_issue.md index 4f6ffd0da..a9b4a8413 100644 --- a/.github/ISSUE_TEMPLATE/50-renderer_issue.md +++ b/.github/ISSUE_TEMPLATE/50-renderer_issue.md @@ -7,10 +7,12 @@ title: '[RENDER] ' labels: 'Renderer, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** diff --git a/.github/ISSUE_TEMPLATE/50-ui_issue.md b/.github/ISSUE_TEMPLATE/50-ui_issue.md index 251a65b1e..972f06416 100644 --- a/.github/ISSUE_TEMPLATE/50-ui_issue.md +++ b/.github/ISSUE_TEMPLATE/50-ui_issue.md @@ -7,10 +7,12 @@ title: '[UI] ' labels: 'User Interface, Triage' assignees: '' --- -**Commit Hash** + + +**Commit Hash** -**Platform** +**Platform** **Summary** From c4fb90bad4d85ffc6eb0e8452fc5ca40c2b78bd8 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 5 Nov 2020 10:31:23 +0100 Subject: [PATCH 14/15] Remove extra line in issue template --- .github/ISSUE_TEMPLATE/01-crash_issue.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/01-crash_issue.md b/.github/ISSUE_TEMPLATE/01-crash_issue.md index 52448433b..d3d24f556 100644 --- a/.github/ISSUE_TEMPLATE/01-crash_issue.md +++ b/.github/ISSUE_TEMPLATE/01-crash_issue.md @@ -13,7 +13,6 @@ assignees: '' **Platform** - **Summary** From 7b05e1b59e633dffb973d1ad5607bc460922f42a Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Sat, 7 Nov 2020 12:31:31 +0100 Subject: [PATCH 15/15] [UI] update "new" icon with a right bottom triangle because the button really opens a menu --- app/ui/style/olive-dark/png/new.128.png | Bin 1053 -> 1154 bytes app/ui/style/olive-dark/png/new.16.png | Bin 419 -> 407 bytes app/ui/style/olive-dark/png/new.32.png | Bin 504 -> 518 bytes app/ui/style/olive-dark/png/new.64.png | Bin 667 -> 707 bytes app/ui/style/olive-dark/svg/new.svg | 25 ++++++++++-------- app/ui/style/olive-light/png/new.128.png | Bin 1172 -> 1294 bytes app/ui/style/olive-light/png/new.16.png | Bin 460 -> 442 bytes app/ui/style/olive-light/png/new.32.png | Bin 559 -> 547 bytes app/ui/style/olive-light/png/new.64.png | Bin 750 -> 798 bytes app/ui/style/olive-light/svg/new.svg | 31 +++++++++++++---------- 10 files changed, 31 insertions(+), 25 deletions(-) diff --git a/app/ui/style/olive-dark/png/new.128.png b/app/ui/style/olive-dark/png/new.128.png index 68cf532970f244733a47fafce419f4e60cf5af11..7b8c6b8e8b073f5de4df077577da3c66c82cd09b 100644 GIT binary patch delta 982 zcmbQs(Zo4HWunQ<`VF2gjv*Cu-rm{oClV;p_VKxd=|pLRt`M!Zd)J~51a z{Ze+#&};^G`=9Gy{QuPdo8=C-VvVM)N9Q>enaxhNr`aPI<{g*NpDwq=MU!FLX8%CD zNES_ob?Nhy%%T|Lj!3MZB9}62DZ`A@c1Pcs_!p~AaGb!j;M)=bi32B3Di}08^aK(Y zL;DXf_^r=k(JW^wkCH3e|F+&zD0=>f$L}xQG5llm@UxF;JmazTr?eXxx2(2eVY{$z zm4F8Gjkg7FY&HZQu4X^QAjcG2w{Z2Nz09c$_Z!_yoG<*I4rC^lspa2UamKYeawakCJYvU{jdK*by$=(0qyc%f?v@H9EEq@~b%y%!Y9HFyEUlwUrL<`#^4jpwEocrXfq;GT%Osolq<`jbD~w$4S$* zKS|IwmU4skioYaSW-L^Y+fhtPn?uwuj{|ti{ZW45vzY z=D*fG64c!5x<`EL7LjfTf#gI%{eylR;ujrsQ@*CAA~12Ig>(Rq%53BP#m{Q)Gi!dI zpLl-u%_lm$6Vi4CePObE-hF^;1CI{V^hMWoo-o{CGHbl9x%BX<-<*O{4(EOvePD{{ zig{jdKZBt^$m@P~{*o;l7?$n-nV<3hk^E048xPIe)q5vSI>&l0F40C@K7p}fX7RqL zYGqYdwhb~CyQf`r6_7k|_P|Y3U552V=dNevFKIc!@Qf+_x|x5ukcqrw3PZAa7l(|4 z{aN=148O9inAii{HVaxb6wT^U_~iHCTMvJw#K!*Q`ZcWQ?=Re){KK?ju2K!tl6o<@#95?Ys<{5WaC>1cI8_xm?-0W3iV!z=38EEytS$zi>r(Dco;af0A z4X7j4RJ^gCS!4Z5pfh`7A84lD^V%1b=6$@Fp|I}4T$Wm;2!?t7_L;JW7>{TP9uz8A zf2QnTsa@8Gjx|^BG2B&OdtI6BH%rFhwJQ$tE#OU@zom@fkxYXHyMmu#L-Q?Z38AA5 zcGvG6n4rP-Vcj>jHW$MN{sYHv&6eOg%23C6zJR6S-P#AX^}DLSY;UwaPA zez72%DlU1T?m>=ebzrkH^A8b=Xx|(AuS{gjVLKNl{4FNTjco&?57YD2GcMRpS3Jbz zp()F>+M>x$?Ld~-%k(QuiQAj{pUlx`_};ktfRcgu-n7Tx8g(D&ZV;^ec=iks_*~3S XFTNd}x5_?~0SG)@{an^LB{Ts5THI(k diff --git a/app/ui/style/olive-dark/png/new.16.png b/app/ui/style/olive-dark/png/new.16.png index 08465e682ebe7dedcb82a4fbad142ce5da32c88a..d69c1e387fc216d3617de87f3b46791863136f58 100644 GIT binary patch delta 248 zcmV$if4_BRDxRGr1a9pTtLS(#=)EcnlO$8sQ(}$}hR}db#_y zmtGS@#0@4$wza@CrSxfsT6yi`4rhg3V}RF)=#UX(AY-`r=y_^Rk%yeIw%3YU=h47JTDjT?|W3?k)vO*gdTP0000Mxp3vLa#+Q|$Pzz#^rzRM18%Kf)7;*IDXbPafvjx$Q zfoKZQ7$OJ27GeU-EQnEEqkRs%8R4Cyrw7~yf~`cP>nli^z;8tDaa}{* zbHJq~a9>mN7`j-lO_;0#Pyh-*0Vn{i0;uY+H2_sh9RlqDY|X*{I=aTxhrGc+GnN0000i~?L za~sQ|T426y+#DbSUPa{AvZ$``c?Y(C0o$-JZUPe#QD;H}um)BNfFp3jS0-Mx5TO#3 z(PIt)hH}IN*cTw0!1OPOm;j|9Vgr0bj0+GG5%JzE%^}okdcl?fec-uhsG5P3!MEX? ztO_tQLi|$I5-jo-(jD+{DZn)jp-BlK0VIF~kN^_EzXNEV<1Xdj{B8_@Uf!-PqEHFU spG<|kF+&-6%ll5G&3C{&QmnW-1H4v42xDToF8}}l07*qoM6N<$f&fL3BLDyZ diff --git a/app/ui/style/olive-dark/png/new.64.png b/app/ui/style/olive-dark/png/new.64.png index ddb69f86fe23cd1cef0dc23a01ccb025e7947293..9c3e97453ebe1188ff5b638fd283ed0234e017a4 100644 GIT binary patch delta 551 zcmV+?0@(eV1;Yi9BoYa5NLh0L01m?d01m?e$8V@)kw%Aq@kvBMRCt{2n@vi?KmbPH zh(9OL6L^i%g%?my;7;9CTzCpMx)DXu-k@7ST!;uB!V6eWpjgI*t+d*VNv4@^n#_X| z$h0%x_n0J`1{#jZ8nD(b0f)dQuvWp^eV_-N8e={xm_HXT0Y|`YfD8}7zDmM^V{9u> zhBk0vtz8L!wB7_R0aa}KELy<1LV`;`Xe1J15&!}TuAAUX#?VfQb-D$={|M|EW8O=w zRfyPjz=&WwK`r3fG1dakthLKk22cyQ1fCq@l|LfY0tUb}ZV8oM4r&1)mJovg5K4$e z0Ei^SBme{wViN%05^f0eh>TGHz$b8pTS6N+@Lgzs(RTt*x}Lw^29A9uh;;|#Wz~0r zc^BYKC;@MQ)+tOV0r!E{DNLxF;N9@J!3?h3SrSUX0Jt4~%F>-plu6P}P#r)`5}*#C zCJ9gnP?H3x1E@&?)B)5a0qOv1k^pr8HA#RvfSM#g9Y9SIpbnrW2~Y=6lLV*(D6!Ud z8Y{qmTH67dDPU9{8h8nemxqQ4_+1_vBw$*3Xo!HU@=)%5fv7OXth>ft<)P*~;J@-v zV*z=}gIhpb=t|i<-skWS0+(l{$wmt9^C&CIvF0f2>T9U9)4cC9Y0yLJUE^L p^G2ESP!j=V%R>zW_>>3u0*HaBH1O=(#sB~c002ovPDHLkV1jbK(E6s^wu`_>FT=|l7X~P2+@4}u!Rtu(WjlC?DY!31k+=?}775`Ym7>^%_ zTclH8$-*~l!iJPJ?^QhwJ;itQ)Ell_nwKIvA?eNXi;Q|f-W#|wW<3!q5@+aCjW9oW zUDJEF@fW?Gul@(>I36aq#RX>`X8AKIMW{&RL(rycjOUVjR+pNd4m=?GA!bwDYjq=c zM&}1@MVwpr@>y~8z%xI8%RX3=RXAI1f!6D3kN#^MXbC#7d&75$r48(f?+s7+eyA(Cf9S`( zYn?#{1a?TrZVoyleaPIgl)+TbLDr#{JAgglG1C>sD?1oS5DJ9q48C63xQ0V9Cv0u( z56%L{W4|0HiG2N(rn!ylh4gFD8Aeh6l}oI4eb4yDlPG%Zc-~b - - + inkscape:snap-smooth-nodes="true" + inkscape:document-rotation="0"> + diff --git a/app/ui/style/olive-light/png/new.128.png b/app/ui/style/olive-light/png/new.128.png index 867ee45205b5d7fcd3f50327300d48287b0ef904..3f20d71e544ffa17b829e7c15f88106dfafe56f1 100644 GIT binary patch delta 1124 zcmbQj*~c|OWunQ9dKMc`7srr_IdAX!XG@1m9DVpX?q-`*%qBs_&{ma#;4?MTbG%n@v}f1&nns(IrCSA~`(7ku|Ql{e}n&o)u~wy3Er(4cTxqtxBoz08U?CZ#>=TlZ|< z=jihpaewT3T8`H`V~A1-){(T98fh>6ll;+a#Ua_PI6FS;65em_%xrj z-)-^r&^~^}n((hurAC|Cb@%`K^5@T=+b>IgrO&<|S-Oi^Cvsgm6XS}2J`R=zNjnu6 zunIWMFtaG%uyNx@gZ6axEew0U+cRc-YSilnapn}KZ@!r$&nxicLzx3Ng8)-~gA9WL z%NGWQJQk(`L2V|+9~y2fOdmXRI9MJ`ngMi|=tc#B21`RA!TPk%fnl0PIt$Z=l$}Zf z4P3DbKP-8USBcha5!}Bq4`?Y1{+2Ne})sM zIS>54!d$X3hoME_-jaC>yHlADoT>A-bruK86f@K>nYTC_C{%4f`)t~N2M(>NybKHl z=k^+Ju6_SE*0`Fn)*vRL>^#$+@5aW}&-T_&d-N;!|I$e}QcKwbt_m}JVgXrG53~oy zrY|$kM((~KL;a;=k3Y&XFdewj{*<|jd%^3+Pnnqz0&*tonF7p@{~0TtJAKU0ww5sffv2mV%Q~loCII)<_NV{= delta 999 zcmeCS|IwmU4u4mrl>EaktG3V`FfA5e)k>ekW=LISr%rN%w zJ#3KBdguEivn9UWRg!Nvr_NT0Vo{RZ@=4XTRB|za-OtV-Ye+2pltr- zz2ATSwad0WfAD8f`Uk5%4#9^(@0q(6&Cohsbn%Rs%ad&#F(2)WCngJ4=BH&F8yl}T zH#e`Zzp{4%`*nu4!w++MKDKt8sh;;)K4OR;6@9i;;92VX4h&2PFs5NlX<@6)W<&2`H!S6+Sn zHSgM953YIP4Vmk2mKtxq_vFbFFFwH?tP^&}C?zn6J`t#AWL~l2t)M{z%Pkp3W{)Ln z1$X?_sxXjv6Z7o#**E(xYt;u_oqq1KySlpicelkC)6W+NJrq^gxGk1bqM_N$^#H@1 zEvigx1$@TRp+D~3J96Ym(d75C1`WkWB;>n2riz#J?khjQa8A(4LZ<(?caUO}nmtgK z`-CM>kK<0a0}SZ{PXbP!@DWoa}6JwT8M}K@7i(s<&qnTjxN)*`G3`O$1z4Zgubsho5rB~;HO_U z8$%ysLo&ky0cMMJ)s1S6+y~CsUES+E`2g#JRr#;)E%X#%u25H!e|2xM<^!e zKL#hVC^1Piba-$)^a!1v)N?+h)VU#E;?O;ApnPbl?Xewk$A8}Yzw*fdDVh;qf9_$J%Hpe8}+3wMtzpS?{9O_hvqCCbGugcfo%n123bJ2u>8r%zCOu>OLwmZ0}yz+`njxgN@xNAjO(AO diff --git a/app/ui/style/olive-light/png/new.16.png b/app/ui/style/olive-light/png/new.16.png index 1d478fe4c5f105447ffd69a211a7238877f9dbba..dbdf400b2553c50c12f070ee3c27e081a2094c7d 100644 GIT binary patch delta 283 zcmV+$0p$M71G)o{BoYa5NLh0L00Xc900XcAC&Uk}kw%Aq=t)FDR5*?8lOayUKomvK zodGt0_=cvX1o;KO78H0^fMEf!1QZI5!V>IX2|EB)9I1n#Iu`*YpN2LxSWfcH%eyD@ zGBX0m^L$UzIUv6C*0$|cUDuBc5C9|{*xm;=y0SgDeH22t&9ZD~RM3%9y6#HS15g7R zlZ2m|9g?1YZC?V!81Krm+?^yyDa|C!fqUDVDW#kK%-T@cb}eZEoUZh?rU;h6^6RJ} z9NIpaw8C%r7yMCB6vbKp8n;L0XZ hfEeSG?c**C@D3hkSmKmc&Po6P002ovPDHLkV1lDoeb)d0 delta 302 zcmV+}0nz@t1Iz=EBq9WJLP=Bz2nYy#2xN!=000SaNLh0L00XfA00XfB^@Ht6kv4~a z>PbXFR5*?8k}*m{K@f)jnI{2@fMBIy*nLep4=-tL5Y7NR131MlA~|c@c7X!E6%QqiB%K530qBto zl5XAoErf8_CCJQ4PDxJPeYrVX0hpA3Bqc$KR{-w-CNakQqXm*~NPbG9q?fv`2l?)# zqjzm)Nz#LvWf@3b0BAb}Bv$~&IXANbfTyFMaEO1w9|-ooQPLHFs#GlLGVjBlAf@!< z?l7~*uBjxybG)OAFS~4s>8K00000NkvXXu0mh|f+X*L A$p8QV diff --git a/app/ui/style/olive-light/png/new.32.png b/app/ui/style/olive-light/png/new.32.png index c63d512f7c43fa7f2cfdb76e670401c4813038e4..d02612005faa6f025605ea5e3cfdc03b22a2756c 100644 GIT binary patch delta 389 zcmV;00eb$g1fv9yBoYa5NLh0L00&_J00&_KmBYBUkw%AqQAtEWR9J=WmmyLEK@de> z?|?vYgWZlra0DC@mk2~m4v-4~2EjRyRAER(fZ`CGU?>cZ!eF4LF-g_dCOg^LO)6%; z>zSVZuXDBAp;Q1C$_Uz;hWQ&-3d|XKRPBiOg&)BI5%gk4t#1~{+%00000NkvXXu0mjfqA94d delta 401 zcmV;C0dD@I1g`{;Bq9WJLP=Bz2nYy#2xN!=000SaNLh0L00&|K00&|LIC`1ekv4~a zO-V#SR9J=Wm!VF?KoExinGoc05><8$Ifc6?Kp_B&Av_H@JnC`;i$h%q4*>}zs0}Ak zoF?5L0iu*$y4yBj`m1(kcIL~>Hro}1rN)?j0Gkp2H<2t=_0~D}k`iB)gp9_RLz3s2 zx!y>gESJm2oJAV3Z)Fw-fU$^NS!;KHau%&M1&GK)S(Z;BpQ;|!Oe638tSE})PBa1l zxEGPTh_4E;0&p* zF|*bNzpRu^m?ROI*FdVTW0HFSF6!&LcHliDc0FY51mL~D&V=}(P9qSJ1<6HZ%&)4u zB#(c~(fcOM)c`O63;+Yb05AajJ3z{DJQ0z$Xa1x!0LdwUX`AY`-?E@$BgnpFCMcLQ vcsT_i#+U<=+kI44)o1724S?pB{Ixy+>)LySZ+Ut<00000NkvXXu0mjf>7c3; diff --git a/app/ui/style/olive-light/png/new.64.png b/app/ui/style/olive-light/png/new.64.png index 7f64611647f3a84917540d0149ef666f18e36f13..02178dbe3002a50f02f925eac156325c8c709081 100644 GIT binary patch delta 642 zcmV-|0)74N1)c_wBoYa5NLh0L01m?d01m?e$8V@)kw%AqOi4sRRCt{2n?H`zKop0+ zNx)ldN<$SXF4BcAw5u(+0B{02s1_lPu?^cGA`ozcZ6hHngv15XsFJOu7KsJ#F#d%fPpY&J_B%wLFZ z-ar&ZFM+3jz_Fv+$H4tGP4D&l{poVK%pBFR(y@#^@|59pyCljWJJ37g6eCnfr|~U!o{_HlNRbl&w{k zMy-G=e69p(0pIcllu{?#?e_I(G>TjX5EY=5daIOw`f9nw`4K59Kx>@=?`;xXZwKiu zATB{%0LV&cgaD9}&=>(ABcV|O;J1Vicse2*CjdZe{ZlFR4vPffbhFt!uUqR@-3jVo z`-yCfDKf=l;Ji+TMy`Mo+^IXkO&3rbUjmk%>XgQd0Il_BA9bqW^TrKZN1Y1KK({;5)w@DP*^AWaY;9YC5OKstalL4b4sX@UUh0MY~j z(gCCi0;B^-69h;HkR}L_4j@esARR!OAV4~RG(muL07;T0Icu$eBuUPIb_%#^9$L5s zt~U=Y6YzKQ&>{i5nunGM$ZH-dydHP;n%Wg*w&vl$SHS<8hXWQ+qaFENC;NxLi?V*mgE07*qoM6N<$f;ICUtN;K2 delta 594 zcmbQo_KtOeiV{n)lV=DA5Y%v_bTBY5a29w(7BevL9RXp+soH$f6V2M|c|2VlLn`LH zow?CZ+EJkG|HhMn4?cOMp6s<=UL56ekeg**gI)>8M+uV)E*l*h%@=HKSrMQTcVKQj zL-e{gYUz2?xwtu>A5q!!$Z{-evM(PO=HULR_|Y* zr&F|a<@bB{RXvLgWcdDPRErA!Ww8;?5=s&&_`h9RX_M*v^YtZGbC;}1yT~apu~_hD zeQZF`D?!P*49{cu9)wS9G1~52!qkwZ>Y~Z8!p~_7kg4LL%fO+pSjBk2>5wXu%tUQP z28KDs{YpiROq>kc(l_5+n09yT|L#yb*Yzjv{oby#k^RAwwSU9Xm_%~2y6!J#5cOe9 zPI}L3!gy|HblCgp7v!40R{d2wUwkENtE|TN`rMfpSS+3w3BIg;|NH;0wr`718NE?F z!FS*o%Le8RhKz3*a(o!98Ki{|kS^r)(>Cr{ewLVg9g|PPraBQ7*PS*QU0a#fP5sIf zA{okb$;6gb^@8)9$p%apyf1(0kv(D%)}g+=WXYG7%{g7b6vN=@>gTe~DWM4fcX#^) diff --git a/app/ui/style/olive-light/svg/new.svg b/app/ui/style/olive-light/svg/new.svg index 482ad42da..f600b7e82 100644 --- a/app/ui/style/olive-light/svg/new.svg +++ b/app/ui/style/olive-light/svg/new.svg @@ -1,6 +1,4 @@ - - + inkscape:snap-smooth-nodes="true" + inkscape:document-rotation="0"> +