summaryrefslogtreecommitdiff
path: root/sys-apps/personal-utils/files/emergefix
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/personal-utils/files/emergefix')
-rwxr-xr-xsys-apps/personal-utils/files/emergefix28
1 files changed, 22 insertions, 6 deletions
diff --git a/sys-apps/personal-utils/files/emergefix b/sys-apps/personal-utils/files/emergefix
index 8104342..56754bf 100755
--- a/sys-apps/personal-utils/files/emergefix
+++ b/sys-apps/personal-utils/files/emergefix
@@ -1,15 +1,31 @@
#!/bin/sh
set -e
-echo -e '\e[1;34m========== Update packages ==========\e[0m'
-emerge -auDN --with-bdeps=y --keep-going=y @world "$@" || {
+fail_ask() {
echo -ne "\e[1;31mContinue?\e[0m "
read
}
-echo -e '\e[1;34m========== Rebuil packages ==========\e[0m'
-revdep-rebuild -- "$@" || {
- echo -ne "\e[1;31mContinue?\e[0m "
- read
+
+get_perl_version() {
+ equery list -F '$version' dev-lang/perl
}
+
+#################################################################################
+perl_version="$(get_perl_version)"
+
+echo -e '\e[1;34m========== Update packages ==========\e[0m'
+emerge -auDN --with-bdeps=y --keep-going=y @world "$@" || fail_ask
+
+if [ "$(get_perl_version)" != "$perl_version" ]; then
+ echo -e '\e[1;34m========== Rebuil perl (cleaner) ==========\e[0m'
+ perl-cleaner --all -- -1a --keep-going=y || fail_ask
+fi
+
+echo -e '\e[1;34m========== Rebuil packages ==========\e[0m'
+revdep-rebuild -- "$@" || fail_ask
+
+echo -e '\e[1;34m========== Rebuild preserved ones ==========\e[0m'
+emerge --keep-going=y @preserved-rebuild || fail_ask
+
echo -e '\e[1;34m========== Clean packages ==========\e[0m'
emerge --depclean -a "$@"