#!/bin/bash /usr/sbin/env-update . /etc/profile # Setup environment vars export ETP_NONINTERACTIVE=1 if [ -d "/usr/portage/licenses" ]; then export ACCEPT_LICENSE="$(ls /usr/portage/licenses -1 | xargs)" fi safe_run() { local updated=0 for ((i=0; i < 42; i++)); do "${@}" && { updated=1; break; } if [ ${i} -gt 6 ]; then sleep 3600 || return 1 else sleep 1200 || return 1 fi done if [ "${updated}" = "0" ]; then return 1 fi return 0 } export FORCE_EAPI=2 safe_run equo update || exit 1 export ETP_NOINTERACTIVE=1 safe_run equo upgrade --fetch || exit 1 equo upgrade || exit 1 echo "-5" | equo conf update # check if a kernel update is needed kernel_target_pkg="$(equo match -q --installed virtual/linux-binary)" current_kernel=$(equo match --installed "${kernel_target_pkg}" -qv) available_kernel=$(equo match "${kernel_target_pkg}" -qv) # drop revision (-r**) # hack while waiting for --showslot current_kernel="${current_kernel%-r*}" available_kernel="${available_kernel%-r*}" if [ "${current_kernel}" != "${available_kernel}" ] && \ [ -n "${available_kernel}" ] && [ -n "${current_kernel}" ]; then echo echo "@@ Upgrading kernel to ${available_kernel}" echo safe_run kernel-switcher switch "${available_kernel}" || exit 1 equo remove "${current_kernel}" || exit 1 # now delete stale files in /lib/modules for slink in $(find /lib/modules/ -type l); do if [ ! -e "${slink}" ]; then echo "Removing broken symlink: ${slink}" rm "${slink}" # ignore failure, best effort # check if parent dir is empty, in case, remove paren_slink=$(dirname "${slink}") paren_children=$(find "${paren_slink}") if [ -z "${paren_children}" ]; then echo "${paren_slink} is empty, removing" rmdir "${paren_slink}" # ignore failure, best effort fi fi done else echo "@@ Not upgrading kernels:" echo "Current: ${current_kernel}" echo "Avail: ${available_kernel}" echo fi rm -rf /var/lib/entropy/client/packages # copy Portage config from sablink.nas-central.org entropy repo to system for conf in package.mask package.unmask package.keywords make.conf package.use; do repo_path=/var/lib/entropy/client/database/*/sablink.nas-central.org/standard repo_conf=$(ls -1 ${repo_path}/*/*/${conf} | sort | tail -n 1 2>/dev/null) if [ -n "${repo_conf}" ]; then target_path="/etc/portage/${conf}" if [ "${conf}" = "make.conf" ]; then target_path="/etc/make.conf" fi if [ ! -d "${target_path}" ]; then # do not touch dirs cp "${repo_conf}" "${target_path}" # ignore fi fi done # split config file for conf in 00-sabayon.package.use; do repo_path=/var/lib/entropy/client/database/*/sablink.nas-central.org/standard repo_conf=$(ls -1 ${repo_path}/*/*/${conf} | sort | tail -n 1 2>/dev/null) if [ -n "${repo_conf}" ]; then target_path="/etc/portage/${conf/00-sabayon.}/${conf}" target_dir=$(dirname "${target_path}") if [ -f "${target_dir}" ]; then # remove old file rm "${target_dir}" # ignore failure fi if [ ! -d "${target_path}" ]; then mkdir -p "${target_path}" # ignore failure fi cp "${repo_conf}" "${target_path}" # ignore fi done equo query list installed -qv > /etc/sablink-pkglist