This commit is contained in:
2025-09-07 09:19:43 -05:00
parent a63d9e3e65
commit 6be45728bd
4 changed files with 25 additions and 28 deletions

4
Jenkinsfile vendored
View File

@@ -18,7 +18,7 @@ pipeline {
stage('build docker image') { stage('build docker image') {
matrix { matrix {
axes { axes {
axis { name 'DISTRO'; values 'ubuntu-24.04', 'fedora-42', 'debian-13', 'archlinux-latest' } axis { name 'DISTRO'; values 'ubuntu', 'fedora', 'debian', 'arch' }
} }
stages { stages {
stage('build multiarch image') { stage('build multiarch image') {
@@ -52,7 +52,7 @@ pipeline {
matrix { matrix {
axes { axes {
axis { name 'ARCH'; values 'armv8-a', 'x86-64-v3' } axis { name 'ARCH'; values 'armv8-a', 'x86-64-v3' }
axis { name 'DISTRO'; values 'ubuntu-24.04', 'fedora-42', 'debian-13', 'archlinux-latest' } axis { name 'DISTRO'; values 'ubuntu', 'fedora', 'debian', 'arch' }
axis { name 'OPT_LTO'; values 'OPT=0 LTO=OFF', 'OPT=3 LTO=ON' } axis { name 'OPT_LTO'; values 'OPT=0 LTO=OFF', 'OPT=3 LTO=ON' }
axis { name 'STATIC'; values 'ON', 'OFF' } axis { name 'STATIC'; values 'ON', 'OFF' }
} }

View File

@@ -193,10 +193,8 @@ libaom 3.12.1 tar.gz https://storage.googleapis.com/aom-releases/libaom-${ve
libvmaf 3.0.0 tar.gz https://github.com/Netflix/vmaf/archive/refs/tags/v${ver}.${ext} libvmaf 3.0.0 tar.gz https://github.com/Netflix/vmaf/archive/refs/tags/v${ver}.${ext}
libopus 1.5.2 tar.gz https://github.com/xiph/opus/releases/download/v${ver}/opus-${ver}.${ext} libopus 1.5.2 tar.gz https://github.com/xiph/opus/releases/download/v${ver}/opus-${ver}.${ext}
libdav1d 1.5.1 tar.xz http://downloads.videolan.org/videolan/dav1d/${ver}/dav1d-${ver}.${ext} libdav1d 1.5.1 tar.xz http://downloads.videolan.org/videolan/dav1d/${ver}/dav1d-${ver}.${ext}
libx264 latest git https://code.videolan.org/videolan/x264.git libx264 latest git https://code.videolan.org/videolan/x264.git
libx265 4.1 tar.gz https://bitbucket.org/multicoreware/x265_git/downloads/x265_${ver}.${ext}
libx265 4.1 tar.gz https://bitbucket.org/multicoreware/x265_git/downloads/x265_${ver}.${ext} libnuma
libnuma 2.0.19 tar.gz https://github.com/numactl/numactl/archive/refs/tags/v${ver}.${ext}
' '
local supported_builds=() local supported_builds=()
@@ -604,15 +602,6 @@ build_libx264() {
sanitize_sysroot_libs 'libx264' || return 1 sanitize_sysroot_libs 'libx264' || return 1
} }
build_libnuma() {
./autogen.sh || return 1
./configure \
"${CONFIGURE_FLAGS[@]}" || return 1
ccache make -j"${JOBS}" || return 1
${SUDO_MODIFY} make -j"${JOBS}" install || return 1
sanitize_sysroot_libs 'libnuma' || return 1
}
add_project_versioning_to_ffmpeg() { add_project_versioning_to_ffmpeg() {
local optFile local optFile
local fname='ffmpeg_opt.c' local fname='ffmpeg_opt.c'

View File

@@ -1,11 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
VALID_DOCKER_IMAGES=( VALID_DOCKER_IMAGES=(
'ubuntu-24.04' 'ubuntu'
'fedora-42' 'fedora'
'fedora-41' 'debian'
'debian-13' 'arch'
'archlinux-latest'
) )
DOCKER_WORKDIR='/workdir' DOCKER_WORKDIR='/workdir'
@@ -33,6 +32,19 @@ check_docker() {
set_docker_run_flags || return 1 set_docker_run_flags || return 1
} }
# get full image digest for a given image
get_docker_image_tag() {
local distro="$1"
local tag=''
case "${distro}" in
ubuntu) tag='ubuntu:24.04' ;;
debian) tag='debian:13' ;;
fedora) tag='fedora:42' ;;
arch) tag='ogarcia/archlinux:latest' ;;
esac
echo "${tag}"
}
# change dash to colon for docker and add namespace # change dash to colon for docker and add namespace
set_distro_image_tag() { set_distro_image_tag() {
local image_tag="${1}" local image_tag="${1}"
@@ -91,12 +103,7 @@ docker_build_image() {
for distro in "${DISTROS[@]}"; do for distro in "${DISTROS[@]}"; do
echo_info "sourcing package manager for ${distro}" echo_info "sourcing package manager for ${distro}"
local dockerDistro="${distro}" local dockerDistro="$(get_docker_image_tag "${distro}")"
# custom multi-arch image for archlinux
test "${distro}" == 'archlinux-latest' &&
dockerDistro='ogarcia/archlinux-latest'
# docker expects colon instead of dash
dockerDistro="${dockerDistro//-/:}"
# specific file for evaluated package manager info # specific file for evaluated package manager info
distroPkgMgr="${DOCKER_DIR}/$(bash_basename "${distro}")-pkg_mgr" distroPkgMgr="${DOCKER_DIR}/$(bash_basename "${distro}")-pkg_mgr"
# get package manager info # get package manager info
@@ -117,7 +124,7 @@ docker_build_image() {
echo 'ENV DEBIAN_FRONTEND=noninteractive' echo 'ENV DEBIAN_FRONTEND=noninteractive'
# arch is rolling release, so highly likely # arch is rolling release, so highly likely
# an updated is required between pkg changes # an updated is required between pkg changes
if line_contains "${dockerDistro}" 'archlinux'; then if line_contains "${dockerDistro}" 'arch'; then
local archRuns='' local archRuns=''
archRuns+="${pkg_mgr_update}" archRuns+="${pkg_mgr_update}"
archRuns+=" && ${pkg_mgr_upgrade}" archRuns+=" && ${pkg_mgr_upgrade}"

View File

@@ -70,7 +70,7 @@ print_req_pkgs() {
# shellcheck disable=SC2034 # shellcheck disable=SC2034
local pacman_pkgs=( local pacman_pkgs=(
"${common_linux_pkgs[@]}" base-devel "${common_linux_pkgs[@]}" base-devel
python-pipx ninja python-pipx ninja numactl
) )
# shellcheck disable=SC2034 # shellcheck disable=SC2034
local dnf_pkgs=( local dnf_pkgs=(
@@ -78,6 +78,7 @@ print_req_pkgs() {
pipx ninja-build fontconfig-devel wget2 pipx ninja-build fontconfig-devel wget2
cpuinfo-devel glibc-static glibc-devel cpuinfo-devel glibc-static glibc-devel
libstdc++-static libstdc++-devel patch libstdc++-static libstdc++-devel patch
numactl-devel
) )
# shellcheck disable=SC2034 # shellcheck disable=SC2034
local android_pkgs=( local android_pkgs=(