#!/bin/bash # # pkglist - create a list of packages to be merged with mergelist # if no parameters are given, just create a full list of pkgs on the system (w/ versions) [[ $# -lt 1 ]] && ACTION="full" # print usage message [[ $# -gt 1 ]] && echo "Usage: pkglist [system|world]" # other ACTIONS can be added here later. right now we just default to passing any params # straight to emerge. (think "system") case $ACTION in "full" ) echo "Creating list of all installed packages in ~/pkglist..." find /var/db/pkg/ -iname "*.ebuild" \ | cut -f5,7 -d/ \ > ~/pkglist sort ~/pkglist -o ~/pkglist ;; * ) echo "Creating list for emerge target \"$@\" in ~/pkglist..." emerge -ep "$@" \ | sed -e '/^\[.*/!d' \ > ~/pkglist ;; esac # this bit should sanitize ~/pkglist for use by mergelist. # after passing through here, ~/pkglist will be a list in the form: # # ~category/pkgname-version-rev sed -i -e 's:\.ebuild$::g' \ -e 's:\[ebuild.*\].::g' \ -e '/^$/d' \ -e 's:USE=.*$::g' \ -e 's:\(^.*$\):~\1:g' \ -e '/^.*virtual\/.*$/d' \ -e '/^.*x11-proto\/.*$/d' \ ~/pkglist