summaryrefslogtreecommitdiff
path: root/clean-pacman
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@kiwwwi.com.ar>2012-09-22 18:47:21 -0300
committerNicolás Reynolds <fauno@kiwwwi.com.ar>2012-09-22 18:47:21 -0300
commita323ff09d756dd06a559586467c84dbe78069060 (patch)
tree72ef17c8ece9b29e83634340cd78a5e3cba4ac10 /clean-pacman
parentcddf27b728fd46157685b3791245fed53393cb18 (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-xclean-pacman74
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 $@