]> 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 34bb31f51375ae9d67d3a8cf251e3195ef5d065b..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
@@ -64,6 +67,20 @@ git_gentoo_url() {
                sed "s,^commit ,http://git.overlays.gentoo.org/gitweb/?p=${repo};a=commitdiff;h=,"
 }
 svn_gentoo_url() {
+       if [[ -z $* ]] ; then
+               svn info | \
+               awk '{
+                       if ($1 == "URL:") {
+                               URL = "http://sources.gentoo.org/" gensub(/.*svnroot\/([^/]*).*/,"\\1","");
+                       } else if ($1 == "Revision:") {
+                               rev = $2
+                               URL = URL "?rev=" (rev + 1) "&view=rev"
+                       }
+               }
+               END { print URL }'
+               return 0
+       fi
+
        local f
        for f in "$@" ; do
                svn info "${f}" | \
@@ -80,13 +97,22 @@ svn_gentoo_url() {
        done
 }
 
-er() {
+_echangelog() {
        [[ ! -e ChangeLog ]] \
                && echo "No ChangeLog" \
                && return 1
        echangelog "$@" || return 1
-       repoman commit -m "$@" || return 1
 }
+er() {
+       repoman commit --echangelog=y "${@:1:$#-1}" -m "${@:$#}" || return 1
+}
+ec() {
+       (
+       _echangelog "$@" || exit 1
+       cvs commit -m "$@" || exit 1
+       )
+}
+
 att() {
        declare url=$1 tmp=$(mktemp) filename || return 1
        [[ $url == */* ]] || url="http://bugs.gentoo.org/attachment.cgi?id=$url"
@@ -100,22 +126,39 @@ att() {
        return 1
 }
 arch_emails() {
-       local a ret=""
+       local ret
        if [[ $@ == *.ebuild* ]] ; then
                local e keys
                for e in "$@" ; do
                        keys=$(sed -n '/^[[:space:]]*KEYWORD/{s:.*=::;s:"::g;p}' ${e})
                        for a in ${keys} ; do
                                [[ ${a} != ~* ]] && continue
-                               ret="${ret} ${a/\~}@gentoo.org"
+                               ret="${ret} ${a}"
                        done
                done
        else
-               for a in "$@" ; do
-                       ret="${ret} ${a/\~}@gentoo.org"
-               done
+               ret="$*"
        fi
-       echo ${ret}
+       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"
@@ -127,39 +170,31 @@ 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:([^ ]*-fbsd|mips)@[^ ]*::g')
+       local cc=$(stable_arch_emails ${ebuild})
        if [[ -z ${cc} ]] ; then
                echo "Unable to read ebuild '${ebuild}'"
                return 1
        fi
-       bugz post \
-               -u vapier@gentoo.org \
-               -t "Stabilize ${cat}/${pkg}" \
+       if [[ ${maintainer} == *" "* ]] ; then
+               cc+=",${maintainer#* }"
+               maintainer=${maintainer%% *}
+       fi
+       gbugz \
+               post \
+               --batch \
+               -t "${cat}/${pkg}: stabilize" \
                -d "${msg}" \
                -a "${maintainer}" \
-               --cc="${cc}" \
-               -U "" \
+               --cc="${cc// /,}" \
                -k STABLEREQ \
                --product='Gentoo Linux' \
                --component=Ebuilds \
-               --version= \
-               --no-append-command \
-               --depends-on= \
-               --blocked= \
-               --priority=P2 \
+               --priority=Normal \
                --severity=enhancement
 }
 
@@ -185,3 +220,6 @@ _erit() {
 }
 erstable() { _erit stable "$@" ; }
 erlove() { _erit love "$@" ; }
+
+export PORTAGE_INST_UID=${UID}
+export PORTAGE_INST_GID=`id -g`