From 90b441c93a48229151fea331282279765133beb7 Mon Sep 17 00:00:00 2001 From: Levon Gevorgyan Date: Mon, 28 Jul 2025 19:50:08 -0500 Subject: [PATCH] more updates --- Jenkinsfile | 4 ++-- lib/build.sh | 14 ++++++------ lib/docker.sh | 60 +++++++++++++++++++++------------------------------ 3 files changed, 34 insertions(+), 44 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 82ea6bd..c3ebe71 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,13 +7,13 @@ pipeline { axes { axis { name 'DISTRO' - values 'debian', 'ubuntu', 'archlinux', 'fedora' + values 'debian:bookworm', 'ubuntu:24.04', 'archlinux:latest', 'fedora:42' } } stages { stage('Build') { steps { - echo "Do Build for ${DISTRO}" + sh "./scripts/docker_run_image.sh ${DISTRO}" } } } diff --git a/lib/build.sh b/lib/build.sh index 148db93..ec98313 100644 --- a/lib/build.sh +++ b/lib/build.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash 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 \ CONFIGURE_FLAGS MESON_FLAGS \ @@ -299,22 +299,22 @@ build() { } build_hdr10plus_tool() { - ccache cargo build --release || return 1 + cargo build --release || return 1 ${SUDO} cp target/release/hdr10plus_tool "${PREFIX}/bin/" || return 1 # build libhdr10plus 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 } build_dovi_tool() { - ccache cargo build --release || return 1 + cargo build --release || return 1 ${SUDO} cp target/release/dovi_tool "${PREFIX}/bin/" || return 1 # build libdovi 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 } @@ -345,10 +345,10 @@ build_libsvtav1_psy() { } build_librav1e() { - ccache cargo build --release || return 1 + cargo build --release || 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 } diff --git a/lib/docker.sh b/lib/docker.sh index 86732fa..762d0c9 100644 --- a/lib/docker.sh +++ b/lib/docker.sh @@ -1,19 +1,28 @@ #!/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 FB_FUNC_NAMES+=('docker_build_images') # FB_FUNC_DESCS used externally # shellcheck disable=SC2034 FB_FUNC_DESCS['docker_build_images']='build docker images with required dependencies pre-installed' docker_build_images() { - DISTROS=('debian:bookworm' 'ubuntu:24.04' 'archlinux:latest' 'fedora:42') - # DISTROS=('debian:bookworm') + validate_selected_distro "$@" DOCKERFILE_DIR="${IGN_DIR}/Dockerfiles" test -d "${DOCKERFILE_DIR}" && rm -rf "${DOCKERFILE_DIR}" mkdir -p "${DOCKERFILE_DIR}" for distro in "${DISTROS[@]}"; do 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 distroFmt="${distro//:/-}" @@ -34,13 +43,21 @@ docker_build_images() { echo 'SHELL ["/bin/bash", "-c"]' echo "RUN ${pkg_mgr_update} && ${pkg_mgr_upgrade}" 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}" echo_info "building ${image_tag}" docker build \ -t "${image_tag}" \ -f "${dockerfile}" \ - . + . || return 1 done } @@ -50,41 +67,14 @@ FB_FUNC_NAMES+=('docker_run_image') # shellcheck disable=SC2034 FB_FUNC_DESCS['docker_run_image']='run docker images to build ffmpeg' docker_run_image() { - DISTROS=('debian:bookworm' 'ubuntu:24.04' 'archlinux:latest' 'fedora:42') - # DISTROS=('debian:bookworm') - DOCKERFILE_DIR="${IGN_DIR}/Dockerfiles" - test -d "${DOCKERFILE_DIR}" && rm -rf "${DOCKERFILE_DIR}" - mkdir -p "${DOCKERFILE_DIR}" + docker_build_images "$@" for distro in "${DISTROS[@]}"; do image_tag="ffmpeg_builder_${distro}" - echo_info "source package manager 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 + echo_info "running ffmpeg build for ${image_tag}" docker run --rm -it \ -v "${REPO_DIR}":/workdir \ -w /workdir \ - "${distro}" \ - bash -c "./scripts/print_pkg_mgr.sh" | tr -d '\r' >"${distroFmtPkgMgr}" - # 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}" \ - . + "${image_tag}" \ + ./scripts/build.sh || return 1 done }