#!/bin/bash # List of available updates for unmaintained void packages installed locally outdated_orphan(){ local DISTURL="https://repo-default.voidlinux.org/void-updates/void-updates/updates_orphan%40voidlinux.org.txt" local DISTFILE="updates_orphan.txt" wget --hsts-file="$XDG_CACHE_HOME/wget-hsts" --output-document ${DISTFILE} --quiet ${DISTURL} # filter out uninterested packages # opinionated, `lib` could be a bit overkill grep -vE 'apache-|avr-|cargo-|cinnamon|gnome-|gst-|jenkins|lib|linux|live555|nemo-|pantheon-|perl-|python3-grpcio|python3-google|ruby-|R-cran-' ${DISTFILE} | sponge ${DISTFILE} # dedup, leave only the highest available version # side effect: order is slightly different awk '!seen[$1]++ {line[$1] = $0} {line[$1] = $0} END {for (pkg in line) print line[pkg]}' ${DISTFILE} | sort | sponge ${DISTFILE} # dedup again, leave only installed packages awk 'NR==FNR{installed[$1]; next} $1 in installed' installed.txt ${DISTFILE} | sort | sponge ${DISTFILE} # TODO: filter out existing update branches # git branch --list |awk '{print $1}' > branches.txt # awk 'NR==FNR{branches[$1]; next} {for (b in branches) if ($1 ~ b) next} {print}' branches.txt ${DISTFILE} } # List my outdated packages w/o xcheckmypkgs # only work in local void-packages copy if XBPS_DISTDIR is not set outdated_mypkg(){ local MYURL XDISTDIR="$(xdistdir)" || exit 1 MYURL="https://repo-default.voidlinux.org/void-updates/void-updates/updates_$(git -C "${XDISTDIR}" config user.email | sed 's/@/%40/').txt" local MYFILE="updates_me.txt" wget --hsts-file="$XDG_CACHE_HOME/wget-hsts" --output-document ${MYFILE} --quiet "${MYURL}" } # List packages that have error checking updates outdated_error(){ local LOG_URL="https://repo-default.voidlinux.org/void-updates/void-updates/_log.txt" local LOG_FILE="updates_nover.txt" wget --hsts-file="$XDG_CACHE_HOME/wget-hsts" --output-document ${LOG_FILE} --quiet ${LOG_URL} # leave only (manually) installed packages grep -v 'No such file' < ${LOG_FILE} | awk 'BEGIN { while ((getline < "installed.txt") > 0) { installed[$1] } } { package = $5; if (package in installed) print $0 }' | sponge ${LOG_FILE} } # list only manually installed packages xpkg -m > installed.txt # query all installed packages (including core packages, more complete, but MUCH slower) # xbps-query -l | awk '{ print $2 }' | xargs -n1 xbps-uhelper getpkgname > installed.txt # functions here outdated_orphan outdated_mypkg outdated_error # garbage clean rm installed.txt