aboutsummaryrefslogtreecommitdiff
path: root/simplaret
diff options
context:
space:
mode:
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2006-09-19 16:56:25 +0000
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2006-09-19 16:56:25 +0000
commit397f31fcb0b47000c6e5c5c4aaf441970ce06e3a (patch)
tree0df0e0bbc0ef9d4f2a388d4bd634e8683e9a36af /simplaret
parenta5ad04283516a7ff72cfd33f3221cfd3c10c3b5b (diff)
downloadsimplepkg-397f31fcb0b47000c6e5c5c4aaf441970ce06e3a.tar.gz
simplepkg-397f31fcb0b47000c6e5c5c4aaf441970ce06e3a.tar.bz2
simplepkg 0.4.9pre2
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@5 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'simplaret')
-rwxr-xr-xsimplaret482
1 files changed, 0 insertions, 482 deletions
diff --git a/simplaret b/simplaret
deleted file mode 100755
index ed98402..0000000
--- a/simplaret
+++ /dev/null
@@ -1,482 +0,0 @@
-#!/bin/bash
-#
-# simplaret v0.1.1: simplepkg's package grabber
-# feedback: rhatto at riseup.net | gpl
-#
-# Simplaret 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 any later version.
-#
-# Simplaret 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
-#
-# config file simplepkg.conf:
-#
-# DEFAULT_ARCH="i386"
-# DEFAULT=VERSION="10.2"
-# STORAGE="/storage/packages"
-# PASSIVE_FTP="1"
-#
-# config file repos.conf:
-#
-# ROOT-i386="http://slack.sarava.org/packages/slackware"
-# REPOS-i386-10.2="slack.sarava.org%http://slack.sarava.org/packages/slackware/slackware-10.2/"
-# ROOT-x86_64="http://darkstar.ist.utl.pt/pub/slamd64/"
-# REPOS-x86_64-10.2="slack.sarava.org%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
-#
-# usage:
-#
-# --update: baixa lista de pacotes de cada repositorio
-# --search: busca
-# --get [-a]: baixa um unico pacote
-# --get-pacthes: baixa os patches e faz o checksum / gpg
-# --purge [-w N]: remove o cache
-#
-# precedence:
-#
-# - checa antes o repositorio raiz, caso o pacote nao seja encontrado segue na ordem das
-# definicoes REPOS do arquivo de configuracao
-#
-
-SIMPLARET_CONF="/etc/simplepkg/simplepkg.conf"
-REPOS_CONF="/etc/simplepkg/repos.conf"
-COMMON="/usr/libexec/simplepkg/common.sh"
-
-function simplaret_usage {
-
- echo "usage: [ARCH=otherarch] [VERSION=otherversion] `basename $0` <OPTION> package-name"
- echo -e "\t OPTIONS: --update, --search, --get, --get-patches"
- exit 1
-
-}
-
-function simplaret_eval_config {
-
- if grep -qe "^DEFAULT_ARCH=" $SIMPLARET_CONF; then
- DEFAULT_ARCH="`grep -e "^DEFAULT_ARCH=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
- else
- DEFAULT_ARCH="i386"
- fi
-
- if grep -qe "^DEFAULT_VERSION=" $SIMPLARET_CONF; then
- DEFAULT_VERSION="`grep -e "^DEFAULT_VERSION=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
- else
- DEFAULT_VERSION="10.2"
- fi
-
- if grep -qe "^STORAGE=" $SIMPLARET_CONF; then
- STORAGE="`grep -e "^STORAGE=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
- else
- STORAGE="/var/simplaret"
- fi
-
- if grep -qe "^PASSIVE_FTP=" $SIMPLARET_CONF; then
- PASSIVE_FTP="`grep -e "^PASSIVE_FTP=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
- else
- PASSIVE_FTP="0"
- fi
-
- if grep -qe "^WARNING=" $SIMPLARET_CONF; then
- WARNING="`grep -e "^WARNING=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
- else
- WARNING="0"
- fi
-
-}
-
-function simplaret_get_index {
-
- for file in FILELIST.TXT CHECKSUMS.md5 CHECKSUMS.md5.asc; do
- simplaret_download $1 $file $2
- done
-
-}
-
-function simplaret_backup_index {
-
- for file in FILELIST.TXT CHECKSUMS.md5 CHECKSUMS.md5.asc; do
- if [ -f "$1/$file" ]; then
- mv $1/$file $1/$file.old
- fi
- done
-
-}
-
-function simplaret_check_index {
-
- for file in FILELIST.TXT CHECKSUMS.md5 CHECKSUMS.md5.asc; do
- if [ ! -f "$1/$file" ] && [ -f "$1/$file" ]; then
- echo restoring old $file to $1...
- mv $1/$file.old $1/$file
- else
- rm -f $1/$file.old
- fi
- done
-
-}
-
-function simplaret_download {
-
- # downloads a file from a repo to a folder
- # usage: simplaret <repos_url> <package> <destination-folder>
-
- protocol="`echo $1 | cut -d : -f 1`"
-
- if [ ! -d "$3" ]; then
- mkdir -p $3
- fi
-
- if [ "$protocol" == "http" ]; then
- (cd $3 && wget $1/$2)
- elif [ "$protocol" == "ftp" ]; then
- if [ "$PASSIVE_FTP" == "1" ]; then
- passive_ftp="--passive-ftp"
- fi
- (cd $3 && wget $passive_ftp $1/$2)
- elif [ "$protocol" == "file" ]; then
- url="`echo $1 | sed -e 's/file:\/\///'`"
- cp $url/$2 $3 2> /dev/null
- fi
-
-}
-
-function simplaret_repos_name {
-
- if echo $repos | grep -qe %; then
- repos_name="`echo $repos | cut -d % -f 1`"
- if [ -z "$repos_name" ]; then
- echo you should set a name for the repository $repos for arch $ARCH and version $VERSION
- echo please correct your $REPOS_CONF so this repository definition looks like this:
- echo REPOS-$ARCH-$VERSION=\"repository-name%repository-url\"
- exit 1
- fi
- else
- echo you should set a name for the repository $repos for arch $ARCH and version $VERSION
- echo please correct your $REPOS_CONF so this repository definition looks like this:
- echo REPOS-$ARCH-$VERSION=\"repository-name%$repos_url\"
- exit 1
- fi
-
-}
-
-function simplaret_repos_url {
-
- if echo $repos | grep -qe %; then
- repos_url="`echo $repos | cut -d % -f 2`"
- if [ -z "$repos_url" ]; then
- echo you should set a url for the repository $repos for arch $ARCH and version $VERSION
- echo please correct your $REPOS_CONF so this repository definition looks like this:
- echo REPOS-$ARCH-$VERSION=\"repository-name%repository-url\"
- exit 1
- fi
- else
- echo you should set a url for the repository $repos for arch $ARCH and version $VERSION
- echo please correct your $REPOS_CONF so this repository definition looks like this:
- echo REPOS-$ARCH-$VERSION=\"repository-name%repository-url\"
- exit 1
- fi
-
-}
-
-function simplaret_root_url {
-
- root_url="`grep -e "^ROOT-$ARCH=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
-
-}
-
-function simplaret_update {
-
- echo updating package information for arch $ARCH and version $VERSION...
-
- if [ ! -d "$STORAGE/$ARCH/$VERSION" ]; then
- mkdir -p $STORAGE/$ARCH/$VERSION
- else
- simplaret_backup_index $STORAGE/$ARCH/$VERSION
- fi
-
- simplaret_root_url
- simplaret_get_index "$root_url/$DISTRO_FOLDER/$extra_folder" $STORAGE/$ARCH/$VERSION
- simplaret_check_index $STORAGE/$ARCH/$VERSION
-
- for repos in `grep -e "^REPOS-$ARCH-$VERSION=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`; do
-
- simplaret_repos_name
- simplaret_repos_url
-
- if [ ! -d "$STORAGE/$ARCH/$VERSION/$repos_name" ]; then
- mkdir -p $STORAGE/$ARCH/$VERSION/$repos_name
- else
- simplaret_backup_index $STORAGE/$ARCH/$VERSION/$repos_name
- fi
-
- simplaret_get_index $repos_url $STORAGE/$ARCH/$VERSION/$repos_name
- simplaret_check_index $STORAGE/$ARCH/$VERSION/$repos_name
-
- unset repos_name repos_url repos_protocol
-
- done
-
-}
-
-function simplaret_search {
-
- if [ ! -f "$STORAGE/$ARCH/$VERSION/FILELIST.TXT" ]; then
- if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
- echo warning: no file list for root repository on arch $ARCH version $VERSION, please do a simplaret --update
- fi
- else
- for file in `grep $1 $STORAGE/$ARCH/$VERSION/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
- if echo $file | grep -q "patches"; then
- patch="(patch)"
- fi
- if [ "$2" == "-silent" ]; then
- echo `basename $file`
- else
- echo root repos, arch: $ARCH, version: $VERSION: `basename $file` $patch
- fi
- unset patch
- done
- fi
-
- for repos in `grep -e "^REPOS-$ARCH-$VERSION=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`; do
-
- simplaret_repos_name
-
- if [ ! -f "$STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT" ]; then
- if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
- echo warning: no file list for $repos_name repository on arch $ARCH version $VERSION, please do a simplaret --update
- fi
- else
- for file in `grep $1 $STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
- if echo $file | grep -q "patches"; then
- patch="(patch)"
- fi
- if [ "$2" == "-silent" ]; then
- echo `basename $file`
- else
- echo $repos_name, arch: $ARCH, version: $VERSION: `basename $file` $patch
- fi
- done
- fi
-
- done
-
-}
-
-function simplaret_purge {
-
- if [ "$2" == "-w" ] && [ ! -z "$3" ]; then
- if [ -z "$SILENT" ]; then
- echo purging all packages older than $3 weeks for arch $ARCH and version $VERSION
- fi
- mtime="`echo "$3*7" | bc -l`"
- for file in `find $STORAGE/$ARCH/$VERSION/ -mtime +$mtime | bc -l 2> /dev/null`; do
- for extension in tgz asc; do
- if echo $file | grep -qe ".$extension$"; then
- rm $file
- fi
- done
- done
- else
- if [ -z "$SILENT" ]; then
- echo purging all packages for arch $ARCH and version $VERSION
- fi
- for file in `find $STORAGE/$ARCH/$VERSION/ 2> /dev/null`; do
- for extension in tgz asc; do
- if echo $file | grep -qe ".$extension$"; then
- rm $file
- fi
- done
- done
- fi
-
- if [ -z "$SILENT" ]; then
- echo done purging simplaret cache, please run simplaret --update to retrieve new package listings on this arch and version
- fi
-
-}
-
-function simplaret_get {
-
- # search for an already downloaded package
- for file in `find $STORAGE/$ARCH/$VERSION/ -name $1*tgz 2> /dev/null`; do
- candidate="`basename $file`"
- if [ "`package_name $candidate`" == "$1" ]; then
- echo package $candidate already downloaded and stored at `dirname $file`
- exit 0
- fi
- done
-
- # first search for the package in the root repository
- if [ ! -f "$STORAGE/$ARCH/$VERSION/FILELIST.TXT" ]; then
- if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
- echo warning: no file list for root repository on arch $ARCH version $VERSION, please do a simplaret --update
- fi
- else
- for file in `grep $1 $STORAGE/$ARCH/$VERSION/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
- candidate="`basename $file`"
- if [ "`package_name $candidate`" == "$1" ]; then
- simplaret_root_url
- simplaret_download $root_url/$DISTRO_FOLDER/$extra_folder $file $STORAGE/$ARCH/$VERSION
- if [ ! -f "$STORAGE/$ARCH/$VERSION/$candidate" ]; then
- echo error downloading $candidate from root repository $root_url, please check your settings
- exit 1
- else
- echo package $candidate stored at $STORAGE/$ARCH/$VERSION
- simplaret_checksum $STORAGE/$ARCH/$VERSION/CHECKSUMS.md5 $STORAGE/$ARCH/$VERSION/$candidate
- exit 0
- fi
- fi
- done
- fi
-
- # then search for the package in contrib repos
- for repos in `grep -e "^REPOS-$ARCH-$VERSION=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`; do
- simplaret_repos_name
- simplaret_repos_url
- if [ ! -f "$STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT" ]; then
- if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
- echo warning: no file list for $repos_name repository on arch $ARCH version $VERSION, please do a simplaret --update
- fi
- else
- for file in `grep $1 $STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
- candidate="`basename $file`"
- if [ "`package_name $candidate`" == "$1" ]; then
- simplaret_download $repos_url $file $STORAGE/$ARCH/$VERSION/$repos_name
- if [ ! -f "$STORAGE/$ARCH/$VERSION/$repos_name/$candidate" ]; then
- echo error downloading $candidate from repository $repos_url, please check your settings
- echo will try to fetch from the next repo, if exists...
- else
- echo package $candidate stored at $STORAGE/$ARCH/$VERSION/$repos_name
- simplaret_checksum $STORAGE/$ARCH/$VERSION/$repos_name/CHECKSUMS.md5 $STORAGE/$ARCH/$VERSION/$repos_name/$candidate
- exit 0
- fi
- fi
- done
- fi
- done
-
-}
-
-function simplaret_get_patches {
-
- if [ ! -d "$PATCHES_DIR/$ARCH/$VERSION" ]; then
- mkdir -p $PATCHES_DIR/$ARCH/$VERSION
- fi
-
- echo fetching patches for arch $ARCH and version $VERSION...
-
- # check for the downloaded patches
- for patch in `ls $PATCHES_DIR/$ARCH/$VERSION/*tgz 2> /dev/null`; do
- file="`find $STORAGE/$ARCH/$VERSION/ -name $patch 2> /dev/null`"
- if [ ! -f "$file" ]; then
- rm $patch
- else
- ln -sf $file $PATCHES_DIR/$ARCH/$VERSION/
- fi
- done
-
- # grab new patches
- for patch in `simplaret_search patches -silent`; do
- simplaret --get `package_name $patch`
- file="`find $STORAGE/$ARCH/$VERSION/ | grep "$patch" 2> /dev/null`"
- if [ ! -f "$file" ]; then
- echo error downloading package $file
- exit 1
- else
- ln -sf $file $PATCHES_DIR/$ARCH/$VERSION/
- echo patch stored as a symlink on $PATCHES_DIR/$ARCH/$VERSION/
- fi
- done
-
-}
-
-function simplaret_checksum {
-
- # simplaret_checksum <md5file> <file-name>
-
- if [ ! -f "$1" ] || [ ! -f "$2" ]; then
- echo checksum error: file not found
- exit 1
- fi
-
- pack="`basename $2`"
- checksum="`grep -e "$pack\$" $1 | awk '{ print $1 }'`"
-
- if [ -z "$checksum" ]; then
- echo file $2 not in checksum $1
- exit 1
- elif [ "$checksum" != "`md5sum $2 | awk '{ print $1 }'`" ]; then
- echo checksum mismatch for file `basename $file`
- else
- echo checksum ok for file `basename $file`
- fi
-
-}
-
-if [ -f "$COMMON" ]; then
- source $COMMON
-else
- echo "error: file $COMMON found, check your `basename $0` installation"
- exit 1
-fi
-
-if [ -z "$1" ]; then
- simplaret_usage
- exit 1
-else
- server="$1"
- eval_config `basename $0`
- simplaret_eval_config
-fi
-
-if [ ! -d "$STORAGE" ]; then
- mkdir -p $STORAGE
-fi
-
-if [ -z "$ARCH" ]; then
- ARCH="$DEFAULT_ARCH"
-fi
-
-if [ -z "$VERSION" ]; then
- VERSION="$DEFAULT_VERSION"
-fi
-
-if [ "$ARCH" == "i386" ]; then
- DISTRO="slackware"
- DISTRO_FOLDER="$DISTRO-$VERSION"
-elif [ "$ARCH" == "x86_64" ]; then
- # extra_folder="tree"
- DISTRO="slamd64"
- DISTRO_FOLDER="$DISTRO-$VERSION"
-elif [ "$ARCH" == "s390" ]; then
- DISTRO="slack390"
- DISTRO_FOLDER="$DISTRO-$VERSION"
-elif [ "$ARCH" == "x86_uclibc" ]; then
- DISTRO="ucslack"
- DISTRO_FOLDER="$DISTRO-$VERSION"
-elif [ "$ARCH" == "arm" ]; then
- DISTRO="armedslack"
- DISTRO_FOLDER="$DISTRO-$VERSION"
-elif [ "$ARCH" == "powerpc" ]; then
- DISTRO="slackintosh"
- DISTRO_FOLDER="$VERSION"
-elif [ "$ARCH" == "sparc" ]; then
- DISTRO="splack"
- DISTRO_FOLDER="tree-$VERSION"
-fi
-
-case $1 in
- --update) simplaret_update ;;
- --search) simplaret_search $2 ;;
- --get) simplaret_get $2 ;;
- --get-patches) simplaret_get_patches ;;
- --purge) simplaret_purge ;;
- *) simplaret_usage ;;
-esac
-