Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: CI Test

on:
push:
branches:
- ci
workflow_dispatch:
inputs:
version:
description: 'Release tag name (default mpv version)'
default: ''

jobs:
build:
permissions:
contents: write
runs-on: macos-14
steps:
- uses: actions/checkout@v4

- name: Check version to release
uses: jannekem/run-python-script-action@v1
with:
script: |
import re

def normalize_version(version_string):
version_string = re.sub(r'[^.0-9]+|-.+', '', version_string)
parts = re.split(r'\.', version_string)
major = int(parts[0])
minor = int(parts[1]) if len(parts) > 1 else 0
patch = int(parts[2]) if len(parts) > 2 else 0
return f"{major}.{minor}.{patch}"

file_path = './Sources/BuildScripts/XCFrameworkBuild/main.swift'
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()

mpvVersion = re.search(r'(case .libmpv[^"]+?)"(.+?)"', content).group(2)
ffmpegVersion = re.search(r'(case .FFmpeg[^"]+?)"(.+?)"', content).group(2)
libplaceboVersion = re.search(r'(case .libplacebo[^"]+?)"(.+?)"', content).group(2)
vulkanVersion = re.search(r'(case .vulkan[^"]+?)"(.+?)"', content).group(2)

print(f'mpv version: {mpvVersion}')
print(f'ffmpeg version: {ffmpegVersion}')
releaseVersion = '${{ github.event.inputs.version }}' or normalize_version(mpvVersion)
print(f'release version: {releaseVersion}')
set_env('BUILD_VERSION', mpvVersion)
set_env('RELEASE_VERSION', releaseVersion)

with open('/tmp/RELEASE_NOTE.txt', 'w', encoding='utf-8') as file:
file.write(f'''
* mpv version: {mpvVersion} ([changelog](https://github.com/mpv-player/mpv/releases/tag/{mpvVersion}))
* ffmpeg version: {ffmpegVersion} ([changelog](https://github.com/FFmpeg/FFmpeg/blob/{ffmpegVersion}/Changelog))
* placebo version: v{libplaceboVersion}
* MoltenVK version: v{vulkanVersion}
''')


- name: Install dependencies
run: |
brew install autoconf
brew install automake
brew install libtool
python -m pip install meson==1.4.2
brew install ninja
brew install rename

- name: Setup Xcode to support visionOS
run: |
sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer
xcodebuild -showsdks

- name: Build GPL version
run: |
make build enable-gpl version=${{ env.RELEASE_VERSION }} platform=maccatalyst,xros,ios,macos

cd ./dist/release
rename 's/-all\.zip/-GPL-all\.zip/' *-all.zip
rename 's/\.xcframework\.zip/-GPL\.xcframework\.zip/' *.xcframework.zip
rename 's/\.xcframework\.checksum\.txt/-GPL\.xcframework\.checksum\.txt/' *.xcframework.checksum.txt
14 changes: 14 additions & 0 deletions Sources/BuildScripts/XCFrameworkBuild/base.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1185,6 +1185,20 @@ enum Utility {
if let logURL = logURL {
// print log when run in GitHub Action
if ProcessInfo.processInfo.environment.keys.contains("GITHUB_ACTION") {
// if build FFmpeg failed, print the ffbuild/config.log content
if logURL.path.contains("FFmpeg") {
let ffbuildLogURL = logURL
.deletingPathExtension()
.appendingPathComponent("ffbuild/config.log")
if FileManager.default.fileExists(atPath: ffbuildLogURL.path) {
if let content = String(data: try Data(contentsOf: ffbuildLogURL), encoding: .utf8) {
print("############# \(ffbuildLogURL) CONTENT BEGIN #############")
print(content)
print("############# \(ffbuildLogURL) CONTENT END #############")
}
}
}

if let content = String(data: try Data(contentsOf: logURL), encoding: .utf8) {
print("############# \(logURL) CONTENT BEGIN #############")
print(content)
Expand Down
4 changes: 2 additions & 2 deletions Sources/BuildScripts/XCFrameworkBuild/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@ enum Library: String, CaseIterable {
case .lcms2:
return "7.349.0"
case .libplacebo:
return "7.351.0"
return "7.351.0-fix"
case .libdovi:
return "3.3.0"
case .vulkan:
return "1.4.0"
return "1.4.0-fix"
case .libshaderc: // compiling GLSL (OpenGL Shading Language) shaders into SPIR-V (Standard Portable Intermediate Representation - Vulkan) code
return "2025.4.0"
case .libuchardet:
Expand Down
Loading