recipe_gentoo/recipes/recipe_check_packages.sh

66 lines
2.8 KiB
Bash
Executable File

print_config_title 'CHECK PACKAGES'
# For each package to check
for package in ${PACKAGES[@]}
do
echo -e "Check package : ${BLUE}${package}${NC}"
# Check if package is install
result=$(emerge -pO --quiet ${package})
# Return Code
RC=$?
# Strip multiple space
result=$(echo -e ${result})
# If return code different of 0
if [ $RC -ne 0 ]
then
echo -e "${RED}ERROR with ${package} : return code = $RC , please check manually this package (probably USE or KEYWORD to change).${NC}"
PACKAGES_TO_CHECK=${PACKAGES_TO_CHECK}" ${package}"
echo -e "-----------------------------\n"
else
#echo ${result}
# If package is installed
if [[ ${result} == *"[ebuild R"*"${package}"* ]] || [[ ${result} == *"[binary R"*"${package}"* ]]
then
echo -e "${GREEN}Package ${package} INSTALLED : check OK${NC}"
# If package reinstall forced for some reason
elif [[ ${result} == *"[ebuild r"*"${package}"* ]] || [[ ${result} == *"[binary r"*"${package}"* ]]
then
echo -e "${GREEN}Package ${package} INSTALLED BUT reinstall forced for some reason : check OK${NC}\n"
# If package need to be installed
elif [[ ${result} == *"[ebuild N"*"${package}"* ]] || [[ ${result} == *"[binary N"*"${package}"* ]]
then
echo -e "${RED}Package ${package} NOT INSTALLED (New) : check KO${NC}"
PACKAGES_TO_CHECK=${PACKAGES_TO_CHECK}" ${package}"
# If package updating to another version
elif [[ ${result} == *"[ebuild U"*"${package}"* ]] || [[ ${result} == *"[binary U"*"${package}"* ]]
then
echo -e "${RED}Package ${package} INSTALLED BUT updating to another version (Updating) : check OK${NC}"
PACKAGES_TO_CHECK=${PACKAGES_TO_CHECK}" ${package}"
# If package best version seems lower
elif [[ ${result} == *"[ebuild D"*"${package}"* ]] || [[ ${result} == *"[binary D"*"${package}"* ]]
then
echo -e "${RED}Package ${package} INSTALLED BUT best version seems lower (Downgrading) : check OK${NC}"
PACKAGES_TO_CHECK=${PACKAGES_TO_CHECK}" ${package}"
# If package blocked
elif [[ ${result} == *"[ebuild B"*"${package}"* ]] || [[ ${result} == *"[binary B"*"${package}"* ]]
then
echo -e "${RED}Package ${package} NOT INSTALLED (Block) unresolved conflict : check KO${NC}"
PACKAGES_TO_CHECK=${PACKAGES_TO_CHECK}" ${package}"
# If package blocked but auto resolved conflict
elif [[ ${result} == *"[ebuild b"*"${package}"* ]] || [[ ${result} == *"[binary b"*"${package}"* ]]
then
echo -e "${RED}Package ${package} NOT INSTALLED (Block) but auto resolved conflict : check KO${NC}"
PACKAGES_TO_CHECK=${PACKAGES_TO_CHECK}" ${package}"
# Other reason
else
echo -e "${RED}Package ${package} NOT INSTALLED (Other reason) : check KO${NC}"
PACKAGES_TO_CHECK=${PACKAGES_TO_CHECK}" ${package}"
fi
echo -e "-------------------------------------------------\n"
fi
done