- Remove mbi_func_exec and recurive recall from mk_base_image.

This commit is contained in:
2026-04-08 23:13:40 +02:00
parent d32423f917
commit 38ee56d328
3 changed files with 104 additions and 142 deletions

View File

@@ -1,3 +1,12 @@
------------------------------------------------------------------------------------------------------------------------------------
Rx3-Docker/Docker Tools V 1.5.1 - A. GIBERT - 2026/04/09
------------------------------------------------------------------------------------------------------------------------------------
- Improve and simplify mk_base_image script,
- Now support rx3-base 1.1.1.
------------------------------------------------------------------------------------------------------------------------------------
Rx3-Docker/Docker Tools V 1.5.0 - A. GIBERT - 2026/04/07
------------------------------------------------------------------------------------------------------------------------------------

View File

@@ -24,7 +24,7 @@
%define name docker_tools
%define version 1.5.0
%define version 1.5.1
%define release %mkrel 1rx3
%global debug_package %{nil}
@@ -174,5 +174,8 @@ cp sbin/* %{buildroot}%{_sbindir}
#-----------------------------------------------------------------------------------------------------------------------------------
%changelog
* Thu Apr 9 2026 Arnaud G. GIBERT <arnaud@rx3.net> - 1.5.1-1rx3.mga9
- Update to 1.5.1
* Tue Apr 7 2026 Arnaud G. GIBERT <arnaud@rx3.net> - 1.5.0-1rx3.mga9
- Create initial SPEC file for 1.5.0 on Mageia 9

View File

@@ -77,61 +77,7 @@ declare -g NAME_SERVER_1='8.8.8.8'
#-----------------------------------------------------------------------------------------------------------------------------------
# Func Exec
#-----------------------------------------------------------------------------------------------------------------------------------
function mbi_func_exec()
{
func="$1"
arg="$2"
name="$3"
builder_mode="$4"
echo_error "Executing Name: [${name}] Func: [${func}] Arg: [${arg}] Builder_Mode: [${builder_mode}]"
if [[ "${builder_mode}" == "TRUE" ]]
then
if [[ "${BUILDER_DIR}" != "/" ]]
then
echo_error "Only direct ${name} and '/' Builder Root dir supported: Recall in ..."
mkdir -p "${BUILDER_DIR}/${ROOT_DIR_DEF}"
mount --bind "${ROOT_DIR}" "${BUILDER_DIR}/${ROOT_DIR_DEF}"
cmd_exec chroot "${BUILDER_DIR}" mk_base_image ${arg} --direct --root "${ROOT_DIR_DEF}" ${RECALL_OPTS}
umount "${BUILDER_DIR}/${ROOT_DIR_DEF}"
return
fi
else
if [[ "${ROOT_DIR}" != "/" ]]
then
echo_error "Only direct ${name} and '/' Target Root dir supported: Recall..."
cmd_exec chroot "${ROOT_DIR}" mk_base_image ${arg} --direct --root "/" "${RECALL_OPTS}"
return
fi
fi
set +e
# find / 2>/dev/null | grep -v -e "^/dev" -e "^/proc" -e "^/run" -e "^/sys/" >/root/before
declare -f ${func} | sed -n '/^{/,/^}/p' | sed -e '1d;$d' -e 's/;$//' | grep -v -E '^$|^#' | while read -r line
do
sh_exec "${line}"
done
# find / 2>/dev/null | grep -v -e "^/dev" -e "^/proc" -e "^/run" -e "^/sys/" >/root/after
}
#-----------------------------------------------------------------------------------------------------------------------------------
# Version
@@ -286,8 +232,10 @@ function mbi_env_init()
echo_error "Making Builder..."
cmd_exec cp /etc/resolv.conf "${BUILDER_DIR}/etc/resolv.conf"
cmd_exec chroot "${BUILDER_DIR}" bash -c 'curl -L http://mirror.rx3.net/rx3/sbin/urpmi-setup-'${DISTRIB}' | bash'
cmd_exec chroot "${BUILDER_DIR}" urpmi --force docker_tools-devel
# cmd_exec chroot "${BUILDER_DIR}" urpmi --force docker_tools-devel
cmd_exec chroot "${BUILDER_DIR}" urpmi --force rx3-base
fi
fi
}
@@ -335,31 +283,48 @@ function mbi_env_deinit()
# Base Install Pre
#-----------------------------------------------------------------------------------------------------------------------------------
function _mbi_base_install_pre()
{
rm /var/cache/urpmi/rpms/*
urpmi --root ${ROOT_DIR} --force --no-install --no-recommends --nolock --reinstall --download-all ${TMP_DIR} --downloader curl makedev filesystem curl urpmi rx3-base docker_tools-devel
rpm --root ${ROOT_DIR} --initdb
rpm --root ${ROOT_DIR} -Uvh --nodeps --noscripts ${TMP_DIR}/rpms/filesystem*
rm ${TMP_DIR}/rpms/filesystem*
rpm --root ${ROOT_DIR} -Uvh --nodeps --noscripts ${TMP_DIR}/rpms/makedev*
rm ${TMP_DIR}/rpms/makedev*
rpm --root ${ROOT_DIR} -Uvh --nodeps ${TMP_DIR}/rpms/*
rm -R ${TMP_DIR}
# Enable Neworking
echo -e "nameserver ${NAME_SERVER_0}\nnameserver ${NAME_SERVER_1}" >"${ROOT_DIR}/etc/resolv.conf"
echo -e "NETWORKING=yes" >"${ROOT_DIR}/etc/sysconfig/network"
}
function mbi_base_install_pre()
{
mbi_func_exec "_mbi_base_install_pre" "--pre" "pre-installing" "TRUE"
if [[ "${DIRECT}" == "FALSE" ]]
then
echo_error "Chrooting in Builder_Dir: [${BUILDER_DIR}] for Pre-Install.."
cmd_exec mkdir -p "${BUILDER_DIR}/${ROOT_DIR_DEF}"
cmd_exec mount --bind "${ROOT_DIR}" "${BUILDER_DIR}/${ROOT_DIR_DEF}"
chroot_cmd="chroot ${BUILDER_DIR}"
root_dir="${ROOT_DIR_DEF}"
else
echo_error "Direct Pre-Install..."
chroot_cmd=""
root_dir="${ROOT_DIR}"
fi
cmd_exec ${chroot_cmd} bash -c 'rm /var/cache/urpmi/rpms/* || true'
# cmd_exec ${chroot_cmd} urpmi --root ${root_dir} --force --no-install --no-recommends --nolock --reinstall --download-all ${TMP_DIR} --downloader curl makedev filesystem curl urpmi rx3-base docker_tools-devel
cmd_exec ${chroot_cmd} urpmi --root ${root_dir} --force --no-install --no-recommends --nolock --reinstall --download-all ${TMP_DIR} --downloader curl makedev filesystem curl urpmi rx3-base
cmd_exec ${chroot_cmd} bash -c 'rpm --root '${root_dir}' --initdb'
cmd_exec ${chroot_cmd} bash -c 'rpm --root '${root_dir}' -Uvh --nodeps --noscripts '${TMP_DIR}'/rpms/filesystem*'
cmd_exec ${chroot_cmd} bash -c 'rm '${TMP_DIR}'/rpms/filesystem*'
cmd_exec ${chroot_cmd} bash -c 'rpm --root '${root_dir}' -Uvh --nodeps --noscripts '${TMP_DIR}'/rpms/makedev*'
cmd_exec ${chroot_cmd} bash -c 'rm '${TMP_DIR}'/rpms/makedev*'
cmd_exec ${chroot_cmd} bash -c 'rpm --root '${root_dir}' -Uvh --nodeps '${TMP_DIR}'/rpms/*'
cmd_exec ${chroot_cmd} bash -c 'rm -R '${TMP_DIR}
# Enable Neworking
sh_exec 'echo -e "nameserver '${NAME_SERVER_0}'\nnameserver '${NAME_SERVER_1}'" >"'${ROOT_DIR}'/etc/resolv.conf"'
sh_exec 'echo -e "NETWORKING=yes" >"'${ROOT_DIR}'/etc/sysconfig/network"'
if [[ "${DIRECT}" == "FALSE" ]]
then
cmd_exec umount "${BUILDER_DIR}/${ROOT_DIR_DEF}"
fi
}
@@ -370,22 +335,18 @@ function mbi_base_install_pre()
# Base Install Post
#-----------------------------------------------------------------------------------------------------------------------------------
function _mbi_base_install_post()
{
urpmi-setup --verbose --distrib "${DISTRIB}"
urpmi --force --auto-update
urpmi --force basesystem-minimal locales locales-en shared-mime-info vim-minimal mpm
echo -e "LANG=${LANG}\nLANGUAGE=${LANGUAGE}" >"${ROOT_DIR}/etc/locale.conf"
ln -s /usr/share/zoneinfo/${LOCALTIME} "${ROOT_DIR}/etc/localtime"
}
function mbi_base_install_post()
{
mbi_func_exec "_mbi_base_install_post" "--post" "post-installing" "FALSE"
cmd_exec chroot ${ROOT_DIR} urpmi-setup --verbose --distrib "${DISTRIB}"
# cmd_exec chroot ${ROOT_DIR} bash -c 'curl -L http://mirror.rx3.net/rx3/sbin/urpmi-setup-'${DISTRIB}' | bash'
cmd_exec chroot ${ROOT_DIR} urpmi --force --auto-update
cmd_exec chroot ${ROOT_DIR} urpmi --force basesystem-minimal locales locales-en shared-mime-info vim-minimal mpm
sh_exec 'echo -e "LANG='${LANG}'\nLANGUAGE='${LANGUAGE}'" >"'"${ROOT_DIR}"'/etc/locale.conf"'
cmd_exec chroot ${ROOT_DIR} ln -s /usr/share/zoneinfo/${LOCALTIME} "/etc/localtime"
}
@@ -396,47 +357,42 @@ function mbi_base_install_post()
# Base Strip
#-----------------------------------------------------------------------------------------------------------------------------------
function _mbi_base_strip()
{
# RPM force uninstall
rpm -e --nodeps cracklib-dicts buildah
rpm -e dhcp-common dhcp-client cronie-anacron opencontainers-runc lib64gpgme11 gnupg2 lib64ksba8 lib64usb1.0_0 lib64npth0 lib64assuan0
# Docker mounts tmpfs at /dev and procfs at /proc so we can remove them
rm -rf /dev /proc 2>/dev/null
mkdir -p /dev /proc 2>/dev/null
# Keep only en_US.UTF8 locale
rm -rf /usr/share/locale/!("en_US.UTF-8"|"locale.alias"|"locale-archive")
rm -rf /usr/{{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive}
# Docs
rm -rf /usr/share/{man,doc,info,gnome/help}
# sln
rm -rf /sbin/sln
# ldconfig
rm -rf /etc/ld.so.cache /var/cache/ldconfig
mkdir -p --mode=0755 /var/cache/ldconfig
# UDev
rm -rf /usr/lib/udev
rm -rf /etc/udev/hwdb.bin
rm -rf /usr/lib/.build-id
# Cache & Tmp
rm -rf /var/cache/urpmi/rpms 2>/dev/null
rm -rf /tmp/*
}
function mbi_base_strip()
{
mbi_func_exec "_mbi_base_strip" "--strip" "stripping" "FALSE"
# RPM force uninstall
# cmd_exec chroot ${ROOT_DIR} rpm -e --nodeps cracklib-dicts buildah
# cmd_exec chroot ${ROOT_DIR} rpm -e dhcp-common dhcp-client cronie-anacron opencontainers-runc lib64gpgme11 gnupg2 lib64ksba8 lib64usb1.0_0 lib64npth0 lib64assuan0
cmd_exec chroot ${ROOT_DIR} rpm -e --nodeps cracklib-dicts
cmd_exec chroot ${ROOT_DIR} rpm -e dhcp-common dhcp-client cronie-anacron
# Docker mounts tmpfs at /dev and procfs at /proc so we can remove them
cmd_exec rm -rf "${ROOT_DIR}"/dev "${ROOT_DIR}"/proc 2>/dev/null
cmd_exec mkdir -p "${ROOT_DIR}"/dev "${ROOT_DIR}"/proc 2>/dev/null
# Keep only en_US.UTF8 locale
cmd_exec rm -rf "${ROOT_DIR}"/usr/share/locale/!("en_US.UTF-8"|"locale.alias"|"locale-archive")
cmd_exec rm -rf "${ROOT_DIR}"/usr/{{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive}
# Docs
cmd_exec rm -rf "${ROOT_DIR}"/usr/share/{man,doc,info,gnome/help}
# sln
cmd_exec rm -rf "${ROOT_DIR}"/sbin/sln
# ldconfig
cmd_exec rm -rf "${ROOT_DIR}"/etc/ld.so.cache "${ROOT_DIR}"/var/cache/ldconfig
cmd_exec mkdir -p --mode=0755 "${ROOT_DIR}"/var/cache/ldconfig
# UDev
cmd_exec rm -rf "${ROOT_DIR}"/usr/lib/udev
cmd_exec rm -rf "${ROOT_DIR}"/etc/udev/hwdb.bin
cmd_exec rm -rf "${ROOT_DIR}"/usr/lib/.build-id
# Cache & Tmp
cmd_exec rm -rf "${ROOT_DIR}"/var/cache/urpmi/rpms 2>/dev/null
cmd_exec rm -rf "${ROOT_DIR}"/tmp/*
}
@@ -449,20 +405,14 @@ function mbi_base_strip()
function _mbi_base_unstrip()
{
urpmi.update -a
cmd_exec chroot ${ROOT_DIR} urpmi.update -a
# Install uninstalled packages
urpmi --force cracklib-dicts buildah dhcp-common dhcp-client cronie-anacron buildah opencontainers-runc lib64gpgme11 gnupg2 lib64ksba8 lib64usb1.0_0 lib64npth0 lib64assuan0
# cmd_exec chroot ${ROOT_DIR} urpmi --force cracklib-dicts buildah dhcp-common dhcp-client cronie-anacron buildah opencontainers-runc lib64gpgme11 gnupg2 lib64ksba8 lib64usb1.0_0 lib64npth0 lib64assuan0
cmd_exec chroot ${ROOT_DIR} urpmi --force cracklib-dicts dhcp-common dhcp-client cronie-anacron
# Force reinstall all packages
urpmi --force --replacepkgs $(rpm -qa | grep -v gpg-pubkey)
}
function mbi_base_unstrip()
{
mbi_func_exec "_mbi_base_unstrip" "--unstrip" "unstripping" "FALSE"
cmd_exec chroot ${ROOT_DIR} urpmi --force --replacepkgs $(rpm -qa | grep -v gpg-pubkey)
}