#!/bin/bash ################################ # Copyright 2003 Gentoo Linux # Written by John Mylchreest # Jul 22, 2003. PACKAGE_DIR="/var/db/pkg/" PORTAGE_DIR="/usr/portage" PACKAGE_USE_FILE="/etc/portage/package.use" CURRENT_FLAGS="$(emerge info | grep USE | sed 's:"::g' | sed 's:USE=::g')" PORTDIR_OVERLAY="$(emerge info | grep PORTDIR_OVERLAY | sed 's:"::g' | sed 's:PORTDIR_OVERLAY=::g')" get_packageflags() { echo GETFLAGS } if [ ! "$(whoami)" == "root" ] ; then echo "This script must be ran as root" exit 0 fi if [ -f "${PACKAGE_USE_FILE}" ] ; then echo "Moving ${PACKAGE_USE_FILE} to ${PACKAGE_USE_FILE}.orig" mv ${PACKAGE_USE_FILE} ${PACKAGE_USE_FILE}.orig fi echo "Searching packages currently installed for variation on USE flags, This will take a LONG time..." for PKG in $(grep -F -R "" ${PACKAGE_DIR}/*/*/USE | sed "s:\n: :g" | cut -f1 -d:) ; do PKG_CAT=${PKG/*\/\//} PKG_CAT=${PKG_CAT/\/*/} PKG_NAME=$(echo ${PKG} | sed "s:-[0-9].*::g" | sed "s:.*${PKG_CAT}/::g") PKG_VER=$(echo ${PKG} | sed "s:/USE::g" | sed "s:.*${PKG_CAT}/${PKG_NAME}-::g") PKG_USE="$(cat ${PACKAGE_DIR}/${PKG_CAT}/${PKG_NAME}-${PKG_VER}/USE | sed "s:\n: :g")" echo "Checking: ${PKG_CAT}/${PKG_NAME}-${PKG_VER}" if [ -f "${PORTDIR_OVERLAY}/${PKG_CAT}/${PKG_NAME}/${PKG_NAME}-${PKG_VER}.ebuild" ] ; then echo " Ebuild found in overlay" FILE="${PORTDIR_OVERLAY}/${PKG_CAT}/${PKG_NAME}/${PKG_NAME}-${PKG_VER}.ebuild" else FILE="${PORTAGE_DIR}/${PKG_CAT}/${PKG_NAME}/${PKG_NAME}-${PKG_VER}.ebuild" fi PKG_USEOFFSET="" for i in ${PKG_USE} ; do X=${i/-/} [ -z "$(echo " ${CURRENT_FLAGS}" | grep " ${i}")" ] && \ [ -n "$(cat ${FILE}| grep "IUSE=.*${X}.*")" ] && \ PKG_USEOFFSET="${PKG_USEOFFSET} ${i}" done if [ -n "${PKG_USEOFFSET}" ] ; then PKG_USEOFFSET=$(echo ${PKG_USEOFFSET} | sed 's: ::') echo " Found->'${PKG_USEOFFSET}'" echo "${PKG_CAT}/${PKG_NAME} ${PKG_USEOFFSET}" >> ${PACKAGE_USE_FILE} fi done