#!/bin/bash PKGS="" PINS="" get_depends() { apt-cache show $1/jessie-backports 2>/dev/null | grep -e Depends -e PreDepends \ | awk -F'Depends:' '{print $2}' | tr ',' '\n' | grep \(.*\) | awk -F' ' '{print $1}' } exists_in_bpo() { if apt-cache show $1/jessie-backports 2>/dev/null >/dev/null; then return 0 else return 1 fi } get_version_in_bpo() { apt-cache show $1/jessie-backports | grep ^Version: | awk -F' ' '{print $2}' } eval_check_loop() { if grep ^${1}$ <<< "$PKGS" >/dev/null ; then return 1 fi PKGS="$(echo "$PKGS" ; echo $1)" } pinn_check_loop() { if grep ^${1}$ <<< "$PINS" >/dev/null ; then return 1 fi PINS="$(echo "$PINS" ; echo $1)" } generate_pinning() { name=$1 if ! pinn_check_loop $name ; then return fi version=$(get_version_in_bpo $name) echo -e "Package: $name\nPin: version $version\nPin-Priority: 1002\n" } eval() { package=$1 if ! eval_check_loop $package ; then return fi for i in $(get_depends $package) do if ! exists_in_bpo $i ; then continue fi generate_pinning $i eval $i done } generate_pinning keystone eval keystone