From e65469d85b8043f557200011395656e3479eff42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Thu, 6 Jul 2023 23:27:57 +0200 Subject: [PATCH] ccache build test --- .github/workflows/build.yml | 488 +++++++++++++++++++----------------- ci/build-mingw64.sh | 11 +- 2 files changed, 258 insertions(+), 241 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 34c123d2e899c..08e10fc6d317a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,16 +12,30 @@ on: jobs: mingw: runs-on: ubuntu-22.04 + env: + CCACHE_BASEDIR: ${{ github.workspace }} + CCACHE_DIR: ${{ github.workspace }}/.ccache strategy: + fail-fast: false matrix: target: [i686-w64-mingw32, x86_64-w64-mingw32] steps: - uses: actions/checkout@v3 + - name: Get time + id: get_time + run: echo "timestamp=`date +%s%N`" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + with: + path: ${{ env.CCACHE_DIR }} + key: ${{ matrix.target }}-${{ steps.get_time.outputs.timestamp }} + restore-keys: ${{ matrix.target }}- + - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y autoconf automake pkg-config g++-mingw-w64 gcc-multilib python3-pip ninja-build nasm + sudo apt-get install -y autoconf automake pkg-config g++-mingw-w64 gcc-multilib python3-pip ninja-build nasm ccache wine sudo python3 -m pip install meson ./bootstrap.py @@ -60,239 +74,239 @@ jobs: name: mpv-${{ matrix.target }} path: mpv-git-*.zip - macos: - runs-on: ${{ matrix.os }} - strategy: - matrix: - cc: - - "clang" - os: - - "macos-11" - - "macos-12" - steps: - - uses: actions/checkout@v3 - - - name: Remove stray upstream python binary symlinks under /usr/local - run: | - find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete -print - brew unlink python && brew link --overwrite python - - - name: Install dependencies - run: | - brew update - brew install autoconf automake pkg-config libtool python freetype fribidi little-cms2 lua@5.1 libass ffmpeg meson - - - name: Build with meson - id: build - run: | - ./ci/build-macos.sh meson - env: - CC: "${{ matrix.cc }}" - TRAVIS_OS_NAME: "${{ matrix.os }}" - - - name: Print meson log - if: ${{ failure() && steps.build.outcome == 'failure' }} - run: | - cat ./build/meson-logs/meson-log.txt - - - name: Run meson tests - id: tests - run: | - meson test -C build - - - name: Print meson test log - if: ${{ failure() && steps.tests.outcome == 'failure' }} - run: | - cat ./build/meson-logs/testlog.txt - - - name: Build with waf - id: build_waf - run: | - ./ci/build-macos.sh waf - env: - CC: "${{ matrix.cc }}" - TRAVIS_OS_NAME: "${{ matrix.os }}" - - - name: Print waf log - if: ${{ failure() && steps.build_waf.outcome == 'failure' }} - run: | - cat ./build_waf/config.log - - linux: - runs-on: "ubuntu-22.04" - container: - image: "registry.opensuse.org/home/mia/images/images/mpv-ci:stable-deps" - env: - CC: "${{ matrix.cc }}" - strategy: - matrix: - cc: - - "gcc" - - "clang" - steps: - - uses: actions/checkout@v3 - - - name: Install dependencies - run: | - ./bootstrap.py - # workaround to avoid "fatal: unsafe repository" error - git config --global --add safe.directory "$GITHUB_WORKSPACE" - - - name: Build with meson - id: build - run: | - ./ci/build-tumbleweed.sh meson - - - name: Print meson log - if: ${{ failure() && steps.build.outcome == 'failure' }} - run: | - cat ./build/meson-logs/meson-log.txt - - - name: Run meson tests - id: tests - run: | - meson test -C build - - - name: Print meson test log - if: ${{ failure() && steps.tests.outcome == 'failure' }} - run: | - cat ./build/meson-logs/testlog.txt - - - name: Build with waf - id: build_waf - run: | - ./ci/build-tumbleweed.sh waf - - - name: Print waf log - if: ${{ failure() && steps.build_waf.outcome == 'failure' }} - run: | - cat ./build_waf/config.log - - freebsd: - runs-on: macos-12 # until https://github.com/actions/runner/issues/385 - steps: - - uses: actions/checkout@v3 - - name: Test in FreeBSD VM - uses: vmactions/freebsd-vm@v0 - with: - mem: 8192 - copyback: false - usesh: true - prepare: | - # Requested in ci/build-freebsd.sh - pkg install -y \ - cmake \ - evdev-proto \ - ffmpeg \ - libplacebo \ - libxkbcommon \ - libXinerama \ - libxpresent \ - luajit \ - meson \ - openal-soft \ - pkgconf \ - python3 \ - sdl2 \ - sndio \ - vulkan-headers \ - wayland-protocols \ - # - # Optionally auto-enabled - pkg install -y \ - alsa-lib \ - jackit \ - libXv \ - libarchive \ - libbluray \ - libcaca \ - libcdio-paranoia \ - libdvdnav \ - mujs \ - pipewire \ - pulseaudio \ - rubberband \ - sekrit-twc-zimg \ - uchardet \ - v4l_compat \ - # - run: | - ./ci/build-freebsd.sh - meson test -C build - - msys2: - runs-on: windows-latest - strategy: - fail-fast: false - matrix: - sys: - - clang32 - - clang64 - - mingw32 - - mingw64 - - ucrt64 - defaults: - run: - shell: msys2 {0} - steps: - - uses: actions/checkout@v3 - - uses: msys2/setup-msys2@v2 - with: - msystem: ${{ matrix.sys }} - update: true - install: git - pacboy: >- - angleproject:p - ca-certificates:p - cc:p - diffutils:p - ffmpeg:p - lcms2:p - libarchive:p - libass:p - libcdio-paranoia:p - libdvdnav:p - libjpeg-turbo:p - libplacebo:p - lua51:p - ninja:p - pkgconf:p - python3.11:p - rst2pdf:p - rubberband:p - shaderc:p - spirv-cross:p - uchardet:p - vapoursynth:p - vulkan:p - - - name: Build with meson - id: build - run: | - ./ci/build-msys2.sh meson - - - name: Print meson log - if: ${{ failure() && steps.build.outcome == 'failure' }} - run: | - cat ./build/meson-logs/meson-log.txt - - - name: Run meson tests - id: tests - run: | - source ./venv/bin/activate - meson test -C build - - - name: Print meson test log - if: ${{ failure() && steps.tests.outcome == 'failure' }} - run: | - cat ./build/meson-logs/testlog.txt - - - name: Build with waf - id: build_waf - run: | - ./ci/build-msys2.sh waf - - - name: Print waf log - if: ${{ failure() && steps.build_waf.outcome == 'failure' }} - run: | - cat ./build_waf/config.log + # macos: + # runs-on: ${{ matrix.os }} + # strategy: + # matrix: + # cc: + # - "clang" + # os: + # - "macos-11" + # - "macos-12" + # steps: + # - uses: actions/checkout@v3 + + # - name: Remove stray upstream python binary symlinks under /usr/local + # run: | + # find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete -print + # brew unlink python && brew link --overwrite python + + # - name: Install dependencies + # run: | + # brew update + # brew install autoconf automake pkg-config libtool python freetype fribidi little-cms2 lua@5.1 libass ffmpeg meson + + # - name: Build with meson + # id: build + # run: | + # ./ci/build-macos.sh meson + # env: + # CC: "${{ matrix.cc }}" + # TRAVIS_OS_NAME: "${{ matrix.os }}" + + # - name: Print meson log + # if: ${{ failure() && steps.build.outcome == 'failure' }} + # run: | + # cat ./build/meson-logs/meson-log.txt + + # - name: Run meson tests + # id: tests + # run: | + # meson test -C build + + # - name: Print meson test log + # if: ${{ failure() && steps.tests.outcome == 'failure' }} + # run: | + # cat ./build/meson-logs/testlog.txt + + # - name: Build with waf + # id: build_waf + # run: | + # ./ci/build-macos.sh waf + # env: + # CC: "${{ matrix.cc }}" + # TRAVIS_OS_NAME: "${{ matrix.os }}" + + # - name: Print waf log + # if: ${{ failure() && steps.build_waf.outcome == 'failure' }} + # run: | + # cat ./build_waf/config.log + + # linux: + # runs-on: "ubuntu-22.04" + # container: + # image: "registry.opensuse.org/home/mia/images/images/mpv-ci:stable-deps" + # env: + # CC: "${{ matrix.cc }}" + # strategy: + # matrix: + # cc: + # - "gcc" + # - "clang" + # steps: + # - uses: actions/checkout@v3 + + # - name: Install dependencies + # run: | + # ./bootstrap.py + # # workaround to avoid "fatal: unsafe repository" error + # git config --global --add safe.directory "$GITHUB_WORKSPACE" + + # - name: Build with meson + # id: build + # run: | + # ./ci/build-tumbleweed.sh meson + + # - name: Print meson log + # if: ${{ failure() && steps.build.outcome == 'failure' }} + # run: | + # cat ./build/meson-logs/meson-log.txt + + # - name: Run meson tests + # id: tests + # run: | + # meson test -C build + + # - name: Print meson test log + # if: ${{ failure() && steps.tests.outcome == 'failure' }} + # run: | + # cat ./build/meson-logs/testlog.txt + + # - name: Build with waf + # id: build_waf + # run: | + # ./ci/build-tumbleweed.sh waf + + # - name: Print waf log + # if: ${{ failure() && steps.build_waf.outcome == 'failure' }} + # run: | + # cat ./build_waf/config.log + + # freebsd: + # runs-on: macos-12 # until https://github.com/actions/runner/issues/385 + # steps: + # - uses: actions/checkout@v3 + # - name: Test in FreeBSD VM + # uses: vmactions/freebsd-vm@v0 + # with: + # mem: 8192 + # copyback: false + # usesh: true + # prepare: | + # # Requested in ci/build-freebsd.sh + # pkg install -y \ + # cmake \ + # evdev-proto \ + # ffmpeg \ + # libplacebo \ + # libxkbcommon \ + # libXinerama \ + # libxpresent \ + # luajit \ + # meson \ + # openal-soft \ + # pkgconf \ + # python3 \ + # sdl2 \ + # sndio \ + # vulkan-headers \ + # wayland-protocols \ + # # + # # Optionally auto-enabled + # pkg install -y \ + # alsa-lib \ + # jackit \ + # libXv \ + # libarchive \ + # libbluray \ + # libcaca \ + # libcdio-paranoia \ + # libdvdnav \ + # mujs \ + # pipewire \ + # pulseaudio \ + # rubberband \ + # sekrit-twc-zimg \ + # uchardet \ + # v4l_compat \ + # # + # run: | + # ./ci/build-freebsd.sh + # meson test -C build + + # msys2: + # runs-on: windows-latest + # strategy: + # fail-fast: false + # matrix: + # sys: + # - clang32 + # - clang64 + # - mingw32 + # - mingw64 + # - ucrt64 + # defaults: + # run: + # shell: msys2 {0} + # steps: + # - uses: actions/checkout@v3 + # - uses: msys2/setup-msys2@v2 + # with: + # msystem: ${{ matrix.sys }} + # update: true + # install: git + # pacboy: >- + # angleproject:p + # ca-certificates:p + # cc:p + # diffutils:p + # ffmpeg:p + # lcms2:p + # libarchive:p + # libass:p + # libcdio-paranoia:p + # libdvdnav:p + # libjpeg-turbo:p + # libplacebo:p + # lua51:p + # ninja:p + # pkgconf:p + # python3.11:p + # rst2pdf:p + # rubberband:p + # shaderc:p + # spirv-cross:p + # uchardet:p + # vapoursynth:p + # vulkan:p + + # - name: Build with meson + # id: build + # run: | + # ./ci/build-msys2.sh meson + + # - name: Print meson log + # if: ${{ failure() && steps.build.outcome == 'failure' }} + # run: | + # cat ./build/meson-logs/meson-log.txt + + # - name: Run meson tests + # id: tests + # run: | + # source ./venv/bin/activate + # meson test -C build + + # - name: Print meson test log + # if: ${{ failure() && steps.tests.outcome == 'failure' }} + # run: | + # cat ./build/meson-logs/testlog.txt + + # - name: Build with waf + # id: build_waf + # run: | + # ./ci/build-msys2.sh waf + + # - name: Print waf log + # if: ${{ failure() && steps.build_waf.outcome == 'failure' }} + # run: | + # cat ./build_waf/config.log diff --git a/ci/build-mingw64.sh b/ci/build-mingw64.sh index 0b3c930be10f8..5ec8e03a9cd2a 100755 --- a/ci/build-mingw64.sh +++ b/ci/build-mingw64.sh @@ -6,7 +6,7 @@ ln -snf . "$prefix_dir/usr" ln -snf . "$prefix_dir/local" wget="wget -nc --progress=bar:force" -gitclone="git clone --depth=10 --recursive" +gitclone="git clone --depth=1 --recursive" commonflags="--disable-static --enable-shared" export PKG_CONFIG_SYSROOT_DIR="$prefix_dir" @@ -18,7 +18,7 @@ export CXX=$TARGET-g++-posix export AR=$TARGET-ar export NM=$TARGET-nm export RANLIB=$TARGET-ranlib - + export CFLAGS="-O2 -pipe -Wall -D_FORTIFY_SOURCE=2" export LDFLAGS="-fstack-protector-strong" @@ -29,8 +29,8 @@ cat >"$prefix_dir/crossfile" <