diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index 4d15de6..2697a56 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,3 +1,13 @@ +------------------------------------------------------------------------------------------------------------------------------------ +Rx3-Docker/Docker Tools V 1.5.1 - A. GIBERT - 2026/04/10 +------------------------------------------------------------------------------------------------------------------------------------ + +- Improve and simplify mk_base_image script, +- Add RX3_LIB_DIR env variable support, +- Now support rx3-base 1.1.1. + + + ------------------------------------------------------------------------------------------------------------------------------------ Rx3-Docker/Docker Tools V 1.5.0 - A. GIBERT - 2026/04/07 ------------------------------------------------------------------------------------------------------------------------------------ diff --git a/SPECS/docker_tools.spec b/SPECS/docker_tools.spec index 0a8095c..fd34c83 100644 --- a/SPECS/docker_tools.spec +++ b/SPECS/docker_tools.spec @@ -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 +* Fri Apr 10 2026 Arnaud G. GIBERT - 1.5.1-1rx3.mga9 +- Update to 1.5.1 + * Tue Apr 7 2026 Arnaud G. GIBERT - 1.5.0-1rx3.mga9 - Create initial SPEC file for 1.5.0 on Mageia 9 diff --git a/sbin/docker_build_push b/sbin/docker_build_push index e6acc84..7086bf4 100755 --- a/sbin/docker_build_push +++ b/sbin/docker_build_push @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_logs b/sbin/docker_logs index c656025..2db532a 100755 --- a/sbin/docker_logs +++ b/sbin/docker_logs @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_mk_dir b/sbin/docker_mk_dir index 2eaaa37..09f54da 100755 --- a/sbin/docker_mk_dir +++ b/sbin/docker_mk_dir @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_mk_env b/sbin/docker_mk_env index a33a4f2..50e9e52 100755 --- a/sbin/docker_mk_env +++ b/sbin/docker_mk_env @@ -45,7 +45,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_network_down b/sbin/docker_network_down index 9e0a6b2..4015820 100755 --- a/sbin/docker_network_down +++ b/sbin/docker_network_down @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_network_up b/sbin/docker_network_up index f958da8..c5860bb 100755 --- a/sbin/docker_network_up +++ b/sbin/docker_network_up @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_restart b/sbin/docker_restart index c470595..ab0d6e0 100755 --- a/sbin/docker_restart +++ b/sbin/docker_restart @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_sbs b/sbin/docker_sbs index df3a3bd..4f61dfd 100755 --- a/sbin/docker_sbs +++ b/sbin/docker_sbs @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_start b/sbin/docker_start index 914c2c9..ab1e426 100755 --- a/sbin/docker_start +++ b/sbin/docker_start @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_stop b/sbin/docker_stop index ec212cd..a196685 100755 --- a/sbin/docker_stop +++ b/sbin/docker_stop @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/docker_tools_install b/sbin/docker_tools_install index c173d0c..10f74de 100755 --- a/sbin/docker_tools_install +++ b/sbin/docker_tools_install @@ -27,7 +27,8 @@ # Include #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" diff --git a/sbin/mk_base_image b/sbin/mk_base_image index 1d5f1a2..17c6e3d 100755 --- a/sbin/mk_base_image +++ b/sbin/mk_base_image @@ -28,7 +28,8 @@ # Includes #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/docker_tools.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/docker_tools.bash" @@ -38,7 +39,7 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION=1.0.0 +declare -g VERSION=1.0.1 declare -g NAME="MBI" declare -g HELP="usage: mk_base_image [[-h | --help] | [-V | --version] | [-p | --pre] | [-P | --post] | [-s | --strip] | [-u | --unstrip]] [-D | --direct] [-d | --distrib ] [-l | --lang ] [-L | --language ] [-m | --localtime ] [-r | --root ] [-t | --tmp ] [-T | --test] [-v | --verbose]" @@ -51,10 +52,6 @@ declare -g LANGUAGE_DEF="en_US.UTF-8:en_US:en" declare -g LOCALTIME_DEF="Europe/Paris" declare -Ag CONTAINER_TAB - CONTAINER_TAB["Builder,Name"]='rx3-builder' -CONTAINER_TAB["Builder,Source"]='docker.io/library/mageia:9' - CONTAINER_TAB["Root,Name"]='rx3-mageia${DISTRIB}' - CONTAINER_TAB["Root,Source"]='scratch' declare -g BUILDER_DIR="/" declare -g ROOT_DIR="${ROOT_DIR_DEF}" @@ -77,61 +74,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 @@ -212,6 +155,22 @@ function mbi_args_parse() +#----------------------------------------------------------------------------------------------------------------------------------- +# Container Tab Init +#----------------------------------------------------------------------------------------------------------------------------------- + +mbi_container_tab_init() +{ + CONTAINER_TAB["Builder,Name"]="rx3-builder" + CONTAINER_TAB["Builder,Source"]="docker.io/library/mageia:${DISTRIB_DEF}" + CONTAINER_TAB["Root,Name"]="rx3-mageia${DISTRIB}" + CONTAINER_TAB["Root,Source"]="scratch" +} + + + + + #----------------------------------------------------------------------------------------------------------------------------------- # Env Init #----------------------------------------------------------------------------------------------------------------------------------- @@ -286,8 +245,9 @@ 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 rx3-base fi fi } @@ -335,31 +295,47 @@ 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 + + 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 +346,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 +368,40 @@ 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 + 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/* } @@ -447,22 +412,15 @@ function mbi_base_strip() # Base UnStrip #----------------------------------------------------------------------------------------------------------------------------------- -function _mbi_base_unstrip() -{ - 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 - - # 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.update -a + + # Install uninstalled packages + cmd_exec chroot ${ROOT_DIR} urpmi --force cracklib-dicts dhcp-common dhcp-client cronie-anacron + + # Force reinstall all packages + cmd_exec chroot ${ROOT_DIR} urpmi --force --replacepkgs $(rpm -qa | grep -v gpg-pubkey) } @@ -483,6 +441,7 @@ export LC_ALL="C" mbi_args_parse "$@" +mbi_container_tab_init if [[ ${MODE} == "EXIT" ]] @@ -494,8 +453,6 @@ fi echo_error "MBI: Mode: [${MODE}] Verbose: [${VERBOSE}] Distrib: [${DISTRIB}] Direct: [${DIRECT}] Dry_Run: [${DRY_RUN}] Lang: [${LANG}] Language: [${LANGUAGE}] Local_Time: [${LOCALTIME}] Builder_Dir: [${BUILDER_DIR}] Root_Dir: [${ROOT_DIR}] Tmp_Dir: [${TMP_DIR}]" -eval CONTAINER_TAB["Root,Name"]=${CONTAINER_TAB["Root,Name"]} - if [[ "${MODE}" == "DEFAULT" ]] then mbi_env_init "TRUE" diff --git a/usr/lib/rx3/docker_tools.bash b/usr/lib/rx3/docker_tools.bash index ad800fe..d7d749b 100644 --- a/usr/lib/rx3/docker_tools.bash +++ b/usr/lib/rx3/docker_tools.bash @@ -22,13 +22,21 @@ # #----------------------------------------------------------------------------------------------------------------------------------- +if [[ "${RX3_DOCKER_TOOLS}" != "" ]] +then + return +else + declare -g RX3_DOCKER_TOOLS=1 +fi + #----------------------------------------------------------------------------------------------------------------------------------- # Includes #----------------------------------------------------------------------------------------------------------------------------------- -. /usr/lib/rx3/base.bash +: "${RX3_LIB_DIR:=/usr/lib/rx3}" +. "${RX3_LIB_DIR}/base.bash"