- repo_path=$(grep 'destination' /etc/ports/$repo.{rsync,httpup} 2>/dev/null | cut -d'=' -f2)
-
- # foreach overlayed port check for updates available
- find $overlay_path -type f -name 'Pkgfile' -exec dirname {} \; | while read o_port; do
- port=$repo_path/$(basename $o_port)
- # get versions for both (port and o_port)
- . $port/Pkgfile
- port_version=$version-$release
- . $o_port/Pkgfile
- o_port_version=$version-$release
- if [ "$port_version" != "$o_port_version" ]; then
- printf "%-20s %10s %10s\n" $(basename $port) $o_port_version $port_version >> $TMP_FILE
+ 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