diff options
author | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2012-09-22 18:47:21 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2012-09-22 18:47:21 -0300 |
commit | a323ff09d756dd06a559586467c84dbe78069060 (patch) | |
tree | 72ef17c8ece9b29e83634340cd78a5e3cba4ac10 /clean-pacman | |
parent | cddf27b728fd46157685b3791245fed53393cb18 (diff) |
Deprecate clean-pacman in favor of smart chcleanup
Chcleanup compares the currently installed packages with a clean system list of
packages + the package dependencies and removes the leftovers.
Treepkg runs it as pre-build hook, so FULLBUILDCMD finds only the needed
dependencies.
Diffstat (limited to 'clean-pacman')
-rwxr-xr-x | clean-pacman | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/clean-pacman b/clean-pacman deleted file mode 100755 index 2bfa225..0000000 --- a/clean-pacman +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -# Copyright 2012 Nicolás Reynolds <fauno@parabola.nu> Licensed under GPLv3 -# -# Smart cleanup of the chroot, restores chroot to its original state but also -# leaves the dependencies already installed that are needed by the current -# package. In other words, it removes everything that's left. -# -# Useful when you're building a lot of packages one after another and they -# share some dependencies. -# -# Logic: tap into `makepkg -sr`, collect required packages and remove the -# leftovers -# -# Use it as the PACMAN var for makepkg: `PACMAN=$0 makepkg` -# -# Notes -# makepkg runs the following flags three times (depends, makedepends, checkdepends) -# -T check deps (collect here) -# -S install missing deps (remove leftovers here) -# -T check if installed correctly (ignore) -# -R remove installed deps (skip) - -set -e -set -x - -makepid=$(ps --no-header -o pid -C makepkg | head -n1 | tr -d " ") -cleanup_log=/tmp/libretools-cleanup-${makepid}.log -checkdep=/tmp/libretools-dep-check-${makepid} - -cmd="$(echo "$@" | grep -o "\-\(T\|S\|R\|Q\)[^ ]*")" -# remove all flags -args="$(echo " $@" | sed "s/ \-[^ ]\+//g")" - -case $cmd in - -# Collect the packages that are going to be installed, but use a clean database -# to get the full needed list. -# See update-cleansystem - -T) - if [ ! -f "${checkdep}" ]; then -# Use sudo because $0 is run as normal user on -T -# TODO -Sy only once - sudo pacman -b "${BD:-/var/lib/libretools/clean}" -Sy >/dev/null 2>&1 - sudo pacman -b "${BD:-/var/lib/libretools/clean}" \ - -Sp \ - --print-format "%n" \ - ${args[@]} >${cleanup_log} 2>/dev/null -# Deps are collected, so skip next time - touch "${checkdep}" - -# Diff against previously installed packages and remove the unneeded ones -# -# We don't collect during -S because we never get here if depencies are met -# during -T - cleanup=($(comm -23 \ - <(pacman -Qq | sort) \ - <(cat /etc/libretools.d/cleansystem ${cleanup_log} | sort -u) - )) - - if [ ${#cleanup[@]} -gt 0 ]; then - sudo pacman -Rn --noconfirm ${cleanup[@]} 1>&2 - fi -# This is the second -T run - else -# Remove the cleanup log at the end - rm "${cleanup_log}" "${checkdep}" - fi - ;; -# DON'T LET MAKEPKG DO REMOVALS OF ITS OWN - -R) exit 0;; -esac - -# Make makepkg dreams come true -pacman $@ |