1
1
Fork 0
misc-tools/gentoo/emerge-precompile/emerge-precompile.sh

59 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
# VERSION=2018-01-28.2
# TODO: Register failed packes to /var/eos/precompile.failed
# and skip on rerun
#
# script based on idea of
# sven vermeulen http://blog.siphos.be/2013/04/gentoo-protip-using-buildpkgonly/
echo "Start w/ eix-sync" | logger -t precompile
eix-sync -q
LIST=$(mktemp);
#emerge -puDN --with-bdeps=y --color=n --columns --quiet=y world | grep "^.*[a-z][a-z][a-z]-.*/[a-z0-9].*" | awk '{print $2}' > ${LIST};
# New: Skip already compiled packages, by excluding result starting with [binary
# New: Include --binpkg-respect-use=y, should be default in this case, but just to be sure.
# New: Set PORTAGE_ELOG_SYSTEM-env-var so we won't get per-package-mails from ebuild on systems having sending mails enabled in make.conf
PORTAGE_ELOG_SYSTEM="save" emerge -puDNk --with-bdeps=y --changed-deps=y --binpkg-respect-use=y --color=n --quiet=y world | grep "^\[ebuild " | sed -nr 's/^\[.+\]\ ([^\ ]+)(\ .*|$)/\1/p' > ${LIST};
for PACKAGE in $(cat ${LIST});
do
skip=0
if [ -f /etc/eos/precompile.exclude ]; then
for i in `cat /etc/eos/precompile.exclude | grep -v "^#"`; do
if [ "`echo ${PACKAGE} | grep "^${i}" | wc -l`" == "1" ]; then
skip=1
break;
fi
done
fi
if [ "$skip" == "1" ]; then
echo "Skipping ${PACKAGE} due to /etc/eos/precompile.exclude"
echo "Skipping ${PACKAGE} due to /etc/eos/precompile.exclude" | logger -t precompile
else
printf "Building binary package for ${PACKAGE}... "
emerge -1uN --quiet-build --quiet=y --changed-deps=y --buildpkgonly =${PACKAGE};
if [[ $? -eq 0 ]];
then
echo "ok";
echo "OK: ${PACKAGE} " | logger -t precompile
else
echo "failed";
echo "FAILED: ${PACKAGE} " | logger -t precompile
fi
fi
done
echo "Cleaning distfiles + packages" | logger -t precompile
eclean packages
eclean distfiles
rm $LIST
echo "Ending" | logger -t precompile