summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Reynolds <fauno@kiwwwi.com.ar>2012-02-24 18:54:02 -0300
committerNicolas Reynolds <fauno@kiwwwi.com.ar>2012-02-24 18:54:02 -0300
commit987763361d5e98a0158b65487619b14c9bd05457 (patch)
tree5c64ce3217f6038d1f5d28a751f48d3930a511ea
parentee706c5c36fd8993905a14aa2afeb5951dac6ec9 (diff)
parentb4aae66a7c3ba3eec714ca6cc11cd9913b5cf2fd (diff)
Merge branch 'master' into fauno
-rwxr-xr-xfullpkg-find16
-rwxr-xr-xlibreaddiff97
-rwxr-xr-xlibrechroot1
-rwxr-xr-xtoru13
-rwxr-xr-xtoru-path2
-rwxr-xr-xupdate-cleansystem2
6 files changed, 110 insertions, 21 deletions
diff --git a/fullpkg-find b/fullpkg-find
index 8c0c063..9ddfa08 100755
--- a/fullpkg-find
+++ b/fullpkg-find
@@ -80,17 +80,16 @@ find_deps() {
local found=false
# TODO change for where_is or toru-path
- local pkgdir=$(toru -p ${_dep})
+ # May fail, e.g. since abslibre-mips64el doesn't include
+ # arch=any packages.
+ local pkgdir=$(toru -p ${_dep}) || true
if [ -n "$pkgdir" -a -d "${pkgdir}" ]; then
found=true
pushd "${pkgdir}" > /dev/null
# runs itself on dep's PKGBUILD dir
- $0 -l ${next_level} ${build_dir}
-
-# probable circular deps
- [ $? -eq 20 ] && return 20
+ $0 -l ${next_level} ${build_dir} || return $?
popd > /dev/null
fi
@@ -188,13 +187,8 @@ fi
find_deps || {
# Probable circular deps
- if [ "$?" -eq 20 ]; then
-
-# Show error only on level 0
- if [ "$LEVEL" -eq 0 ]; then
+ if [ "$?" -eq 20 -a "$LEVEL" -eq 0 ]; then
error "Check for circular deps on $build_dir/BUILDORDER";
- fi
-
fi
# Pass message 20
exit 20
diff --git a/libreaddiff b/libreaddiff
new file mode 100755
index 0000000..c8b5214
--- /dev/null
+++ b/libreaddiff
@@ -0,0 +1,97 @@
+#!/bin/bash
+# -*- coding: utf-8 -*-
+# Copyright (C) 2011, 2012 Michał Masłowski <mtjm@mtjm.eu>
+#
+# 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/>.
+
+
+set -e
+
+. /etc/libretools.conf
+custom_config=$XDG_CONFIG_HOME/libretools/libretools.conf
+[ -e $custom_config ] && . $custom_config
+
+for arg in "$@" ; do
+ case "$arg" in
+ -h|--h|--he|--hel|--help|-\?)
+ echo 'Usage: find-pkgs.sh repo [arch]
+
+This script outputs a diff of package names and versions in repo
+between pacman'\''s sync db and abslibre checkout.' >&2
+ exit 0
+ ;;
+ esac
+done
+
+# The repo to find missing packages in.
+repo=$1
+# The arch to check in Arch repos, other will have all arches checked.
+arch=${2:-mips64el}
+# A Python tuple of repos which don't have arch=any packages.
+archrepos='("core", "extra", "community")'
+
+diff -U0 \
+ <( (
+ cd /var/lib/pacman/sync
+ for f in $repo.db ; do
+ tar xOf $f | python -c 'import sys
+arch = None
+name = None
+version = None
+it = iter(sys.stdin)
+try:
+ while True:
+ line = next(it)
+ if line == "%ARCH%\n":
+ arch = next(it)
+ if arch == "'"$arch"'\n" or "'$repo'" not in '"$archrepos"':
+ print("%s-%s" % (name.strip(), version.strip()))
+ if line == "%NAME%\n":
+ name = next(it)
+ if line == "%VERSION%\n":
+ version = next(it)
+except StopIteration:
+ pass
+'
+ done
+ ) | sort ) \
+ <( (
+ cd "${WORKDIR}/abslibre"
+ # Needed to not include pkgnames specific to other arches.
+ CARCH=$arch
+ for f in $repo/* ; do
+ unset pkgname
+ unset epoch
+ unset pkgver
+ unset pkgrel
+ unset arch
+ . $f/PKGBUILD || continue
+ is_here=false
+ for arc in ${arch[@]} ; do
+ if [ "$arc" = "any" -o "$arc" = "$CARCH" ] ; then
+ is_here=true
+ break
+ fi
+ done
+ if [ "$is_here" = "true" ] ; then
+ for name in ${pkgname[@]} ; do
+ if [ -z "$epoch" ] ; then
+ echo $name-$pkgver-$pkgrel
+ else
+ echo $name-$epoch:$pkgver-$pkgrel
+ fi
+ done
+ fi
+ done
+ ) | sort ) | sed -rn 's/^[+-][^+-].+$/&/p'
diff --git a/librechroot b/librechroot
index 0398a0f..9e292f5 100755
--- a/librechroot
+++ b/librechroot
@@ -45,7 +45,6 @@ function usage {
function clean_chroot { # Clean packages with pacman
msg "Cleaning chroot: ${CHROOTDIR}/${CHROOTNAME}"
- update-cleansystem
cp "/etc/libretools.d/cleansystem" "${CHROOTDIR}/${CHROOTNAME}/cleansystem"
(cat <<EOF
#!/bin/bash
diff --git a/toru b/toru
index 9616119..766331b 100755
--- a/toru
+++ b/toru
@@ -12,7 +12,7 @@
# * Possibility to hook up ABS dirs besides ABSROOT (low priority)
# * Tell updates and non available binary packages (working on this)
-source $(dirname $0)/toru-utils
+source $(dirname $(command -v $0))/toru-utils
# Saves contents on a named cache
# $1 cache name (repo)
@@ -137,7 +137,7 @@ update() {
fi
- package_paths=($(read_cache ${_repo}.paths))
+ package_paths=($(read_cache ${_repo}.paths || true))
# Inform how many PKGBUILDS were found and quit immediately if none
$quiet || msg "Found $((${#pkgbuilds[*]}-1)) PKGBUILDs to update"
@@ -148,7 +148,7 @@ update() {
update_sync_file=true
# Load PKGBUILD's metadata
- source ${_pkgbuild}
+ source ${_pkgbuild} || continue
# Guess pkgbase from PKGBUILD's basedir
_pkgpath=$(dirname "${_pkgbuild}")
@@ -165,7 +165,7 @@ update() {
for _pkg in ${pkgname[@]}; do
# Keep removing unneeded stuff
- unset package_${_pkg} >/dev/null 2>&1
+ unset package_${_pkg} >/dev/null 2>&1 || true
# Fill the list of packages to find
packages_in_abs+=($_pkg-$(get_full_version ${epoch:-0} $pkgver $pkgrel))
package_paths+=($_pkg:$_pkgpath)
@@ -199,7 +199,7 @@ update() {
split_pkgname_from_pkgver ${TMPDIR}/packages_in_abs | sort -k1b,1 > ${TMPDIR}/in_abs
split_pkgname_from_pkgver ${TMPDIR}/packages_in_sync | sort -k1b,1 > ${TMPDIR}/in_sync
- $quiet || msg "This packages are available to update"
+ $quiet || msg "These packages are available to update"
# Join both files by pkgname, the end result is:
# pkgname syncver absver
join ${TMPDIR}/in_sync ${TMPDIR}/in_abs | \
@@ -297,8 +297,7 @@ while getopts 'haqfpum' arg; do
f) force=true ;;
u) commands+=(update);;
p) shift $(( OPTIND - 1 ))
- where_is "$1"
- exit $?;;
+ where_is "$1" || exit 1;;
m) commands+=(missing);;
esac
diff --git a/toru-path b/toru-path
index 25d3995..b82dbb2 100755
--- a/toru-path
+++ b/toru-path
@@ -1,6 +1,6 @@
#!/bin/bash
-source $(dirname $0)/toru-utils
+source $(dirname $(command -v $0))/toru-utils
LASTSYNCFILE=${TORUPATH}/lastsync.paths
diff --git a/update-cleansystem b/update-cleansystem
index af215d7..dd3ff6c 100755
--- a/update-cleansystem
+++ b/update-cleansystem
@@ -19,6 +19,6 @@ pacman -r ${tmpdir} --config /etc/pacman.conf -Sy
pacman -r ${tmpdir} \
--config /etc/pacman.conf \
-Sp --print-format "%n" \
- base base-devel ${@} | sort > /etc/libretools.d/cleansystem
+ base base-devel sudo ${@} | sort > /etc/libretools.d/cleansystem
exit $?