diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/ISSUE_TEMPLATE/1_dont_ignore.md | 16 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/2_bug_report_linux.md | 49 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/2_bug_report_macos.md | 51 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/2_bug_report_windows.md | 47 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/3_bug_report.md | 43 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/4_bug_report_build.md | 30 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/5_feature_request.md | 22 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/6_question.md | 25 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/config.yml | 9 | ||||
-rw-r--r-- | .github/PULL_REQUEST_TEMPLATE | 5 | ||||
-rw-r--r-- | .github/workflows/build.yml | 292 | ||||
-rw-r--r-- | .github/workflows/comment.yml | 58 | ||||
-rw-r--r-- | .github/workflows/docs.yml | 24 | ||||
-rw-r--r-- | .github/workflows/lint.yml | 22 |
14 files changed, 693 insertions, 0 deletions
diff --git a/.github/ISSUE_TEMPLATE/1_dont_ignore.md b/.github/ISSUE_TEMPLATE/1_dont_ignore.md new file mode 100644 index 0000000..578d560 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1_dont_ignore.md @@ -0,0 +1,16 @@ +--- +name: 'README: DO NOT IGNORE OR DELETE THE ISSUE TEMPLATE' +about: 'Chose and fill out one of the following templates!' +title: '' +labels: priority:ignored-issue-template +assignees: '' + +--- + +We ask you to not ignore the issue template. Fill it out as good and correct as +possible. Issues that don't adhere to our request will be closed for ignoring +the issue template. This is because analyzing a bug without a log file is harder +than necessary. Low quality bug reports are noise. + +Please go back and chose the proper issue template. Opening issues with this +template will be closed immediately. diff --git a/.github/ISSUE_TEMPLATE/2_bug_report_linux.md b/.github/ISSUE_TEMPLATE/2_bug_report_linux.md new file mode 100644 index 0000000..6faaf85 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2_bug_report_linux.md @@ -0,0 +1,49 @@ +--- +name: 'Report a Linux Issue' +about: 'Create a report for a runtime related Linux Issue' +title: '' +labels: 'os:linux' +assignees: '' + +--- + +### Important Information + +Provide following Information: +- mpv version +- Linux Distribution and Version +- Source of the mpv binary +- If known which version of mpv introduced the problem +- Window Manager and version +- GPU driver and version +- Possible screenshot or video of visual glitches + +If you're not using git master or the latest release, update. +Releases are listed here: https://github.com/mpv-player/mpv/releases + +### Reproduction steps + +Try to reproduce your issue with --no-config first. If it isn't reproducible +with --no-config try to first find out which option or script causes your issue. + +Describe the reproduction steps as precise as possible. It's very likely that +the bug you experience wasn't reproduced by the developer because the workflow +differs from your own. + +### Expected behavior + +### Actual behavior + +### Log file + +Make a log file made with -v -v or --log-file=output.txt, paste it to +https://0x0.st/ or attach it to the github issue, and replace this text with a +link to it. + +The issue will be closed for ignoring the issue template. + +### Sample files + +Sample files needed to reproduce this issue can be uploaded to https://0x0.st/ +or similar sites. (Only needed if the issue cannot be reproduced without it.) +Do not use garbage like "cloud storage", especially not Google Drive. diff --git a/.github/ISSUE_TEMPLATE/2_bug_report_macos.md b/.github/ISSUE_TEMPLATE/2_bug_report_macos.md new file mode 100644 index 0000000..809ea39 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2_bug_report_macos.md @@ -0,0 +1,51 @@ +--- +name: 'Report a macOS Issue' +about: 'Create a report for a runtime related macOS Issue' +title: '' +labels: 'os:mac' +assignees: '' + +--- + +### Important Information + +Provide following Information: +- mpv version +- macOS Version +- Source of the mpv binary or bundle +- If known which version of mpv introduced the problem +- Possible screenshot or video of visual glitches + +If you're not using git master or the latest release, update. +Releases are listed here: https://github.com/mpv-player/mpv/releases + +### Reproduction steps + +Try to reproduce your issue with --no-config first. If it isn't reproducible +with --no-config try to first find out which option or script causes your issue. + +Describe the reproduction steps as precise as possible. It's very likely that +the bug you experience wasn't reproduced by the developer because the workflow +differs from your own. + +### Expected behavior + +### Actual behavior + +### Log file + +Make a log file made with -v -v or --log-file=output.txt. If you use the Bundle +from a version later than 0.32 a default log is created for your last run at +~/Library/Logs/mpv.log. You can jump to that file via the Help > Show log Fileā¦ +menu. Paste the log to https://0x0.st/ or attach it to the github issue, and +replace this text with a link to it. + +In the case of a crash please provide the macOS Crash Report (Backtrace). + +The issue will be closed for ignoring the issue template. + +### Sample files + +Sample files needed to reproduce this issue can be uploaded to https://0x0.st/ +or similar sites. (Only needed if the issue cannot be reproduced without it.) +Do not use garbage like "cloud storage", especially not Google Drive. diff --git a/.github/ISSUE_TEMPLATE/2_bug_report_windows.md b/.github/ISSUE_TEMPLATE/2_bug_report_windows.md new file mode 100644 index 0000000..b42c385 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2_bug_report_windows.md @@ -0,0 +1,47 @@ +--- +name: 'Report a Windows Issue' +about: 'Create a report for a runtime related Windows Issue' +title: '' +labels: 'os:win' +assignees: '' + +--- + +### Important Information + +Provide following Information: +- mpv version +- Windows Version +- Source of the mpv binary +- If known which version of mpv introduced the problem +- Possible screenshot or video of visual glitches + +If you're not using git master or the latest release, update. +Releases are listed here: https://github.com/mpv-player/mpv/releases + +### Reproduction steps + +Try to reproduce your issue with --no-config first. If it isn't reproducible +with --no-config try to first find out which option or script causes your issue. + +Describe the reproduction steps as precise as possible. It's very likely that +the bug you experience wasn't reproduced by the developer because the workflow +differs from your own. + +### Expected behavior + +### Actual behavior + +### Log file + +Make a log file made with -v -v or --log-file=output.txt, paste it to +https://0x0.st/ or attach it to the github issue, and replace this text with a +link to it. + +The issue will be closed for ignoring the issue template. + +### Sample files + +Sample files needed to reproduce this issue can be uploaded to https://0x0.st/ +or similar sites. (Only needed if the issue cannot be reproduced without it.) +Do not use garbage like "cloud storage", especially not Google Drive. diff --git a/.github/ISSUE_TEMPLATE/3_bug_report.md b/.github/ISSUE_TEMPLATE/3_bug_report.md new file mode 100644 index 0000000..60df58d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3_bug_report.md @@ -0,0 +1,43 @@ +--- +name: 'Report a different Issue' +about: 'Create a report for a runtime related Issue' +title: '' +labels: '' +assignees: '' + +--- + +### Important Information + +Provide following Information: +- mpv version +- Platform and Version +- Source of the mpv binary + +If you're not using git master or the latest release, update. +Releases are listed here: https://github.com/mpv-player/mpv/releases + +### Reproduction steps + +Try to reproduce your issue with --no-config first. If it isn't reproducible +with --no-config try to first find out which option or script causes your issue. + +Describe the reproduction steps as precise as possible. It's very likely that +the bug you experience wasn't reproduced by the developer because the workflow +differs from your own. + +### Expected behavior + +### Actual behavior + +### Log file + +Make a log file made with -v -v or --log-file=output.txt, paste it to +https://0x0.st/ or attach it to the github issue, and replace this text with a +link to it. + +### Sample files + +Sample files needed to reproduce this issue can be uploaded to https://0x0.st/ +or similar sites. (Only needed if the issue cannot be reproduced without it.) +Do not use garbage like "cloud storage", especially not Google Drive. diff --git a/.github/ISSUE_TEMPLATE/4_bug_report_build.md b/.github/ISSUE_TEMPLATE/4_bug_report_build.md new file mode 100644 index 0000000..e8697f0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4_bug_report_build.md @@ -0,0 +1,30 @@ +--- +name: 'Report a build Problem' +about: 'Create a report for a build related Issue' +title: '' +labels: 'core:meson' +assignees: '' + +--- + +### mpv version and platform versions + +If you're not using git master or the latest release, update. +Releases are listed here: https://github.com/mpv-player/mpv/releases + +### Reproduction steps + +Describe the reproduction steps as precise as possible. It's very likely that +the bug you experience wasn't reproduced by the developer because the workflow +differs from your own. + +### Expected behavior + +### Actual behavior + +### Log file + +Upload meson-logs/meson-log.txt or meson setup build output to https://0x0.st/ or attach +it to the github issue, and replace this text with a link to it. + +The issue will be closed for ignoring the issue template. diff --git a/.github/ISSUE_TEMPLATE/5_feature_request.md b/.github/ISSUE_TEMPLATE/5_feature_request.md new file mode 100644 index 0000000..2fba2ba --- /dev/null +++ b/.github/ISSUE_TEMPLATE/5_feature_request.md @@ -0,0 +1,22 @@ +--- +name: 'Request a new Feature' +about: 'Create a request for a new feature' +title: '' +labels: 'meta:feature-request' +assignees: '' + +--- + +Before requesting a new feature make sure it hasn't been requested yet. +https://github.com/mpv-player/mpv/labels/meta%3Afeature-request + +### Expected behavior of the wanted feature + +### Alternative behavior of the wanted feature + +### Log file + +Even if you think it's not necessary at first, it might help us later to find +possible issues. Make a log file made with -v -v or --log-file=output.txt, paste +it to https://0x0.st/ or attach it to the github issue, and replace this text +with a link to it. diff --git a/.github/ISSUE_TEMPLATE/6_question.md b/.github/ISSUE_TEMPLATE/6_question.md new file mode 100644 index 0000000..b6131f3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/6_question.md @@ -0,0 +1,25 @@ +--- +name: 'Ask a Question' +about: 'Ask a question about mpv' +title: '' +labels: 'meta:question' +assignees: '' + +--- + +Don't ask questions about issues, errors or problems you have and instead open +a proper issue with the right template from the previous selection. + +This template is meant for questions about the workings of mpv, to clarify about +unspecified behaviour of options or command, or anything else that is not well +described and needs clarification. + +Before asking a question make sure it hasn't been asked or answered yet. +https://github.com/mpv-player/mpv/labels/meta%3Aquestion + +### Log file + +Even if you think it's not necessary at first, it might help us later to find +possible issues. Make a log file made with -v -v or --log-file=output.txt, paste +it to https://0x0.st/ or attach it to the github issue, and replace this text +with a link to it. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..536ac9c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,9 @@ +blank_issues_enabled: false +contact_links: + - name: mpv IRC channel + url: https://mpv.io/community/ + about: Feel free to ask questions here irc://irc.libera.chat/mpv + - name: mpv IRC developer channel + url: https://mpv.io/community/ + about: Ask questions related to the development of mpv here + irc://irc.libera.chat/mpv-devel diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE new file mode 100644 index 0000000..6c721d5 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE @@ -0,0 +1,5 @@ +Read this before you submit this pull request: +https://github.com/mpv-player/mpv/blob/master/DOCS/contribute.md + +Reading this link and following the rules will get your pull request reviewed +and merged faster. Nobody wants lazy pull requests.
\ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..ddbfd90 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,292 @@ +name: build + +on: + push: + branches: + - master + - ci + - 'release/**' + paths-ignore: + - 'DOCS/**' + - 'TOOLS/lua/**' + pull_request: + branches: [master] + paths-ignore: + - 'DOCS/**' + - 'TOOLS/lua/**' + +jobs: + mingw: + runs-on: ubuntu-22.04 + env: + CCACHE_BASEDIR: ${{ github.workspace }} + CCACHE_DIR: ${{ github.workspace }}/.ccache + CCACHE_MAXSIZE: 500M + 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 dpkg --add-architecture i386 + sudo apt-get update + sudo apt-get install -y autoconf automake pkg-config g++-mingw-w64 gcc-multilib python3-pip ninja-build nasm wine wine32 wine64 ccache + sudo python3 -m pip install meson + + - name: Build libraries + run: | + ./ci/build-mingw64.sh + env: + TARGET: ${{ matrix.target }} + + - name: Build with meson + id: build + run: | + ./ci/build-mingw64.sh meson pack + env: + TARGET: ${{ matrix.target }} + + - name: Print meson log + if: ${{ failure() && steps.build.outcome == 'failure' }} + run: | + cat ./build/meson-logs/meson-log.txt + + - name: Functional test + id: tests + run: | + cd artifact && wine64 ./mpv.com -v --no-config + env: + WINEDEBUG: '+loaddll' + + - uses: actions/upload-artifact@v3 + with: + name: mpv-${{ matrix.target }} + path: mpv-git-*.zip + + macos: + runs-on: ${{ matrix.os }} + strategy: + matrix: + cc: + - "clang" + cxx: + - "clang++" + os: + - "macos-12" + - "macos-13" + 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 libplacebo + + - name: Build with meson + id: build + run: | + ./ci/build-macos.sh + env: + CC: "${{ matrix.cc }}" + CXX: "${{ matrix.cxx }}" + 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 + + linux: + runs-on: "ubuntu-22.04" + container: + image: "registry.opensuse.org/home/mia/images/images/mpv-ci:stable-deps" + env: + CC: "${{ matrix.config.cc }}" + CXX: "${{ matrix.config.cxx }}" + strategy: + matrix: + config: + - { + cc: "gcc", + cxx: "g++", + } + - { + cc: "clang", + cxx: "clang++", + } + steps: + - uses: actions/checkout@v3 + + - name: Install dependencies + run: | + # 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 + + - 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 + + freebsd: + runs-on: ubuntu-latest # until https://github.com/actions/runner/issues/385 + timeout-minutes: 30 # avoid any weirdness with the VM + steps: + - uses: actions/checkout@v3 + - name: Test in FreeBSD VM + uses: cross-platform-actions/action@v0.19.1 + with: + operating_system: freebsd + version: '13.2' + run: | + sudo pkg update + sudo pkg install -y \ + alsa-lib \ + cmake \ + evdev-proto \ + ffmpeg \ + git \ + iconv \ + jackit \ + libarchive \ + libbluray \ + libcaca \ + libcdio-paranoia \ + libdvdnav \ + libplacebo \ + libXinerama \ + libxkbcommon \ + libxpresent \ + libXv \ + luajit \ + meson \ + mujs \ + openal-soft \ + pipewire \ + pkgconf \ + pulseaudio \ + python3 \ + rubberband \ + sekrit-twc-zimg \ + sdl2 \ + sndio \ + uchardet \ + v4l_compat \ + vulkan-headers \ + wayland-protocols + ./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: + - name: Disable autocrlf + shell: pwsh + run: | + git config --global core.autocrlf false + git config --global core.eol lf + - 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 + meson:p + ninja:p + pkgconf:p + python: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: | + meson test -C build + + - name: Print meson test log + if: ${{ failure() && steps.tests.outcome == 'failure' }} + run: | + cat ./build/meson-logs/testlog.txt diff --git a/.github/workflows/comment.yml b/.github/workflows/comment.yml new file mode 100644 index 0000000..7f9603a --- /dev/null +++ b/.github/workflows/comment.yml @@ -0,0 +1,58 @@ +name: comment + +on: + workflow_run: + workflows: ["build"] + types: [completed] + +jobs: + pr_comment: + if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@v6 + with: + script: | + const { owner, repo } = context.repo; + const run_id = ${{ github.event.workflow_run.id }}; + const pull_head_sha = '${{github.event.workflow_run.head_sha}}'; + + const issue_number = await(async () => { + const pulls = await github.rest.pulls.list({ owner, repo }); + for await (const { data } of github.paginate.iterator(pulls)) { + for (const pull of data) { + if (pull.head.sha === pull_head_sha) { + return pull.number; + } + } + } + })(); + if (issue_number) { + core.info(`Using pull request ${issue_number}`); + } else { + return core.error(`No matching pull request found`); + } + + const { data: { artifacts } } = await github.rest.actions.listWorkflowRunArtifacts({ owner, repo, run_id }); + if (!artifacts.length) { + return core.error(`No artifacts found`); + } + + let body = `Download the artifacts for this pull request:\n\n<details><summary>Windows</summary>\n`; + for (const art of artifacts) { + const art_link = `https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip`; + if (art.name.includes('w64')) { + body += `\n* [${art.name}](${art_link})`; + } + } + body += `\n</details>`; + + const { data: comments } = await github.rest.issues.listComments({ repo, owner, issue_number }); + const existing_comment = comments.find((c) => c.user.login === 'github-actions[bot]'); + if (existing_comment) { + core.info(`Updating comment ${existing_comment.id}`); + await github.rest.issues.updateComment({ repo, owner, comment_id: existing_comment.id, body }); + } else { + core.info(`Creating a comment`); + await github.rest.issues.createComment({ repo, owner, issue_number, body }); + } diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..d1fcb5c --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,24 @@ +name: docs + +on: + push: + branches: + - master + - ci + - 'release/**' + paths: + - 'DOCS/**' + pull_request: + branches: [master] + paths: + - 'DOCS/**' + +jobs: + check-docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Docs + run: | + sudo apt-get install python3-docutils + rst2man --strip-elements-with-class=contents --halt=2 ./DOCS/man/mpv.rst mpv.1 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..939255e --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,22 @@ +name: lint + +on: + push: + branches: + - master + - ci + - 'release/**' + pull_request: + branches: [master] + +jobs: + commit-msg: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 50 + + - name: Lint + run: | + ./ci/lint-commit-msg.py |