#!/bin/bash # # This script gets ports from an overlay that need to be updated # # Requeriments: You need 'ports' and 'prt-get' installed # Note: Before execute this script you should be run 'ports -u' to be sure # you're up to date checkOverlayUpdates() { overlay=$1 # check for a valid overlay case $overlay in core-arm|opt-arm|xorg-arm|contrib-arm) ;; cubieboard-arm|cubieboard2-arm|efikamx-arm|raspberrypi-arm) ;; *) echo "Error, unsupported overlay: $overlay" exit 1 ;; esac # get a list of ports in the overlay overlay_path=$(grep 'destination' /etc/ports/$overlay.{rsync,httpup} 2>/dev/null | cut -d'=' -f2) overlay_ports=$(find $overlay_path -type f -name 'Pkgfile' -exec dirname {} \; | sed "s|$overlay_path/||g") # for device overlay repos we need to know the upstream repo/port for port in $overlay_ports; do # get upstream repo/port for repo in core opt xorg; do repo_path=$(grep 'destination' /etc/ports/$repo.{rsync,httpup} 2>/dev/null | cut -d'=' -f2) 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) # breaks if there is an upstream repo [ ! -z $u_repo ] && break done # show differences between upstream port and overlayed port if [ ! -z $u_repo ]; then # get versions . $repo_path/$port/Pkgfile u_port_version=$version-$release . $overlay_path/$port/Pkgfile o_port_version=$version-$release if [ "$u_port_version" != "$o_port_version" ]; then printf "%-20s %-20s %-s\n" $port "$o_port_version" "$u_port_version ($u_repo)" >> $TMP_FILE fi fi done # print results if [ "$(wc -l $TMP_FILE | cut -d' ' -f1)" != "0" ]; then echo "Results for overlay: $overlay" printf "%-20s %-20s %-s\n" "PORT" "VERSION" "UPSTREAM" cat $TMP_FILE && : > $TMP_FILE echo fi } if [ $# -lt 1 ]; then echo "Usage: $(basename $0) [overlay_repo]" exit 1 fi for TARGET in $@; do TMP_FILE=$(mktemp) checkOverlayUpdates $TARGET rm -f $TMP_FILE done # End of file