good ol fedora

This commit is contained in:
2025-08-07 20:14:10 -05:00
parent d226433fa4
commit 8d34479711
5 changed files with 45 additions and 49 deletions

View File

@@ -15,31 +15,27 @@ set_compile_opts() {
# set job count for all builds # set job count for all builds
JOBS="$(nproc)" JOBS="$(nproc)"
MACHINE="$(cc -dumpmachine)" mapfile -t pkgconfigDirs < <(find "${PREFIX}" -type d -name pkgconfig)
test "${MACHINE}" == '' && return 1 for d in "${pkgconfigDirs[@]}"; do
MACHINE_LIB="${PREFIX}/lib/${MACHINE}" if [[ ${d} =~ '64' ]]; then
MACHINE_LIB="${d}"
fi
done
test "${MACHINE_LIB}" == '' && return 1
pkgconfigString="${pkgconfigDirs[*]}"
PKG_CONFIG_PATH="${pkgconfigString// /:}"
# set prefix flags # set prefix flags
CONFIGURE_FLAGS+=("--prefix=${PREFIX}") CONFIGURE_FLAGS+=("--prefix=${PREFIX}")
MESON_FLAGS+=("--prefix" "${PREFIX}") MESON_FLAGS+=("--prefix" "${PREFIX}")
CMAKE_FLAGS+=("-DCMAKE_PREFIX_PATH=${PREFIX}") CMAKE_FLAGS+=("-DCMAKE_PREFIX_PATH=${PREFIX}")
CMAKE_FLAGS+=("-DCMAKE_INSTALL_PREFIX=${PREFIX}") CMAKE_FLAGS+=("-DCMAKE_INSTALL_PREFIX=${PREFIX}")
PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
PKG_CONFIG_PATH+=":${MACHINE_LIB}/pkgconfig"
export PKG_CONFIG_PATH export PKG_CONFIG_PATH
export PKG_CONFIG_DEBUG_SPEW=1 export PKG_CONFIG_DEBUG_SPEW=1
# add prefix include # add prefix include
C_FLAGS+=("-I${PREFIX}/include") C_FLAGS+=("-I${PREFIX}/include")
# enabling a clean build
if [[ ${CLEAN} == 'true' ]]; then
CLEAN="${SUDO} rm -rf"
echo_info "performing clean build"
else
CLEAN='void'
fi
# enabling link-time optimization # enabling link-time optimization
# shellcheck disable=SC2034 # shellcheck disable=SC2034
unset LTO_SWITCH LTO_FLAG LTO_BOOL unset LTO_SWITCH LTO_FLAG LTO_BOOL
@@ -77,7 +73,7 @@ set_compile_opts() {
CONFIGURE_FLAGS+=('--enable-static') CONFIGURE_FLAGS+=('--enable-static')
CMAKE_FLAGS+=("-DBUILD_SHARED_LIBS=OFF") CMAKE_FLAGS+=("-DBUILD_SHARED_LIBS=OFF")
MESON_FLAGS+=('--default-library=static') MESON_FLAGS+=('--default-library=static')
CMAKE_FLAGS+=("-DCMAKE_EXE_LINKER_FLAGS='-static'") CMAKE_FLAGS+=("-DCMAKE_EXE_LINKER_FLAGS=-static")
PKG_CFG_FLAGS='--static' PKG_CFG_FLAGS='--static'
LIB_SUFF='a' LIB_SUFF='a'
else else
@@ -105,9 +101,10 @@ set_compile_opts() {
CXX_FLAGS=("${C_FLAGS[@]}") CXX_FLAGS=("${C_FLAGS[@]}")
CPP_FLAGS=("${C_FLAGS[@]}") CPP_FLAGS=("${C_FLAGS[@]}")
RUSTFLAGS+=("-C target-cpu=${CPU}") RUSTFLAGS+=("-C target-cpu=${CPU}")
CMAKE_FLAGS+=("-DCMAKE_C_FLAGS='${C_FLAGS[*]}'") CMAKE_FLAGS+=("-DCMAKE_C_FLAGS=${C_FLAGS[*]}")
CMAKE_FLAGS+=("-DCMAKE_CXX_FLAGS='${CXX_FLAGS[*]}'") CMAKE_FLAGS+=("-DCMAKE_CXX_FLAGS=${CXX_FLAGS[*]}")
MESON_FLAGS+=("-Dc_args=${C_FLAGS[*]}" "-Dcpp_args=${CPP_FLAGS[*]}") MESON_FLAGS+=("-Dc_args=${C_FLAGS[*]}" "-Dcpp_args=${CPP_FLAGS[*]}")
echo_info "CLEAN: $CLEAN"
dump_arr CONFIGURE_FLAGS dump_arr CONFIGURE_FLAGS
dump_arr C_FLAGS dump_arr C_FLAGS
dump_arr RUSTFLAGS dump_arr RUSTFLAGS
@@ -220,9 +217,16 @@ download_release() {
rm -rf "${wrong_ver_build}" rm -rf "${wrong_ver_build}"
done done
# enabling a clean build
if [[ ${CLEAN} == 'true' ]]; then
DO_CLEAN="rm -rf"
else
DO_CLEAN='void'
fi
# create new build dir for clean builds # create new build dir for clean builds
test -d "${extracted_dir}" && test -d "${extracted_dir}" &&
${CLEAN} "${extracted_dir}" { ${DO_CLEAN} "${extracted_dir}" || return 1; }
if test "${ext}" != "git"; then if test "${ext}" != "git"; then
wget_out="${base_dl_path}.${ext}" wget_out="${base_dl_path}.${ext}"
@@ -237,7 +241,10 @@ download_release() {
test -d "${extracted_dir}" || test -d "${extracted_dir}" ||
{ {
mkdir "${extracted_dir}" mkdir "${extracted_dir}"
tar -xf "${wget_out}" --strip-components=1 -C "${extracted_dir}" tar -xf "${wget_out}" \
--strip-components=1 \
--no-same-permissions \
-C "${extracted_dir}"
} }
else else
# for git downloads # for git downloads
@@ -330,6 +337,8 @@ build_libsvtav1() {
} }
build_libsvtav1_psy() { build_libsvtav1_psy() {
local hdr10pluslib="$(find "${PREFIX}" -type f -name "libhdr10plus-rs.${LIB_SUFF}")"
local dovilib="$(find "${PREFIX}" -type f -name "libdovi.${LIB_SUFF}")"
cmake \ cmake \
"${CMAKE_FLAGS[@]}" \ "${CMAKE_FLAGS[@]}" \
-DSVT_AV1_LTO="${LTO_SWITCH}" \ -DSVT_AV1_LTO="${LTO_SWITCH}" \
@@ -338,8 +347,9 @@ build_libsvtav1_psy() {
-DCOVERAGE=OFF \ -DCOVERAGE=OFF \
-DLIBDOVI_FOUND=1 \ -DLIBDOVI_FOUND=1 \
-DLIBHDR10PLUS_RS_FOUND=1 \ -DLIBHDR10PLUS_RS_FOUND=1 \
-DLIBHDR10PLUS_RS_LIBRARY="${MACHINE_LIB}/libhdr10plus-rs.${LIB_SUFF}" \ -DLIBHDR10PLUS_RS_LIBRARY="${hdr10pluslib}" \
-DLIBDOVI_LIBRARY="${MACHINE_LIB}/libdovi.${LIB_SUFF}" || return 1 -DLIBDOVI_LIBRARY="${dovilib}" \
. || return 1
ccache make -j"${JOBS}" || return 1 ccache make -j"${JOBS}" || return 1
${SUDO} make -j"${JOBS}" install || return 1 ${SUDO} make -j"${JOBS}" install || return 1
} }

View File

@@ -53,6 +53,13 @@ validate_selected_image() {
fi fi
} }
docker_login() {
echo_if_fail docker login \
-u "${DOCKER_REGISTRY_USER}" \
-p "${DOCKER_REGISTRY_PASS}" \
"${DOCKER_REGISTRY}"
}
FB_FUNC_NAMES+=('docker_build_image') FB_FUNC_NAMES+=('docker_build_image')
FB_FUNC_DESCS['docker_build_image']='build docker image with required dependencies pre-installed' FB_FUNC_DESCS['docker_build_image']='build docker image with required dependencies pre-installed'
FB_FUNC_COMPLETION['docker_build_image']="${VALID_DOCKER_IMAGES[*]}" FB_FUNC_COMPLETION['docker_build_image']="${VALID_DOCKER_IMAGES[*]}"
@@ -107,11 +114,7 @@ docker_build_image() {
# if a docker registry is defined, push to it # if a docker registry is defined, push to it
if [[ ${DOCKER_REGISTRY} != '' ]]; then if [[ ${DOCKER_REGISTRY} != '' ]]; then
docker login \ docker_login || return 1
-u "${DOCKER_REGISTRY_USER}" \
-p "${DOCKER_REGISTRY_PASS}" \
"${DOCKER_REGISTRY}"
docker buildx build \ docker buildx build \
--push \ --push \
--platform "${PLATFORM}" \ --platform "${PLATFORM}" \
@@ -168,11 +171,7 @@ docker_run_image() {
# 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
docker login \ docker_login || return 1
-u "${DOCKER_REGISTRY_USER}" \
-p "${DOCKER_REGISTRY_PASS}" \
"${DOCKER_REGISTRY}"
docker pull \ docker pull \
"${DOCKER_REGISTRY}/${image_tag}" "${DOCKER_REGISTRY}/${image_tag}"
docker tag "${DOCKER_REGISTRY}/${image_tag}" "${image_tag}" docker tag "${DOCKER_REGISTRY}/${image_tag}" "${image_tag}"

View File

@@ -62,7 +62,7 @@ print_req_pkgs() {
libvorbis-dev libxcb1-dev pipx libvorbis-dev libxcb1-dev pipx
libxcb-shm0-dev libxcb-xfixes0-dev libxcb-shm0-dev libxcb-xfixes0-dev
zlib1g-dev libssl-dev ninja-build zlib1g-dev libssl-dev ninja-build
gobjc++ mawk libnuma-dev libcpuinfo-dev gobjc++ mawk libnuma-dev
mediainfo mkvtoolnix libgtest-dev mediainfo mkvtoolnix libgtest-dev
) )
# shellcheck disable=SC2034 # shellcheck disable=SC2034
@@ -74,7 +74,7 @@ print_req_pkgs() {
local dnf_pkgs=( local dnf_pkgs=(
"${common_linux_pkgs[@]}" openssl-devel "${common_linux_pkgs[@]}" openssl-devel
pipx ninja-build fontconfig-devel wget2 pipx ninja-build fontconfig-devel wget2
cpuinfo-devel cpuinfo-devel glibc-static libstdc++-static
) )
local req_pkgs_env_name="${pkg_mgr/-/_}_pkgs" local req_pkgs_env_name="${pkg_mgr/-/_}_pkgs"
@@ -99,7 +99,8 @@ print_pkg_mgr() {
print_os() { print_os() {
if [[ -f /etc/os-release ]]; then if [[ -f /etc/os-release ]]; then
source /etc/os-release ; echo "${ID}-${VERSION_ID}" source /etc/os-release
echo "${ID}-${VERSION_ID}"
fi fi
} }

View File

@@ -1,14 +0,0 @@
#!/usr/bin/env bash
THIS_DIR="$(dirname "${BASH_SOURCE[0]}")"
IMAGE_NAME='ffmpeg_builder'
DISTROS=( debian ubuntu archlinux fedora )
DISTROS=( debian )
for DISTRO in "${DISTROS[@]}"; do
docker run \
--rm -it \
-v "${THIS_DIR}":/workdir \
-w /workdir \
"${IMAGE_NAME}-${DISTRO}" bash main.sh
done

View File

@@ -5,7 +5,7 @@ base="$(dirname "$(readlink -f "$0")")"
inotifywait -m -r \ inotifywait -m -r \
-e close_write \ -e close_write \
-e moved_to \ -e moved_to \
--format '%w%f' "$base" | while read -r file; do --format '%w%f' "$base/lib" "$base/scripts" | while read -r file; do
if [[ -f $file && $file =~ .sh ]]; then if [[ -f $file && $file =~ .sh ]]; then
shfmt --write --simplify "$file" shfmt --write --simplify "$file"
fi fi