Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/scripts/pacman-optimize.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/pacman-optimize.sh.in')
-rw-r--r--scripts/pacman-optimize.sh.in189
1 files changed, 0 insertions, 189 deletions
diff --git a/scripts/pacman-optimize.sh.in b/scripts/pacman-optimize.sh.in
deleted file mode 100644
index f5ad924b..00000000
--- a/scripts/pacman-optimize.sh.in
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/bash
-#
-# pacman-optimize
-# @configure_input@
-#
-# Copyright (c) 2006-2016 Pacman Development Team <pacman-dev@archlinux.org>
-# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
-#
-# 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 2 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 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 <http://www.gnu.org/licenses/>.
-#
-
-# gettext initialization
-export TEXTDOMAIN='pacman-scripts'
-export TEXTDOMAINDIR='@localedir@'
-
-USE_COLOR='y'
-
-declare -r myver='@PACKAGE_VERSION@'
-
-eval $(awk '/DBPath/ {print $1$2$3}' @sysconfdir@/pacman.conf)
-dbroot="${DBPath:-@localstatedir@/lib/pacman/}"
-
-m4_include(library/output_format.sh)
-
-usage() {
- printf "pacman-optimize (pacman) %s\n\n" "$myver"
- printf -- "$(gettext "Usage: %s [--nocolor] [pacman_db_root]")\n\n" "$0"
- printf -- "$(gettext "\
-pacman-optimize is a little hack that should improve the performance\n\
-of pacman when reading/writing to its filesystem-based database.\n\n")"
- printf -- "$(gettext "\
-Because pacman uses many small files to keep track of packages,\n\
-there is a tendency for these files to become fragmented over time.\n\
-This script attempts to relocate these small files into one\n\
-continuous location on your hard drive. The result is that the hard\n\
-drive should be able to read them faster, since the hard drive head\n\
-does not have to move around the disk as much.\n")"
-}
-
-version() {
- printf "pacman-optimize (pacman) %s\n" "$myver"
- printf -- "$(gettext "\
-Copyright (c) 2006-2016 Pacman Development Team <pacman-dev@archlinux.org>.\n\
-Copyright (C) 2002-2006 Judd Vinet <jvinet@zeroflux.org>.\n\n\
-This is free software; see the source for copying conditions.\n\
-There is NO WARRANTY, to the extent permitted by law.\n")"
-}
-
-die() {
- error "$@"
- exit 1
-}
-
-die_r() {
- rm -f "$lockfile"
- die "$@"
-}
-
-# PROGRAM START
-
-# determine whether we have gettext; make it a no-op if we do not
-if ! type gettext &>/dev/null; then
- gettext() {
- echo "$@"
- }
-fi
-
-if [[ $1 = "-h" || $1 = "--help" ]]; then
- usage
- exit 0
-fi
-
-if [[ $1 = "-V" || $1 = "--version" ]]; then
- version
- exit 0
-fi
-
-if [[ $1 = "--nocolor" ]]; then
- USE_COLOR='n'
- shift
-fi
-
-m4_include(library/term_colors.sh)
-
-if [[ -n $1 ]]; then
- dbroot="$1"
-fi
-
-if ! type -p openssl >/dev/null; then
- die "$(gettext "Cannot find the %s binary required for verifying integrity.")" "openssl"
-fi
-
-if [[ ! -d $dbroot || ! -d $dbroot/local ]]; then
- die "$(gettext "%s does not exist or is not a directory.")" "$dbroot"
-fi
-
-if [[ ! -w $dbroot ]]; then
- die "$(gettext "You must have correct permissions to optimize the database.")"
-fi
-
-# strip any trailing slash from our dbroot
-dbroot="${dbroot%/}"
-lockfile="${dbroot}/db.lck"
-localdb="${dbroot}/local"
-
-# make sure pacman isn't running
-if [[ -f $lockfile ]]; then
- die "$(gettext "Pacman lock file was found. Cannot run while pacman is running.")"
-fi
-# do not let pacman run while we do this
-touch "$lockfile"
-
-workdir=$(mktemp -d "${TMPDIR:-/tmp}/pacman-optimize.XXXXXXXXXX") ||
- die_r "$(gettext "Cannot create temporary directory for database building.")\n" >&2
-
-# step 1: sum the old db
-msg "$(gettext "MD5sum'ing the old database...")"
-(cd "$localdb" && find . -type f -print0 | \
- xargs -0 openssl dgst -md5 | sort > "$workdir/pacsums.old")
-
-# step 2: tar it up
-msg "$(gettext "Tar'ing up %s...")" "$localdb"
-bsdtar -czf "$workdir/pacman-db.tar.gz" -C "$localdb" ./
-if (( $? )); then
- rm -rf "$workdir"
- die_r "$(gettext "Tar'ing up %s failed.")" "$localdb"
-fi
-
-# step 3: make and sum the new db side-by-side with the old
-msg "$(gettext "Making and MD5sum'ing the new database...")"
-mkdir "$localdb.new"
-bsdtar -xpf "$workdir/pacman-db.tar.gz" -C "$localdb.new"
-if (( $? )); then
- rm -rf "$workdir"
- die_r "$(gettext "Untar'ing %s failed.")" "$localdb"
-fi
-# immediate sync following extraction should get it written continuously on HDD
-msg "$(gettext "Syncing database to disk...")"
-sync
-(cd "$localdb.new" && find . -type f -print0 | \
- xargs -0 openssl dgst -md5 | sort > "$workdir/pacsums.new")
-
-# step 4: compare the sums
-msg "$(gettext "Checking integrity...")"
-read -ra old_dgst < <(openssl dgst -md5 < "$workdir/pacsums.old")
-read -ra new_dgst < <(openssl dgst -md5 < "$workdir/pacsums.new")
-if [[ ${old_dgst[@]:(-1)} != ${new_dgst[@]:(-1)} ]]; then
- # failed
- # leave our pacman-optimize tmpdir for checking to see what doesn't match up
- rm -rf "$localdb.new"
- die_r "$(gettext "Integrity check FAILED, reverting to old database.")"
-fi
-
-# step 5: shuffle the newly extracted DB into the proper location
-msg "$(gettext "Rotating database into place...")"
-
-fail=0
-mv "$localdb" "$localdb.old" || fail=1
-mv "$localdb.new" "$localdb" || fail=1
-chmod $(@MODECMD@ "$localdb.old") "$localdb" || fail=1
-chown $(@OWNERCMD@ "$localdb.old") "$localdb" || fail=1
-if (( fail )); then
- # failure with our directory shuffle
- die_r "$(gettext "New database substitution failed. Check for %s, %s, and %s directories.")" "$localdb" "$localdb.old" "$localdb.new"
-fi
-rm -rf "$localdb.old"
-
-# remove the lock file and our working directory with sums and tarfile
-rm -f "$lockfile"
-rm -rf "$workdir"
-
-echo
-msg "$(gettext "Finished. Your pacman database has been optimized.")"
-echo
-
-exit 0
-
-# vim: set noet: