mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-01-15 19:06:17 +00:00
good ol fedora
This commit is contained in:
50
lib/build.sh
50
lib/build.sh
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user