mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-01-15 19:06:17 +00:00
more updates
This commit is contained in:
4
Jenkinsfile
vendored
4
Jenkinsfile
vendored
@@ -7,13 +7,13 @@ pipeline {
|
|||||||
axes {
|
axes {
|
||||||
axis {
|
axis {
|
||||||
name 'DISTRO'
|
name 'DISTRO'
|
||||||
values 'debian', 'ubuntu', 'archlinux', 'fedora'
|
values 'debian:bookworm', 'ubuntu:24.04', 'archlinux:latest', 'fedora:42'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stages {
|
stages {
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
steps {
|
steps {
|
||||||
echo "Do Build for ${DISTRO}"
|
sh "./scripts/docker_run_image.sh ${DISTRO}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
lib/build.sh
14
lib/build.sh
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set_compile_opts() {
|
set_compile_opts() {
|
||||||
test "$FB_COMPILE_OPTS_SET" == 0 && return 0
|
test "$FB_COMPILE_OPTS_SET" == 1 && return 0
|
||||||
|
|
||||||
unset LDFLAGS C_FLAGS CXX_FLAGS CPP_FLAGS \
|
unset LDFLAGS C_FLAGS CXX_FLAGS CPP_FLAGS \
|
||||||
CONFIGURE_FLAGS MESON_FLAGS \
|
CONFIGURE_FLAGS MESON_FLAGS \
|
||||||
@@ -299,22 +299,22 @@ build() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
build_hdr10plus_tool() {
|
build_hdr10plus_tool() {
|
||||||
ccache cargo build --release || return 1
|
cargo build --release || return 1
|
||||||
${SUDO} cp target/release/hdr10plus_tool "${PREFIX}/bin/" || return 1
|
${SUDO} cp target/release/hdr10plus_tool "${PREFIX}/bin/" || return 1
|
||||||
|
|
||||||
# build libhdr10plus
|
# build libhdr10plus
|
||||||
cd hdr10plus || return 1
|
cd hdr10plus || return 1
|
||||||
ccache cargo cbuild --release || return 1
|
cargo cbuild --release || return 1
|
||||||
${SUDO_CARGO} bash -lc "cargo cinstall --prefix=${PREFIX} --release" || return 1
|
${SUDO_CARGO} bash -lc "cargo cinstall --prefix=${PREFIX} --release" || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
build_dovi_tool() {
|
build_dovi_tool() {
|
||||||
ccache cargo build --release || return 1
|
cargo build --release || return 1
|
||||||
${SUDO} cp target/release/dovi_tool "${PREFIX}/bin/" || return 1
|
${SUDO} cp target/release/dovi_tool "${PREFIX}/bin/" || return 1
|
||||||
|
|
||||||
# build libdovi
|
# build libdovi
|
||||||
cd dolby_vision || return 1
|
cd dolby_vision || return 1
|
||||||
ccache cargo cbuild --release || return 1
|
cargo cbuild --release || return 1
|
||||||
${SUDO_CARGO} bash -lc "cargo cinstall --prefix=${PREFIX} --release" || return 1
|
${SUDO_CARGO} bash -lc "cargo cinstall --prefix=${PREFIX} --release" || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,10 +345,10 @@ build_libsvtav1_psy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
build_librav1e() {
|
build_librav1e() {
|
||||||
ccache cargo build --release || return 1
|
cargo build --release || return 1
|
||||||
${SUDO} cp target/release/rav1e "${PREFIX}/bin/" || return 1
|
${SUDO} cp target/release/rav1e "${PREFIX}/bin/" || return 1
|
||||||
|
|
||||||
ccache cargo cbuild --release || return 1
|
cargo cbuild --release || return 1
|
||||||
${SUDO_CARGO} bash -lc "cargo cinstall --prefix=${PREFIX} --release" || return 1
|
${SUDO_CARGO} bash -lc "cargo cinstall --prefix=${PREFIX} --release" || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,28 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
validate_selected_distro() {
|
||||||
|
local distro="${1:-}"
|
||||||
|
local validDistros=('debian:bookworm' 'ubuntu:24.04' 'archlinux:latest' 'fedora:42')
|
||||||
|
if [[ ${DISTRO} == '' ]]; then
|
||||||
|
DISTROS=("${validDistros[@]}")
|
||||||
|
else
|
||||||
|
DISTROS=("${DISTRO}")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
FB_FUNC_NAMES+=('docker_build_images')
|
FB_FUNC_NAMES+=('docker_build_images')
|
||||||
# FB_FUNC_DESCS used externally
|
# FB_FUNC_DESCS used externally
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
FB_FUNC_DESCS['docker_build_images']='build docker images with required dependencies pre-installed'
|
FB_FUNC_DESCS['docker_build_images']='build docker images with required dependencies pre-installed'
|
||||||
docker_build_images() {
|
docker_build_images() {
|
||||||
DISTROS=('debian:bookworm' 'ubuntu:24.04' 'archlinux:latest' 'fedora:42')
|
validate_selected_distro "$@"
|
||||||
# DISTROS=('debian:bookworm')
|
|
||||||
DOCKERFILE_DIR="${IGN_DIR}/Dockerfiles"
|
DOCKERFILE_DIR="${IGN_DIR}/Dockerfiles"
|
||||||
test -d "${DOCKERFILE_DIR}" && rm -rf "${DOCKERFILE_DIR}"
|
test -d "${DOCKERFILE_DIR}" && rm -rf "${DOCKERFILE_DIR}"
|
||||||
mkdir -p "${DOCKERFILE_DIR}"
|
mkdir -p "${DOCKERFILE_DIR}"
|
||||||
for distro in "${DISTROS[@]}"; do
|
for distro in "${DISTROS[@]}"; do
|
||||||
image_tag="ffmpeg_builder_${distro}"
|
image_tag="ffmpeg_builder_${distro}"
|
||||||
echo_info "source package manager for ${image_tag}"
|
echo_info "sourcing package manager for ${image_tag}"
|
||||||
|
|
||||||
# distro without problematic characters
|
# distro without problematic characters
|
||||||
distroFmt="${distro//:/-}"
|
distroFmt="${distro//:/-}"
|
||||||
@@ -34,13 +43,21 @@ docker_build_images() {
|
|||||||
echo 'SHELL ["/bin/bash", "-c"]'
|
echo 'SHELL ["/bin/bash", "-c"]'
|
||||||
echo "RUN ${pkg_mgr_update} && ${pkg_mgr_upgrade}"
|
echo "RUN ${pkg_mgr_update} && ${pkg_mgr_upgrade}"
|
||||||
echo "RUN ${pkg_install} ${req_pkgs}"
|
echo "RUN ${pkg_install} ${req_pkgs}"
|
||||||
|
echo 'RUN pipx install virtualenv'
|
||||||
|
echo 'RUN pipx ensurepath'
|
||||||
|
echo 'RUN curl https://sh.rustup.rs -sSf | bash -s -- -y'
|
||||||
|
echo 'RUN ln -sf /bin/bash /bin/sh'
|
||||||
|
echo 'ENV PATH="~/.cargo/bin:$PATH"'
|
||||||
|
echo 'RUN rustup default stable && rustup update stable'
|
||||||
|
echo 'RUN cargo install cargo-c'
|
||||||
|
|
||||||
} >"${dockerfile}"
|
} >"${dockerfile}"
|
||||||
|
|
||||||
echo_info "building ${image_tag}"
|
echo_info "building ${image_tag}"
|
||||||
docker build \
|
docker build \
|
||||||
-t "${image_tag}" \
|
-t "${image_tag}" \
|
||||||
-f "${dockerfile}" \
|
-f "${dockerfile}" \
|
||||||
.
|
. || return 1
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,41 +67,14 @@ FB_FUNC_NAMES+=('docker_run_image')
|
|||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
FB_FUNC_DESCS['docker_run_image']='run docker images to build ffmpeg'
|
FB_FUNC_DESCS['docker_run_image']='run docker images to build ffmpeg'
|
||||||
docker_run_image() {
|
docker_run_image() {
|
||||||
DISTROS=('debian:bookworm' 'ubuntu:24.04' 'archlinux:latest' 'fedora:42')
|
docker_build_images "$@"
|
||||||
# DISTROS=('debian:bookworm')
|
|
||||||
DOCKERFILE_DIR="${IGN_DIR}/Dockerfiles"
|
|
||||||
test -d "${DOCKERFILE_DIR}" && rm -rf "${DOCKERFILE_DIR}"
|
|
||||||
mkdir -p "${DOCKERFILE_DIR}"
|
|
||||||
for distro in "${DISTROS[@]}"; do
|
for distro in "${DISTROS[@]}"; do
|
||||||
image_tag="ffmpeg_builder_${distro}"
|
image_tag="ffmpeg_builder_${distro}"
|
||||||
echo_info "source package manager for ${image_tag}"
|
echo_info "running ffmpeg build for ${image_tag}"
|
||||||
|
|
||||||
# distro without problematic characters
|
|
||||||
distroFmt="${distro//:/-}"
|
|
||||||
# specific file for evaluated package manager info
|
|
||||||
distroFmtPkgMgr="${DOCKERFILE_DIR}/${distroFmt}-pkg_mgr"
|
|
||||||
# get package manager info
|
|
||||||
docker run --rm -it \
|
docker run --rm -it \
|
||||||
-v "${REPO_DIR}":/workdir \
|
-v "${REPO_DIR}":/workdir \
|
||||||
-w /workdir \
|
-w /workdir \
|
||||||
"${distro}" \
|
"${image_tag}" \
|
||||||
bash -c "./scripts/print_pkg_mgr.sh" | tr -d '\r' >"${distroFmtPkgMgr}"
|
./scripts/build.sh || return 1
|
||||||
# shellcheck disable=SC1090
|
|
||||||
source "${distroFmtPkgMgr}"
|
|
||||||
cat "${distroFmtPkgMgr}"
|
|
||||||
|
|
||||||
dockerfile="${DOCKERFILE_DIR}/Dockerfile_${distroFmt}"
|
|
||||||
{
|
|
||||||
echo "FROM ${distro}"
|
|
||||||
echo 'SHELL ["/bin/bash", "-c"]'
|
|
||||||
echo "RUN ${pkg_mgr_update} && ${pkg_mgr_upgrade}"
|
|
||||||
echo "RUN ${pkg_install} ${req_pkgs}"
|
|
||||||
} >"${dockerfile}"
|
|
||||||
|
|
||||||
echo_info "building ${image_tag}"
|
|
||||||
docker build \
|
|
||||||
-t "${image_tag}" \
|
|
||||||
-f "${dockerfile}" \
|
|
||||||
.
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user