| 1 | #!/bin/bash |
| 2 | # |
| 3 | # This script gets ports from an overlay that need to be updated |
| 4 | # |
| 5 | # Requeriments: You need 'ports' and 'prt-get' installed |
| 6 | # Note: Before execute this script you should be run 'ports -u' to be sure |
| 7 | # you're up to date |
| 8 | |
| 9 | checkOverlayUpdates() { |
| 10 | |
| 11 | overlay=$1 |
| 12 | |
| 13 | # check for a valid overlay |
| 14 | case $overlay in |
| 15 | core-arm|opt-arm|xorg-arm|contrib-arm) ;; |
| 16 | cubieboard-arm|cubieboard2-arm|efikamx-arm|raspberrypi-arm) ;; |
| 17 | *) |
| 18 | echo "Error, unsupported overlay: $overlay" |
| 19 | exit 1 |
| 20 | ;; |
| 21 | esac |
| 22 | |
| 23 | # get a list of ports in the overlay |
| 24 | overlay_path=$(grep 'destination' /etc/ports/$overlay.{rsync,httpup} 2>/dev/null | cut -d'=' -f2) |
| 25 | overlay_ports=$(find $overlay_path -type f -name 'Pkgfile' -exec dirname {} \; | sed "s|$overlay_path/||g") |
| 26 | |
| 27 | # for device overlay repos we need to know the upstream repo/port |
| 28 | for port in $overlay_ports; do |
| 29 | # get upstream repo/port |
| 30 | for repo in core opt xorg; do |
| 31 | repo_path=$(grep 'destination' /etc/ports/$repo.{rsync,httpup} 2>/dev/null | cut -d'=' -f2) |
| 32 | u_repo=$(basename $(dirname $(prt-get --no-std-config --config-prepend="prtdir $repo_path" path $port 2>/dev/null) 2>/dev/null) 2>/dev/null) |
| 33 | # breaks if there is an upstream repo |
| 34 | [ ! -z $u_repo ] && break |
| 35 | done |
| 36 | # show differences between upstream port and overlayed port |
| 37 | if [ ! -z $u_repo ]; then |
| 38 | # get versions |
| 39 | . $repo_path/$port/Pkgfile |
| 40 | u_port_version=$version-$release |
| 41 | . $overlay_path/$port/Pkgfile |
| 42 | o_port_version=$version-$release |
| 43 | if [ "$u_port_version" != "$o_port_version" ]; then |
| 44 | printf "%-20s %-20s %-s\n" $port "$o_port_version" "$u_port_version ($u_repo)" >> $TMP_FILE |
| 45 | fi |
| 46 | fi |
| 47 | done |
| 48 | |
| 49 | # print results |
| 50 | if [ "$(wc -l $TMP_FILE | cut -d' ' -f1)" != "0" ]; then |
| 51 | echo "Results for overlay: $overlay" |
| 52 | printf "%-20s %-20s %-s\n" "PORT" "VERSION" "UPSTREAM" |
| 53 | cat $TMP_FILE && : > $TMP_FILE |
| 54 | echo |
| 55 | fi |
| 56 | } |
| 57 | |
| 58 | if [ $# -lt 1 ]; then |
| 59 | echo "Usage: $(basename $0) [overlay_repo]" |
| 60 | exit 1 |
| 61 | fi |
| 62 | |
| 63 | for TARGET in $@; do |
| 64 | TMP_FILE=$(mktemp) |
| 65 | checkOverlayUpdates $TARGET |
| 66 | rm -f $TMP_FILE |
| 67 | done |
| 68 | |
| 69 | # End of file |