The pacman-db-upgrade script was added to detect old pacman database formats and upgrade them. Currently performs the merging of depends files into desc files in the local database. Signed-off-by: Allan McRae <allan@archlinux.org> --- scripts/Makefile.am | 7 +++++-- scripts/pacman-db-upgrade.sh.in | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 scripts/pacman-db-upgrade.sh.in diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 78deb0b..7448691 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -10,14 +10,16 @@ OURSCRIPTS = \ pacman-optimize \ pkgdelta \ rankmirrors \ - repo-add + repo-add \ + pacman-db-upgrade EXTRA_DIST = \ makepkg.sh.in \ pacman-optimize.sh.in \ pkgdelta.sh.in \ rankmirrors.sh.in \ - repo-add.sh.in + repo-add.sh.in \ + pacman-db-upgrade.sh.in # Files that should be removed, but which Automake does not know. MOSTLYCLEANFILES = $(bin_SCRIPTS) *.tmp @@ -68,5 +70,6 @@ repo-add: $(srcdir)/repo-add.sh.in repo-remove: $(srcdir)/repo-add.sh.in rm -f repo-remove $(LN_S) repo-add repo-remove +pacman-db-update: $(srcdir)/pacman-db-update.sh.in # vim:set ts=2 sw=2 noet: diff --git a/scripts/pacman-db-upgrade.sh.in b/scripts/pacman-db-upgrade.sh.in new file mode 100644 index 0000000..e28b1d2 --- /dev/null +++ b/scripts/pacman-db-upgrade.sh.in @@ -0,0 +1,34 @@ +#!@BASH_SHELL@ -e +# +# pacman-db-upgrade - upgrade the local pacman db to a newer format +# @configure_input@ +# +# Copyright (c) 2010 Pacman Development Team <pacman-dev@archlinux.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/>. +# + +eval $(awk '/DBPath/ {print $1$2$3}' @sysconfdir@/pacman.conf) +DBPath="${DBPath:-@localstatedir@/lib/pacman/}/local" + +# pacman-3.4 to 3.5 upgrade - merge depends into desc +if [[ $(find $DBPath -name depends) ]]; then + echo "==> pacman-3.4 database format dectected - upgrading" + for i in $DBPath/*; do + if [[ -f $i/depends ]]; then + cat $i/depends >> $i/desc + rm $i/depends + fi + done +fi -- 1.7.3.3