diff --git a/README.rst b/README.rst index eed1b84f..79fae51a 100644 --- a/README.rst +++ b/README.rst @@ -26,7 +26,7 @@ Currently FFmpeg 8.1 is built with the following packages enabled for all platfo - openh264 2.6.0 - opencore-amr 0.1.6 - x264 32c3b801191522961102d4bea292cdb61068d0dd -- x265 4.1 +- x265 4.2 The following additional packages are also enabled on Linux: diff --git a/patches/vorbis.patch b/patches/vorbis.patch deleted file mode 100644 index 0670c46a..00000000 --- a/patches/vorbis.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -urN libvorbis-1.3.7.orig/configure libvorbis-1.3.7/configure ---- libvorbis-1.3.7.orig/configure 2020-07-04 08:20:13.000000000 +0200 -+++ libvorbis-1.3.7/configure 2024-05-21 08:24:01.069006435 +0200 -@@ -12840,9 +12840,9 @@ - CFLAGS="-O3 -Wall -Wextra -ffast-math -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" - PROFILE="-pg -g -O3 -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" ;; - *-*-darwin*) -- DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char" -- CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O3 -ffast-math -fsigned-char" -- PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O3 -ffast-math -fsigned-char";; -+ DEBUG="-DDARWIN -fno-common -Wall -g -O0 -fsigned-char" -+ CFLAGS="-DDARWIN -fno-common -Wall -g -O3 -ffast-math -fsigned-char" -+ PROFILE="-DDARWIN -fno-common -Wall -g -pg -O3 -ffast-math -fsigned-char";; - *-*-os2*) - # Use -W instead of -Wextra because gcc on OS/2 is an old version. - DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" diff --git a/patches/x265.patch b/patches/x265.patch deleted file mode 100644 index f2f4b49c..00000000 --- a/patches/x265.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt -index 95218f5dc..488fd0d7d 100755 ---- a/source/CMakeLists.txt -+++ b/source/CMakeLists.txt -@@ -6,18 +6,12 @@ if(NOT CMAKE_BUILD_TYPE) - FORCE) - endif() - message(STATUS "cmake version ${CMAKE_VERSION}") --if(POLICY CMP0025) -- cmake_policy(SET CMP0025 OLD) # report Apple's Clang as just Clang --endif() - if(POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH - endif() --if(POLICY CMP0054) -- cmake_policy(SET CMP0054 OLD) # Only interpret if() arguments as variables or keywords when unquoted --endif() - - project (x265) --cmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8 -+cmake_minimum_required (VERSION 4.2.1) # OBJECT libraries require 2.8.8 - include(CheckIncludeFiles) - include(CheckFunctionExists) - include(CheckSymbolExists) -@@ -141,6 +135,9 @@ endif() - if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - set(CLANG 1) - endif() -+if(${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") -+ set(CLANG 1) -+endif() - if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") - set(INTEL_CXX 1) - endif() diff --git a/scripts/build-ffmpeg.py b/scripts/build-ffmpeg.py index 61616c40..2393ebf8 100644 --- a/scripts/build-ffmpeg.py +++ b/scripts/build-ffmpeg.py @@ -1,12 +1,14 @@ import argparse import concurrent.futures import glob +import gzip import hashlib import os import platform import shutil import subprocess import sys +import tarfile from cibuildpkg import Builder, Package, fetch, log_group, run @@ -148,8 +150,8 @@ def calculate_sha256(filename: str) -> str: ), Package( name="x265", - source_url="https://bitbucket.org/multicoreware/x265_git/downloads/x265_4.1.tar.gz", - sha256="a31699c6a89806b74b0151e5e6a7df65de4b49050482fe5ebf8a4379d7af8f29", + source_url="https://bitbucket.org/multicoreware/x265_git/downloads/x265_4.2.tar.gz", + sha256="40b1ea0453e0309f0eba934e0ddf533f8f6295966679e8894e8f1c1c8d5e1210", build_system="cmake", source_dir="source", ), @@ -484,9 +486,30 @@ def main(): else: run(["strip", "-s"] + libraries) - # build output tarball + # build output tarball (reproducible: fixed timestamps, sorted entries) os.makedirs(output_dir, exist_ok=True) - run(["tar", "czvf", output_tarball, "-C", dest_dir, "bin", "include", "lib"]) + with gzip.GzipFile(output_tarball, "wb", mtime=0) as gz: + with tarfile.open(fileobj=gz, mode="w|") as tar: + for subdir in ("bin", "include", "lib"): + subdir_path = os.path.join(dest_dir, subdir) + if not os.path.exists(subdir_path): + continue + for root, dirs, files in os.walk(subdir_path): + dirs.sort() + for name in sorted(files): + filepath = os.path.join(root, name) + arcname = os.path.relpath(filepath, dest_dir) + info = tar.gettarinfo(filepath, arcname=arcname) + info.mtime = 0 + info.uid = 0 + info.gid = 0 + info.uname = "" + info.gname = "" + if info.issym() or info.islnk(): + tar.addfile(info) + else: + with open(filepath, "rb") as f: + tar.addfile(info, f) if __name__ == "__main__":