From c000286dabf780061b46cfdadd2121869cd9e02a Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 4 Jan 2015 15:59:26 -0500 Subject: Generate the duplicated code in chcleanup --- src/chroot-tools/chcleanup | 115 --------------------------------------------- 1 file changed, 115 deletions(-) delete mode 100755 src/chroot-tools/chcleanup (limited to 'src/chroot-tools/chcleanup') diff --git a/src/chroot-tools/chcleanup b/src/chroot-tools/chcleanup deleted file mode 100755 index 4a11176..0000000 --- a/src/chroot-tools/chcleanup +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash -# Copyright (C) 2011-2012 Nicolás Reynolds -# Copyright (C) 2012-2013 Luke Shumaker -# -# The plain, msg, msg2, and error functions are Copyright (C) their -# authors in devtools, and are assumed to be GPLv2+. -# -# License: GNU GPLv3+ -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Performs chroot cleanup smartly, it only removes the unneeded packages or -# leaves you with a cleansystem -# -# See: HOOKPREBUILD - -set -eE - -DRYRUN=${DRYRUN:-false} - -################################################################################ -# Define these here to avoid having dependencies on outside files - -if type gettext &>/dev/null; then - _() { gettext "$@"; } -else - _() { echo "$@"; } -fi - -plain() { - local mesg="$(_ "$1")"; shift - printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -msg() { - local mesg="$(_ "$1")"; shift - printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -msg2() { - local mesg="$(_ "$1")"; shift - printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -error() { - local mesg="$(_ "$1")"; shift - printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -################################################################################ - -if [[ ! -f /.arch-chroot ]] && ! ${DRYRUN}; then - error "(chcleanup): Must be run inside of a chroot" - exit 1 -fi - -source /etc/libretools.d/chroot.conf -# If we're running makepkg -if [[ -f PKGBUILD ]]; then - export CARCH="$(. /etc/makepkg.conf; printf '%s' "$CARCH")" - source ./PKGBUILD - CHROOTEXTRAPKG+=("${depends[@]}" - "${makedepends[@]}" - "${checkdepends[@]}") -fi - -msg "Cleaning chroot..." - -# Sync the local repo with pacman -cp /repo/repo.db /var/lib/pacman/sync/repo.db - -# Setup the temporary directory -TEMPDIR="$(mktemp --tmpdir -d ${0##*/}.XXXXXXXXXX)" -trap "rm -rf -- $(printf '%q' "$TEMPDIR")" EXIT - -cp -a /var/lib/pacman/sync "${TEMPDIR}/" -pkglist="${TEMPDIR}"/pkglist.txt - -# Get the full list of packages needed by dependencies, including the base system -msg2 "Creating a full list of packages..." -pacman -b "${TEMPDIR}" \ - -Sp --print-format "%n" base-devel "${CHROOTEXTRAPKG[@]}" >"$pkglist" || { - ret=$? - error "Could not create a full list of packages, exiting." - plain "This is likely caused by a dependency that could not be found." - exit $ret -} - -# Diff installed packages against a clean chroot then remove leftovers -packages=($(comm -23 <(pacman -Qq | sort -u) \ - <(sort -u "${pkglist}"))) - -if [[ ${#packages[@]} = 0 ]]; then - msg2 "No packages to remove" -else - msg2 "Removing %d packages" ${#packages[@]} - - if ${DRYRUN}; then - echo "${packages[*]}" - else - # Only remove leftovers, -Rcs removes too much - pacman --noconfirm -Rn "${packages[@]}" - fi -fi -- cgit v1.2.3-54-g00ecf