diff options
Diffstat (limited to 'src/toru')
-rw-r--r-- | src/toru/Makefile | 4 | ||||
-rwxr-xr-x | src/toru/toru-info | 43 | ||||
-rwxr-xr-x | src/toru/toru-path | 92 | ||||
-rwxr-xr-x | src/toru/toru-where | 25 |
4 files changed, 164 insertions, 0 deletions
diff --git a/src/toru/Makefile b/src/toru/Makefile new file mode 100644 index 0000000..2903f4a --- /dev/null +++ b/src/toru/Makefile @@ -0,0 +1,4 @@ +include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk +include $(topsrcdir)/automake.head.mk + +include $(topsrcdir)/automake.tail.mk diff --git a/src/toru/toru-info b/src/toru/toru-info new file mode 100755 index 0000000..a7081cb --- /dev/null +++ b/src/toru/toru-info @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# Prints info about a given pkgname + +# Copyright (C) 2012 Nicolás Reynolds <fauno@parabola.nu> +# +# 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 <http://www.gnu.org/licenses/>. + +. libremessages +. "$(librelib conf)" + +for _pkg in "$@"; do + _pkgbuild="$(toru-where $_pkg)" + + if [ -f "$_pkgbuild/PKGBUILD" ]; then + if ! load_PKGBUILD "$_pkgbuild/PKGBUILD" 2>/dev/null; then + warning "Errors on %s" "$_pkg" + continue + fi + + deps=("${depends[@]}" "${makedepends[@]}" "${checkdepends[@]}") + repo="$(basename -- "$(dirname -- "$_pkgbuild")")" + + msg "%s/%s %s-%s" "$repo" "$_pkg" "$pkgver" "$pkgrel" + msg2 '%s' "$pkgdesc" + msg2 '%s' "$url" + msg2 'Depends: %s' "${deps[*]}" + else + warning "%s doesn't exist" "$_pkg" + fi +done diff --git a/src/toru/toru-path b/src/toru/toru-path new file mode 100755 index 0000000..4600a5c --- /dev/null +++ b/src/toru/toru-path @@ -0,0 +1,92 @@ +#!/usr/bin/env bash + +# Copyright (C) 2011-2012 Nicolás Reynolds <fauno@parabola.nu> +# Copyright (C) 2012 Michał Masłowski <mtjm@mtjm.eu> +# Copyright (C) 2012 Joshua Ismael Haase Hernández (xihh) <hahj87@gmail.com> +# Copyright (C) 2014 Luke Shumaker <lukeshu@sbcglobal.net> +# +# 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 <http://www.gnu.org/licenses/>. + +. libremessages +setup_traps + +# TODO: better option parsing +TORUPATH=${T:-${TORUPATH}} +VERBOSE=${V:-false} +FORCE=${F:-false} + +. "$(librelib conf.sh)" +load_files libretools +check_vars libretools TORUPATH REPOS || exit 1 +load_files abs +check_vars abs ABSROOT || exit 1 + +if [ ! -w "$TORUPATH" ]; then + error "Toru's path isn't writable. Please check $TORUPATH" + exit 1 +fi + +lastsyncfile=${TORUPATH}/lastsync.paths +pathfile=${TORUPATH}/paths.tch + +if [ ! -e "${pathfile}" ]; then + tcamgr create "${pathfile}" +fi + +# TODO: ability to use flags to pass in other directories to fullrepos + +# This loops over ${REPOS[@]} backward. This is because early entries +# in REPOS have higher precidence, but the way this is implemented, +# the later entries have precedence, so we need to flip the order. +fullrepos=() +for (( i = ${#REPOS[@]}-1 ; i >= 0 ; i-- )); do + $VERBOSE && msg "Processing [%s]" "${REPOS[$i]}" + + # ABSROOT has trailing slash + if [ -d "${ABSROOT}${REPOS[$i]}" ]; then + fullrepos+=("${ABSROOT}${REPOS[$i]}") + fi +done + +# Find PKGBUILDs in ${fullrepos[@]} +find_args=("${fullrepos[@]}" -mindepth 2 -maxdepth 3 -type f -name PKGBUILD) +if ! $FORCE && [[ -e $lastsyncfile ]]; then + # if lastfilesync exists, only look at things that have + # changed since then (unless $FORCE is on) + find_args+=(-newer "${lastsyncfile}") +fi +IFS=$'\n' +pkgbuilds=($(find "${find_args[@]}")) + +# Add information from each of the PKGBUILDs to the toru cache. +msg "Updating path cache" +msg2 "%d PKGBUILDs to update" ${#pkgbuilds[@]} +for pkgbuild in "${pkgbuilds[@]}"; do + # plain "$_pkgbuild" + if ! load_PKGBUILD "${_pkgbuild}" >/dev/null 2>&1; then + error "%q contains errors, skipping" "${_pkgbuild}" + continue + fi + + fullpath="$(dirname -- "${_pkgbuild}")" + + for _pkg in "${pkgbase}" "${pkgname[@]}" "${provides[@]}"; do + $VERBOSE && msg2 '%s -> %s' "${_pkg}" "${fullpath}" + tcamgr put "${pathfile}" "${_pkg%%[<>=]*}" "${fullpath}" + done +done + +date +%s > "${lastsyncfile}" diff --git a/src/toru/toru-where b/src/toru/toru-where new file mode 100755 index 0000000..f6df15f --- /dev/null +++ b/src/toru/toru-where @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# Locates a PKGBUILD dir on toru's path cache + +# Copyright (C) 2012 Nicolás Reynolds <fauno@parabola.nu> +# +# 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 <http://www.gnu.org/licenses/>. + +. "$(librelib conf.sh)" +load_files libretools +check_vars libretools TORUPATH || exit 1 + +tcamgr get "${TORUPATH}/paths.tch" "$1" 2>/dev/null || echo "" |