1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-11-16 06:15:08 -05:00
pacman/scripts/gensync.in
Dan McGee b6387b954f scripts: do autoconf path replacement right
This should finally get the path replacement in our scripts right. This
is the way the autoconf package itself does it and should not need much
further tweaking.

Threw in a few trailing whitespace corrections from the scripts as well.

Signed-off-by: Dan McGee <dan@archlinux.org>
2007-05-30 11:04:49 -04:00

156 lines
3.8 KiB
Bash

#!/bin/bash
#
# gensync
# @configure_input@
#
# Copyright (c) 2002-2007 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# USA.
#
myver='@PACKAGE_VERSION@'
# functions
usage() {
echo "gensync $myver"
echo "usage: $0 <root> <destfile> [package_directory]"
echo
echo "gensync will generate a sync database by reading all PKGBUILD files"
echo "from <root>. gensync builds the database in a temporary directory"
echo "and then compresses it to <destfile>."
echo
echo "gensync will calculate md5sums of packages in the same directory as"
echo "<destfile>, unless an alternate [package_directory] is specified."
echo
echo "note: The <destfile> name is important. It must be of the form"
echo " {treename}.db.tar.gz where {treename} is the name of the custom"
echo " package repository you configured in @sysconfdir@/pacman.conf. The"
echo " generated database must reside in the same directory as your"
echo " custom packages (also configured in @sysconfdir@/pacman.conf)"
echo
echo "example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
echo
echo
exit 0
}
version() {
printf "gensync (pacman) %s\n" "$myver"
printf "Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n"
echo
printf "This is free software; see the source for copying conditions.\n"
printf "There is NO WARRANTY, to the extent permitted by law.\n"
echo
}
error () {
echo "==> ERROR: $*" >&2
}
die () {
error $*
exit 1
}
check_force () {
local i
for i in ${options[@]}; do
local lc=$(echo $i | tr [:upper:] [:lower:])
if [ "$lc" = "force" ]; then
true
fi
done
false
}
# PROGRAM START
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
exit 0
fi
if [ "$1" = "-V" -o "$1" = "--version" ]; then
version
exit 0
fi
if [ $# -lt 2 ]; then
usage
exit 1
fi
# source system and user makepkg.conf
if [ -r @sysconfdir@/makepkg.conf ]; then
source @sysconfdir@/makepkg.conf
else
echo "ERROR: @sysconfdir@/makepkg.conf not found. Can not continue." >&2
exit 1 # $E_CONFIG_ERROR # TODO: error codes
fi
if [ -r ~/.makepkg.conf ]; then
source ~/.makepkg.conf
fi
d=$(dirname $1)
rootdir="$(cd $d && pwd)/$(basename $1)"
d="$(dirname $2)"
destdir="$(cd $d && pwd)"
destfile="$destdir/$(basename $2)"
pkgdir=""
if [ "$3" != "" ]; then
pkgdir="$3"
fi
[ ! -d "$rootdir" ] && die "invalid root dir: $rootdir"
echo "gensync: building database entries, generating md5sums..." >&2
cd "$destdir"
pkgs=""
forcepkgs=""
for file in $(find "$rootdir"/* -name "$BUILDSCRIPT"); do
unset pkgname pkgver pkgrel options
source $file || die "failed to parse parse $file"
if [ "$pkgdir" != "" ]; then
pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
else
pkgfile="$destdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
fi
if [ ! -f "$pkgfile" ]; then
error "could not find $pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT - skipping"
else
if check_force; then
forcepkgs="$forcepkgs $pkgfile"
else
pkgs="$pkgs $pkgfile"
fi
fi
done
echo "creating repo DB..."
# we'll trim the output just a tad, as gensync may be used on large repos
repo-add $destfile $pkgs --force $force_pkgs \
| grep -e "package" -e "database"
# vim: set ts=2 sw=2 noet: