many small fixes

This commit is contained in:
2025-09-13 18:03:04 -05:00
parent 748ccd4e3c
commit 814664adee
4 changed files with 79 additions and 46 deletions

View File

@@ -7,11 +7,9 @@ set_compile_opts() {
CONFIGURE_FLAGS MESON_FLAGS \ CONFIGURE_FLAGS MESON_FLAGS \
RUSTFLAGS CMAKE_FLAGS \ RUSTFLAGS CMAKE_FLAGS \
FFMPEG_EXTRA_FLAGS \ FFMPEG_EXTRA_FLAGS \
CARGO_FLAGS CARGO_CINSTALL_FLAGS CARGO_CINSTALL_FLAGS
export LDFLAGS C_FLAGS CXX_FLAGS CPP_FLAGS \ export LDFLAGS C_FLAGS CXX_FLAGS CPP_FLAGS \
CONFIGURE_FLAGS MESON_FLAGS \ RUSTFLAGS PATH
RUSTFLAGS CMAKE_FLAGS \
FFMPEG_EXTRA_FLAGS PATH
# set job count for all builds # set job count for all builds
JOBS="$(nproc)" JOBS="$(nproc)"
@@ -21,10 +19,11 @@ set_compile_opts() {
LIBDIR="${PREFIX}/lib" LIBDIR="${PREFIX}/lib"
LDFLAGS=("-L${LIBDIR}") LDFLAGS=("-L${LIBDIR}")
# set prefix flags # set prefix flags and basic flags
CONFIGURE_FLAGS+=( CONFIGURE_FLAGS+=(
"--prefix=${PREFIX}" "--prefix=${PREFIX}"
"--libdir=${LIBDIR}" "--libdir=${LIBDIR}"
"--disable-debug"
) )
MESON_FLAGS+=( MESON_FLAGS+=(
"--prefix" "${PREFIX}" "--prefix" "${PREFIX}"
@@ -37,10 +36,8 @@ set_compile_opts() {
"-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_LIBDIR=lib"
"-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_BUILD_TYPE=Release"
) )
CARGO_BUILD_TYPE=release
CARGO_FLAGS+=("--${CARGO_BUILD_TYPE}")
CARGO_CINSTALL_FLAGS=( CARGO_CINSTALL_FLAGS=(
"--${CARGO_BUILD_TYPE}" "--release"
"--prefix" "${PREFIX}" "--prefix" "${PREFIX}"
"--libdir" "${LIBDIR}" "--libdir" "${LIBDIR}"
) )
@@ -63,7 +60,7 @@ set_compile_opts() {
MESON_FLAGS+=("-Db_lto=true") MESON_FLAGS+=("-Db_lto=true")
RUSTFLAGS+=("-C lto=yes" "-C inline-threshold=1000" "-C codegen-units=1") RUSTFLAGS+=("-C lto=yes" "-C inline-threshold=1000" "-C codegen-units=1")
else else
LTO_FLAG='' LTO_FLAG=' '
MESON_FLAGS+=("-Db_lto=false") MESON_FLAGS+=("-Db_lto=false")
RUSTFLAGS+=("-C lto=no") RUSTFLAGS+=("-C lto=no")
fi fi
@@ -110,6 +107,7 @@ set_compile_opts() {
USE_LIB_SUFF="${STATIC_LIB_SUFF}" USE_LIB_SUFF="${STATIC_LIB_SUFF}"
DEL_LIB_SUFF="${SHARED_LIB_SUFF}" DEL_LIB_SUFF="${SHARED_LIB_SUFF}"
else else
FFMPEG_EXTRA_FLAGS+=(--extra-ldflags="${LDFLAGS[*]}")
LDFLAGS+=("-Wl,-rpath,${LIBDIR}" "-Wl,-rpath-link,${LIBDIR}") LDFLAGS+=("-Wl,-rpath,${LIBDIR}" "-Wl,-rpath-link,${LIBDIR}")
CONFIGURE_FLAGS+=( CONFIGURE_FLAGS+=(
'--enable-shared' '--enable-shared'
@@ -165,9 +163,22 @@ set_compile_opts() {
# shellcheck disable=SC2178 # shellcheck disable=SC2178
RUSTFLAGS="${RUSTFLAGS[*]}" RUSTFLAGS="${RUSTFLAGS[*]}"
# make sure RUSTUP_HOME and CARGO_HOME are defined # make sure RUSTUP_HOME and CARGO_HOME are defined for SUDO builds
RUSTUP_HOME="${RUSTUP_HOME:-"${HOME}/.rustup"}" # set fallback values
CARGO_HOME="${CARGO_HOME:-"${HOME}/.cargo"}" local rustupHome cargoHome
if has_cmd rustup; then
rustupHome="$(bash_dirname "$(command -v rustup)")"
# move out of bin/ dir
rustupHome="$(cd "${rustupHome}/../" && echo "$PWD")"
fi
if has_cmd cargo; then
cargoHome="$(bash_dirname "$(command -v cargo)")"
# move out of bin/ dir
cargoHome="$(cd "${cargoHome}/../" && echo "$PWD")"
fi
RUSTUP_HOME="${RUSTUP_HOME:-"${rustupHome}"}"
CARGO_HOME="${CARGO_HOME:-"${cargoHome}"}"
test -d "${RUSTUP_HOME}" || echo_exit "RUSTUP_HOME does not exist" test -d "${RUSTUP_HOME}" || echo_exit "RUSTUP_HOME does not exist"
test -d "${CARGO_HOME}" || echo_exit "CARGO_HOME does not exist" test -d "${CARGO_HOME}" || echo_exit "CARGO_HOME does not exist"
export RUSTUP_HOME CARGO_HOME export RUSTUP_HOME CARGO_HOME
@@ -474,40 +485,28 @@ del_pkgconfig_gcc_s() {
### RUST ### ### RUST ###
build_hdr10plus_tool() { build_hdr10plus_tool() {
cargo build "${CARGO_FLAGS[@]}" || return 1 ${SUDO_CARGO} bash -c "cargo install --path . --root ${PREFIX}" || return 1
${SUDO_MODIFY} cp \
"target/${CARGO_BUILD_TYPE}/hdr10plus_tool" \
"${PREFIX}/bin/" || return 1
# build libhdr10plus # build libhdr10plus
cd hdr10plus || return 1 cd hdr10plus || return 1
cargo cbuild "${CARGO_FLAGS[@]}" || return 1 ${SUDO_CARGO} bash -c "cargo cinstall ${CARGO_CINSTALL_FLAGS[*]}" || return 1
${SUDO_CARGO} bash -lc "PATH=\"${PATH}\" cargo cinstall ${CARGO_CINSTALL_FLAGS[*]}" || return 1
sanitize_sysroot_libs libhdr10plus-rs || return 1 sanitize_sysroot_libs libhdr10plus-rs || return 1
} }
build_dovi_tool() { build_dovi_tool() {
cargo build "${CARGO_FLAGS[@]}" || return 1 ${SUDO_CARGO} bash -c "cargo install --path . --root ${PREFIX}" || return 1
${SUDO_MODIFY} cp \
"target/${CARGO_BUILD_TYPE}/dovi_tool" \
"${PREFIX}/bin/" || return 1
# build libdovi # build libdovi
cd dolby_vision || return 1 cd dolby_vision || return 1
cargo cbuild "${CARGO_FLAGS[@]}" || return 1 ${SUDO_CARGO} bash -c "cargo cinstall ${CARGO_CINSTALL_FLAGS[*]}" || return 1
${SUDO_CARGO} bash -lc "PATH=\"${PATH}\" cargo cinstall ${CARGO_CINSTALL_FLAGS[*]}" || return 1
sanitize_sysroot_libs libdovi || return 1 sanitize_sysroot_libs libdovi || return 1
} }
build_librav1e() { build_librav1e() {
cargo build "${CARGO_FLAGS[@]}" || return 1 ${SUDO_CARGO} bash -c "cargo install --path . --root ${PREFIX}" || return 1
${SUDO_MODIFY} cp \
"target/${CARGO_BUILD_TYPE}/rav1e" \
"${PREFIX}/bin/" || return 1
# build librav1e # build librav1e
cargo cbuild "${CARGO_FLAGS[@]}" || return 1 ${SUDO_CARGO} bash -c "cargo cinstall ${CARGO_CINSTALL_FLAGS[*]}" || return 1
${SUDO_CARGO} bash -lc "PATH=\"${PATH}\" cargo cinstall ${CARGO_CINSTALL_FLAGS[*]}" || return 1
sanitize_sysroot_libs librav1e || return 1 sanitize_sysroot_libs librav1e || return 1
del_pkgconfig_gcc_s rav1e.pc || return 1 del_pkgconfig_gcc_s rav1e.pc || return 1
} }
@@ -537,8 +536,8 @@ build_libsvtav1() {
} }
build_libsvtav1_psy() { build_libsvtav1_psy() {
local hdr10pluslib="$(find -L "${PREFIX}" -type f -name "libhdr10plus-rs.${USE_LIB_SUFF}")" local hdr10pluslib="${LIBDIR}/libhdr10plus-rs.${USE_LIB_SUFF}"
local dovilib="$(find -L "${PREFIX}" -type f -name "libdovi.${USE_LIB_SUFF}")" local dovilib="${LIBDIR}/libdovi.${USE_LIB_SUFF}"
cmake \ cmake \
"${CMAKE_FLAGS[@]}" \ "${CMAKE_FLAGS[@]}" \
-DBUILD_TESTING=OFF \ -DBUILD_TESTING=OFF \
@@ -749,8 +748,16 @@ build_libx264() {
} }
build_libmp3lame() { build_libmp3lame() {
# https://sourceforge.net/p/lame/mailman/message/36081038/
if is_darwin; then
remove_line \
'include/libmp3lame.sym' \
'lame_init_old' || return 1
fi
./configure \ ./configure \
"${CONFIGURE_FLAGS[@]}" || return 1 "${CONFIGURE_FLAGS[@]}" \
--enable-nasm || return 1
ccache make -j"${JOBS}" || return 1 ccache make -j"${JOBS}" || return 1
${SUDO_MODIFY} make -j"${JOBS}" install || return 1 ${SUDO_MODIFY} make -j"${JOBS}" install || return 1
sanitize_sysroot_libs libmp3lame || return 1 sanitize_sysroot_libs libmp3lame || return 1

View File

@@ -34,9 +34,9 @@ check_docker() {
# get full image digest for a given image # get full image digest for a given image
get_docker_image_tag() { get_docker_image_tag() {
local distro="$1" local image="$1"
local tag='' local tag=''
case "${distro}" in case "${image}" in
ubuntu) tag='ubuntu:24.04' ;; ubuntu) tag='ubuntu:24.04' ;;
debian) tag='debian:13' ;; debian) tag='debian:13' ;;
fedora) tag='fedora:42' ;; fedora) tag='fedora:42' ;;
@@ -73,9 +73,10 @@ echo_platform() {
validate_selected_image() { validate_selected_image() {
local selectedImage="$1" local selectedImage="$1"
local valid=1 local valid=1
for distro in "${VALID_DOCKER_IMAGES[@]}"; do for image in "${VALID_DOCKER_IMAGES[@]}"; do
if [[ ${selectedImage} == "${distro}" ]]; then if [[ ${selectedImage} == "${image}" ]]; then
valid=0 valid=0
break
fi fi
done done
if [[ valid -eq 1 ]]; then if [[ valid -eq 1 ]]; then
@@ -102,10 +103,10 @@ docker_build_image() {
test -d "${DOCKER_DIR}" || mkdir -p "${DOCKER_DIR}" test -d "${DOCKER_DIR}" || mkdir -p "${DOCKER_DIR}"
PLATFORM="${PLATFORM:-$(echo_platform)}" PLATFORM="${PLATFORM:-$(echo_platform)}"
echo_info "sourcing package manager for ${distro}" echo_info "sourcing package manager for ${image}"
local dockerDistro="$(get_docker_image_tag "${distro}")" local dockerDistro="$(get_docker_image_tag "${image}")"
# 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 "${image}")-pkg_mgr"
# get package manager info # get package manager info
docker run \ docker run \
"${DOCKER_RUN_FLAGS[@]}" \ "${DOCKER_RUN_FLAGS[@]}" \
@@ -116,7 +117,7 @@ docker_build_image() {
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "${distroPkgMgr}" source "${distroPkgMgr}"
dockerfile="${DOCKER_DIR}/Dockerfile_$(bash_basename "${distro}")" dockerfile="${DOCKER_DIR}/Dockerfile_$(bash_basename "${image}")"
{ {
echo "FROM ${dockerDistro}" echo "FROM ${dockerDistro}"
echo 'SHELL ["/bin/bash", "-c"]' echo 'SHELL ["/bin/bash", "-c"]'
@@ -154,7 +155,7 @@ docker_build_image() {
} >"${dockerfile}" } >"${dockerfile}"
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${image}")"
docker buildx build \ docker buildx build \
--platform "${PLATFORM}" \ --platform "${PLATFORM}" \
-t "${image_tag}" \ -t "${image_tag}" \
@@ -182,7 +183,7 @@ docker_save_image() {
local image="$1" local image="$1"
validate_selected_image "${image}" || return 1 validate_selected_image "${image}" || return 1
check_docker || return 1 check_docker || return 1
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${image}")"
echo_info "saving docker image for ${image_tag}" echo_info "saving docker image for ${image_tag}"
docker save "${image_tag}" | docker save "${image_tag}" |
zstd -T0 >"${DOCKER_DIR}/$(docker_image_archive_name "${image_tag}")" || zstd -T0 >"${DOCKER_DIR}/$(docker_image_archive_name "${image_tag}")" ||
@@ -196,7 +197,7 @@ docker_load_image() {
local image="$1" local image="$1"
validate_selected_image "${image}" || return 1 validate_selected_image "${image}" || return 1
check_docker || return 1 check_docker || return 1
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${image}")"
echo_info "loading docker image for ${image_tag}" echo_info "loading docker image for ${image_tag}"
local archive="${DOCKER_DIR}/$(docker_image_archive_name "${image_tag}")" local archive="${DOCKER_DIR}/$(docker_image_archive_name "${image_tag}")"
test -f "$archive" || return 1 test -f "$archive" || return 1
@@ -222,8 +223,7 @@ docker_run_image() {
runCmd+=("${cmd[@]}") runCmd+=("${cmd[@]}")
fi fi
dockerDistro="${distro//-/:}" image_tag="$(set_distro_image_tag "${image}")"
image_tag="$(set_distro_image_tag "${distro}")"
# if a docker registry is defined, pull from it # if a docker registry is defined, pull from it
if [[ ${DOCKER_REGISTRY} != '' ]]; then if [[ ${DOCKER_REGISTRY} != '' ]]; then

View File

@@ -15,6 +15,7 @@ FB_FUNC_DESCS['package']='package ffmpeg build'
package() { package() {
check_for_package_cfg || return 0 check_for_package_cfg || return 0
echo_info "packaging"
local pkgDir="${IGN_DIR}/package" local pkgDir="${IGN_DIR}/package"
test -d "${pkgDir}" && rm -rf "${pkgDir}" test -d "${pkgDir}" && rm -rf "${pkgDir}"
mkdir "${pkgDir}" || return 1 mkdir "${pkgDir}" || return 1
@@ -26,4 +27,5 @@ package() {
local tarball="ffmpeg-build-${HOSTTYPE}-$(print_os).tar" local tarball="ffmpeg-build-${HOSTTYPE}-$(print_os).tar"
tar -cf "${tarball}" ff* || return 1 tar -cf "${tarball}" ff* || return 1
xz -e -9 "${tarball}" || return 1 xz -e -9 "${tarball}" || return 1
echo_pass "finished packaging ${tarball}.xz"
} }

View File

@@ -203,6 +203,30 @@ is_positive_integer() {
return 0 return 0
} }
replace_line() {
local file="$1"
local search="$2"
local newLine="$3"
local newFile="${TMP_DIR}/$(bash_basename "${file}")"
test -f "${newFile}" && rm "${newFile}"
while read -r line; do
if line_contains "${line}" "${search}"; then
echo -en "${newLine}" >>"${newFile}"
continue
fi
echo "${line}" >>"${newFile}"
done <"${file}"
cp "${newFile}" "${file}"
}
remove_line() {
local file="$1"
local search="$2"
replace_line "${file}" "${search}" ''
}
bash_sort() { bash_sort() {
local arr=("$@") local arr=("$@")
local n=${#arr[@]} local n=${#arr[@]}