Page MenuHomePhabricator
Paste P7247

generate apt pinning file for keystone
ActivePublic

Authored by aborrero on Jun 12 2018, 11:12 AM.
Tags
None
Referenced Files
F22142340: generate apt pinning file for keystone
Jun 12 2018, 11:12 AM
Subscribers
None
#!/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