]> git.wh0rd.org - home.git/blobdiff - .profile.d/gentoo.sh
aliases: use hardlinks with rsync, and disable line chomping w/grep colors
[home.git] / .profile.d / gentoo.sh
index 31e64c5f4307d632072b1e05b7ab76972ded0d98..1f29037ec860d9c5ac49488497b56c0293ed8982 100644 (file)
@@ -1,3 +1,6 @@
+alias ebuild-sync='rsync -av ./ /usr/portage/${PWD#/usr/local/src/gentoo-x86/} --exclude ChangeLog --exclude CVS --exclude metadata.xml --delete'
+alias ebuild-emerge='sudo emerge -1av $(echo ${PWD} | awk -F/ "{printf \"%s/%s\", \$(NF-1), \$(NF)}")'
+
 cvs_gentoo_url() {
 _cvs_gentoo_url() {
        if [[ -n $2 ]] ; then
@@ -101,12 +104,13 @@ _echangelog() {
        echangelog "$@" || return 1
 }
 er() {
-       _echangelog "$@" || return 1
-       repoman commit -m "$@" || return 1
+       repoman commit --echangelog=y "${@:1:$#-1}" -m "${@:$#}" || return 1
 }
 ec() {
-       _echangelog "$@" || return 1
-       cvs commit -m "$@" || return 1
+       (
+       _echangelog "$@" || exit 1
+       cvs commit -m "$@" || exit 1
+       )
 }
 
 att() {
@@ -138,6 +142,24 @@ arch_emails() {
        printf '%s@gentoo.org ' ${ret//\~}
        echo
 }
+stable_arch_emails() {
+       arch_emails "$@" | sed -r -e 's:([^ ]*-[^ ]*|mips)@[^ ]*::g'
+}
+eget_maintainer() {
+       local f=${1:-metadata.xml}
+       local maintainer=$(xml sel -t -v pkgmetadata/herd $f)
+       if [[ ${maintainer:-no-herd} == "no-herd" ]] ; then
+               maintainer=$(xml sel -t -v pkgmetadata/maintainer/email $f)
+       elif [[ -n ${maintainer} ]] ; then
+               maintainer="${maintainer}@gentoo.org"
+       fi
+       if [[ -z ${maintainer} ]] ; then
+               echo "No maintainer found in $f"
+               return 1
+       fi
+       echo ${maintainer}
+       return 0
+}
 submit_bug_stable() {
        local msg="doit"
        if [[ $1 == "-m" ]] ; then
@@ -148,24 +170,20 @@ submit_bug_stable() {
                echo "Usage: submit_bug_stable <ebuilds>"
                return 1
        fi
-       local maintainer=$(xml sel -t -v pkgmetadata/herd metadata.xml)
-       if [[ ${maintainer} == "no-herd" ]] ; then
-               maintainer=$(xml sel -t -v pkgmetadata/maintainer/email metadata.xml)
-       elif [[ -n ${maintainer} ]] ; then
-               maintainer="${maintainer}@gentoo.org"
-       fi
-       if [[ -z ${maintainer} ]] ; then
-               echo "No maintainer found in metadata.xml"
-               return 1
-       fi
+       local maintainer
+       maintainer=$(eget_maintainer) || return 1
        local cat=$(basename $(dirname $(pwd)))
        local pkg=${1%.ebuild}
        local ebuild=${pkg}.ebuild
-       local cc=$(arch_emails ${ebuild} | sed -r -e 's:([^ ]*-[^ ]*|mips)@[^ ]*::g')
+       local cc=$(stable_arch_emails ${ebuild})
        if [[ -z ${cc} ]] ; then
                echo "Unable to read ebuild '${ebuild}'"
                return 1
        fi
+       if [[ ${maintainer} == *" "* ]] ; then
+               cc+=",${maintainer#* }"
+               maintainer=${maintainer%% *}
+       fi
        gbugz \
                post \
                --batch \
@@ -202,3 +220,6 @@ _erit() {
 }
 erstable() { _erit stable "$@" ; }
 erlove() { _erit love "$@" ; }
+
+export PORTAGE_INST_UID=${UID}
+export PORTAGE_INST_GID=`id -g`