mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-01-15 19:06:17 +00:00
get docker working
This commit is contained in:
20
Jenkinsfile
vendored
20
Jenkinsfile
vendored
@@ -1,10 +1,22 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent any // Specifies that the pipeline can run on any available agent
|
agent none
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Hello') { // Defines a stage named 'Hello'
|
stage('Build Matrix') {
|
||||||
|
matrix {
|
||||||
|
agent { label "linux" }
|
||||||
|
axes {
|
||||||
|
axis {
|
||||||
|
name 'DISTRO'
|
||||||
|
values 'debian', 'ubuntu', 'archlinux', 'fedora'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('Build') {
|
||||||
steps {
|
steps {
|
||||||
echo 'Hello World!' // Prints "Hello World!" to the console
|
echo "Do Build for ${DISTRO}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set_compile_opts() {
|
set_compile_opts() {
|
||||||
|
test "$FB_COMPILE_OPTS_SET" == 0 && 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 \
|
||||||
RUSTFLAGS CMAKE_FLAGS \
|
RUSTFLAGS CMAKE_FLAGS \
|
||||||
@@ -137,6 +139,8 @@ set_compile_opts() {
|
|||||||
export SUDO_CARGO="${SUDO} --preserve-env=PATH,RUSTUP_HOME,CARGO_HOME"
|
export SUDO_CARGO="${SUDO} --preserve-env=PATH,RUSTUP_HOME,CARGO_HOME"
|
||||||
fi
|
fi
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
FB_COMPILE_OPTS_SET=1
|
||||||
}
|
}
|
||||||
|
|
||||||
get_build_conf() {
|
get_build_conf() {
|
||||||
@@ -255,6 +259,7 @@ do_build() {
|
|||||||
local build="${1:-''}"
|
local build="${1:-''}"
|
||||||
download_release "${build}" || return 1
|
download_release "${build}" || return 1
|
||||||
get_build_conf "${build}" || return 1
|
get_build_conf "${build}" || return 1
|
||||||
|
set_compile_opts || return 1
|
||||||
for dep in "${deps[@]}"; do
|
for dep in "${deps[@]}"; do
|
||||||
do_build "${dep}" || return 1
|
do_build "${dep}" || return 1
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -123,7 +123,3 @@ bash_basename() {
|
|||||||
|
|
||||||
printf '%s\n' "${tmp:-/}"
|
printf '%s\n' "${tmp:-/}"
|
||||||
}
|
}
|
||||||
|
|
||||||
fb_running_as_script() {
|
|
||||||
return "$FB_RUNNING_AS_SCRIPT"
|
|
||||||
}
|
|
||||||
|
|||||||
86
lib/docker.sh
Executable file → Normal file
86
lib/docker.sh
Executable file → Normal file
@@ -1,26 +1,90 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 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 ubuntu archlinux fedora)
|
DISTROS=('debian:bookworm' 'ubuntu:24.04' 'archlinux:latest' 'fedora:42')
|
||||||
|
# DISTROS=('debian:bookworm')
|
||||||
DOCKERFILE_DIR="${IGN_DIR}/Dockerfiles"
|
DOCKERFILE_DIR="${IGN_DIR}/Dockerfiles"
|
||||||
test -d "${DOCKERFILE_DIR}" || mkdir -p "${DOCKERFILE_DIR}"
|
test -d "${DOCKERFILE_DIR}" && rm -rf "${DOCKERFILE_DIR}"
|
||||||
|
mkdir -p "${DOCKERFILE_DIR}"
|
||||||
for distro in "${DISTROS[@]}"; do
|
for distro in "${DISTROS[@]}"; do
|
||||||
echo "\
|
|
||||||
FROM ${distro}
|
|
||||||
COPY scripts/ /ffmpeg-builder/scripts/
|
|
||||||
COPY main.sh /ffmpeg-builder/
|
|
||||||
RUN bash -c 'source /ffmpeg-builder/main.sh ; install_deps' || exit 1" \
|
|
||||||
>"${DOCKERFILE_DIR}/Dockerfile_${distro}"
|
|
||||||
image_tag="ffmpeg_builder_${distro}"
|
image_tag="ffmpeg_builder_${distro}"
|
||||||
dockerfile="Dockerfile_${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
|
||||||
|
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}"
|
||||||
|
|
||||||
|
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}"
|
echo_info "building ${image_tag}"
|
||||||
docker build \
|
docker build \
|
||||||
-t "${image_tag}" \
|
-t "${image_tag}" \
|
||||||
-f "${DOCKERFILE_DIR}/${dockerfile}" \
|
-f "${dockerfile}" \
|
||||||
"${REPO_DIR}/"
|
.
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
FB_FUNC_NAMES+=('docker_run_image')
|
||||||
|
# FB_FUNC_DESCS used externally
|
||||||
|
# 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}"
|
||||||
|
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
|
||||||
|
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}" \
|
||||||
|
.
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# shellcheck disable=SC2120
|
||||||
determine_pkg_mgr() {
|
determine_pkg_mgr() {
|
||||||
# sudo used externally
|
# sudo used externally
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
test "$(id -u)" -eq 0 && SUDO='' || SUDO=sudo
|
test "$(id -u)" -eq 0 && SUDO='' || SUDO='sudo '
|
||||||
|
|
||||||
# pkg-mgr update-cmd install-cmd check-cmd
|
# pkg-mgr update-cmd upgrade-cmd install-cmd check-cmd
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
local PKG_MGR_MAP='
|
local PKG_MGR_MAP='
|
||||||
brew:brew update:brew install:brew list --formula ${pkg}
|
brew:brew update:brew upgrade:brew install:brew list --formula ${pkg}
|
||||||
apt-get:${SUDO} apt-get update: ${SUDO} apt-get install -y:dpkg -l ${pkg}
|
apt-get:${SUDO}apt-get update:${SUDO}apt-get upgrade -y:${SUDO}apt-get install -y:dpkg -l ${pkg}
|
||||||
pacman:${SUDO} pacman -Syy:${SUDO} pacman -S --noconfirm --needed:pacman -Qi ${pkg}
|
pacman:${SUDO}pacman -Syy:${SUDO}pacman -Syu --noconfirm:${SUDO}pacman -S --noconfirm --needed:pacman -Qi ${pkg}
|
||||||
dnf:${SUDO} dnf check-update:${SUDO} dnf install -y:dnf list -q --installed ${pkg}
|
dnf:${SUDO}dnf check-update || true:${SUDO}dnf upgrade --refresh -y:${SUDO}dnf install -y:dnf list -q --installed ${pkg}
|
||||||
'
|
'
|
||||||
local supported_pkg_mgr=()
|
local supported_pkg_mgr=()
|
||||||
unset pkg_mgr pkg_mgr_update pkg_install pkg_check
|
unset pkg_mgr pkg_mgr_update pkg_mgr_upgrade pkg_install pkg_check
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
test "${line}" == '' && continue
|
test "${line}" == '' && continue
|
||||||
IFS=':' read -r pkg_mgr pkg_mgr_update pkg_install pkg_check <<<"${line}"
|
IFS=':' read -r pkg_mgr pkg_mgr_update pkg_mgr_upgrade pkg_install pkg_check <<<"${line}"
|
||||||
supported_pkg_mgr+=("${pkg_mgr}")
|
supported_pkg_mgr+=("${pkg_mgr}")
|
||||||
if ! has_cmd "${pkg_mgr}"; then
|
if ! has_cmd "${pkg_mgr}"; then
|
||||||
pkg_mgr=''
|
pkg_mgr=''
|
||||||
@@ -25,6 +26,7 @@ dnf:${SUDO} dnf check-update:${SUDO} dnf install -y:dnf list -q --installed ${pk
|
|||||||
fi
|
fi
|
||||||
# update/install may use SUDO
|
# update/install may use SUDO
|
||||||
eval "pkg_mgr_update=\"${pkg_mgr_update}\""
|
eval "pkg_mgr_update=\"${pkg_mgr_update}\""
|
||||||
|
eval "pkg_mgr_upgrade=\"${pkg_mgr_upgrade}\""
|
||||||
eval "pkg_install=\"${pkg_install}\""
|
eval "pkg_install=\"${pkg_install}\""
|
||||||
break
|
break
|
||||||
done <<<"${PKG_MGR_MAP}"
|
done <<<"${PKG_MGR_MAP}"
|
||||||
@@ -37,8 +39,7 @@ dnf:${SUDO} dnf check-update:${SUDO} dnf install -y:dnf list -q --installed ${pk
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
check_for_req_pkgs() {
|
print_req_pkgs() {
|
||||||
echo_info "checking for required packages"
|
|
||||||
local common_pkgs=(
|
local common_pkgs=(
|
||||||
autoconf automake cmake libtool
|
autoconf automake cmake libtool
|
||||||
texinfo nasm yasm python3
|
texinfo nasm yasm python3
|
||||||
@@ -77,8 +78,27 @@ check_for_req_pkgs() {
|
|||||||
|
|
||||||
local req_pkgs_env_name="${pkg_mgr/-/_}_pkgs"
|
local req_pkgs_env_name="${pkg_mgr/-/_}_pkgs"
|
||||||
declare -n req_pkgs="${req_pkgs_env_name}"
|
declare -n req_pkgs="${req_pkgs_env_name}"
|
||||||
|
echo "${req_pkgs[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
FB_FUNC_NAMES+=('print_pkg_mgr')
|
||||||
|
# FB_FUNC_DESCS used externally
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
FB_FUNC_DESCS['print_pkg_mgr']='print out evaluated package manager commands and required packages'
|
||||||
|
print_pkg_mgr() {
|
||||||
|
determine_pkg_mgr || return 1
|
||||||
|
echo "export pkg_mgr=\"${pkg_mgr}\""
|
||||||
|
echo "export pkg_mgr_update=\"${pkg_mgr_update}\""
|
||||||
|
echo "export pkg_mgr_upgrade=\"${pkg_mgr_upgrade}\""
|
||||||
|
echo "export pkg_install=\"${pkg_install}\""
|
||||||
|
echo "export pkg_check=\"${pkg_check}\""
|
||||||
|
echo "export req_pkgs=\"$(print_req_pkgs)\""
|
||||||
|
}
|
||||||
|
|
||||||
|
check_for_req_pkgs() {
|
||||||
|
echo_info "checking for required packages"
|
||||||
local missing_pkgs=()
|
local missing_pkgs=()
|
||||||
for pkg in "${req_pkgs[@]}"; do
|
for pkg in $(print_req_pkgs); do
|
||||||
# pkg_check has ${pkg} unexpanded
|
# pkg_check has ${pkg} unexpanded
|
||||||
eval "pkg_check=\"${pkg_check}\""
|
eval "pkg_check=\"${pkg_check}\""
|
||||||
${pkg_check} "${pkg}" >/dev/null 2>&1 || missing_pkgs+=("${pkg}")
|
${pkg_check} "${pkg}" >/dev/null 2>&1 || missing_pkgs+=("${pkg}")
|
||||||
|
|||||||
34
main.sh
34
main.sh
@@ -1,6 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
REPO_DIR="$(cd "${BASH_SOURCE[0]//'main.sh'/}" && echo "$PWD")"
|
# set top dir
|
||||||
|
relativeRepoRoot="${BASH_SOURCE[0]//'main.sh'/}"
|
||||||
|
if [[ -d ${relativeRepoRoot} ]]; then
|
||||||
|
preloadCmd="cd ${relativeRepoRoot} &&"
|
||||||
|
fi
|
||||||
|
REPO_DIR="$(${preloadCmd} echo "$PWD")"
|
||||||
|
unset relativeRepoRoot preloadCmd
|
||||||
|
|
||||||
IGN_DIR="${REPO_DIR}/gitignore"
|
IGN_DIR="${REPO_DIR}/gitignore"
|
||||||
TMP_DIR="${IGN_DIR}/tmp"
|
TMP_DIR="${IGN_DIR}/tmp"
|
||||||
DL_DIR="${IGN_DIR}/downloads"
|
DL_DIR="${IGN_DIR}/downloads"
|
||||||
@@ -9,28 +16,28 @@ CCACHE_DIR="${IGN_DIR}/ccache"
|
|||||||
export REPO_DIR IGN_DIR TMP_DIR DL_DIR BUILD_DIR CCACHE_DIR
|
export REPO_DIR IGN_DIR TMP_DIR DL_DIR BUILD_DIR CCACHE_DIR
|
||||||
|
|
||||||
# function names, descriptions, completions
|
# function names, descriptions, completions
|
||||||
|
unset FB_FUNC_NAMES FB_FUNC_DESCS FB_FUNC_COMPLETION
|
||||||
FB_FUNC_NAMES=()
|
FB_FUNC_NAMES=()
|
||||||
declare -A FB_FUNC_DESCS
|
declare -A FB_FUNC_DESCS FB_FUNC_COMPLETION
|
||||||
declare -A FB_FUNC_COMPLETION
|
|
||||||
|
|
||||||
# can't have recursive generation
|
# can't have recursive generation
|
||||||
FB_RUNNING_AS_SCRIPT=${FB_RUNNING_AS_SCRIPT:-0}
|
FB_RUNNING_AS_SCRIPT=${FB_RUNNING_AS_SCRIPT:-0}
|
||||||
|
|
||||||
# no undefined variables
|
# shellcheck disable=SC2034
|
||||||
set -u
|
FB_COMPILE_OPTS_SET=0
|
||||||
|
|
||||||
SCRIPT_DIR="${REPO_DIR}/scripts"
|
SCRIPT_DIR="${REPO_DIR}/scripts"
|
||||||
ENTRY_SCRIPT="${SCRIPT_DIR}/entry.sh"
|
ENTRY_SCRIPT="${SCRIPT_DIR}/entry.sh"
|
||||||
src_scripts() {
|
src_scripts() {
|
||||||
local SCRIPT_DIR="${REPO_DIR}/scripts"
|
local SCRIPT_DIR="${REPO_DIR}/scripts"
|
||||||
rm "${SCRIPT_DIR}"*.sh
|
|
||||||
|
|
||||||
if [[ $FB_RUNNING_AS_SCRIPT -eq 0 ]]; then
|
if [[ $FB_RUNNING_AS_SCRIPT -eq 0 ]]; then
|
||||||
|
rm "${SCRIPT_DIR}"/*.sh
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
echo '#!/usr/bin/env bash
|
echo '#!/usr/bin/env bash
|
||||||
cd "$(dirname "$(readlink -f $0)")/.."
|
cd "$(dirname "$(readlink -f $0)")/.."
|
||||||
|
export FB_RUNNING_AS_SCRIPT=1
|
||||||
. main.sh
|
. main.sh
|
||||||
FB_RUNNING_AS_SCRIPT=1
|
|
||||||
scr_name="$(bash_basename $0)"
|
scr_name="$(bash_basename $0)"
|
||||||
cmd="${scr_name//.sh}"
|
cmd="${scr_name//.sh}"
|
||||||
$cmd $@' >"${ENTRY_SCRIPT}"
|
$cmd $@' >"${ENTRY_SCRIPT}"
|
||||||
@@ -49,21 +56,21 @@ print_cmds() {
|
|||||||
echo -e "\n~~~ Usable Commands ~~~"
|
echo -e "\n~~~ Usable Commands ~~~"
|
||||||
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
||||||
echo -e "${CYAN}${funcname}${NC}:\n\t" "${FB_FUNC_DESCS[${funcname}]}"
|
echo -e "${CYAN}${funcname}${NC}:\n\t" "${FB_FUNC_DESCS[${funcname}]}"
|
||||||
fb_running_as_script || (cd "$SCRIPT_DIR" && ln -sf entry.sh "${funcname}.sh")
|
if [[ $FB_RUNNING_AS_SCRIPT -eq 0 ]]; then
|
||||||
|
(cd "$SCRIPT_DIR" && ln -sf entry.sh "${funcname}.sh")
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~\n"
|
echo -e "~~~~~~~~~~~~~~~~~~~~~~~\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
set_completions() {
|
set_completions() {
|
||||||
set +u
|
|
||||||
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
for funcname in "${FB_FUNC_NAMES[@]}"; do
|
||||||
complete -W "${FB_FUNC_COMPLETION[${funcname}]}" "${funcname}"
|
complete -W "${FB_FUNC_COMPLETION[${funcname}]}" "${funcname}"
|
||||||
done
|
done
|
||||||
set -u
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# shellcheck disable=SC1091
|
# shellcheck disable=SC1091
|
||||||
source "${HOME}/.bashrc"
|
test -f "${HOME}/.bashrc" && source "${HOME}/.bashrc"
|
||||||
src_scripts || return 1
|
src_scripts || return 1
|
||||||
determine_pkg_mgr || return 1
|
determine_pkg_mgr || return 1
|
||||||
|
|
||||||
@@ -71,6 +78,7 @@ determine_pkg_mgr || return 1
|
|||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
test "${PREFIX}" == '' && PREFIX="${IGN_DIR}/${pkg_mgr}_sysroot"
|
test "${PREFIX}" == '' && PREFIX="${IGN_DIR}/${pkg_mgr}_sysroot"
|
||||||
|
|
||||||
set_compile_opts || return 1
|
if [[ $FB_RUNNING_AS_SCRIPT -eq 0 ]]; then
|
||||||
fb_running_as_script || print_cmds || return 1
|
print_cmds || return 1
|
||||||
|
fi
|
||||||
set_completions || return 1
|
set_completions || return 1
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
cd "$(dirname "$(readlink -f $0)")/.."
|
cd "$(dirname "$(readlink -f $0)")/.."
|
||||||
|
export FB_RUNNING_AS_SCRIPT=1
|
||||||
. main.sh
|
. main.sh
|
||||||
FB_RUNNING_AS_SCRIPT=1
|
|
||||||
scr_name="$(bash_basename $0)"
|
scr_name="$(bash_basename $0)"
|
||||||
cmd="${scr_name//.sh/}"
|
cmd="${scr_name//.sh/}"
|
||||||
$cmd $@
|
$cmd $@
|
||||||
|
|||||||
1
scripts/print_pkg_mgr.sh
Symbolic link
1
scripts/print_pkg_mgr.sh
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
entry.sh
|
||||||
Reference in New Issue
Block a user