]> git.wh0rd.org - home.git/blobdiff - .profile.d/gentoo.sh
ignore connect errors
[home.git] / .profile.d / gentoo.sh
index 34bb31f51375ae9d67d3a8cf251e3195ef5d065b..1f1de40d6f7130605cfe245b63432e7e8c8393c9 100644 (file)
@@ -1,3 +1,7 @@
+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)}")'
+alias ekeyword='ekeyword -v -q'
+
 cvs_gentoo_url() {
 _cvs_gentoo_url() {
        if [[ -n $2 ]] ; then
@@ -64,6 +68,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,42 +98,73 @@ 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"
-       eval $(wget -S -O"$tmp" "$url" 2>&1 | tee /dev/tty | \
-              grep 'Content-disposition:' | sed 's/.* //') && \
-               mv "$tmp" "$filename" && \
-               chmod $(printf "%03o" "$((0666 & ~$(umask)))") "$filename" && \
-               ls -l "$filename" && \
-               return 0
-       rm -f "$tmp"
-       return 1
+       while [[ $# -gt 0 ]] ; do
+               declare url=$1 tmp=$(mktemp) filename || return 1
+               [[ ${url} == */* ]] || url="http://bugs.gentoo.org/attachment.cgi?id=${url}"
+               printf '%s -> ' "${url}"
+               if eval $(wget -S -O"${tmp}" "${url}" 2>&1 |
+                       grep 'Content-disposition:' | sed 's/.* //') && \
+                       mv "${tmp}" "${filename}" && \
+                       chmod $(printf "%03o" "$((0666 & ~$(umask)))") "${filename}" ; then
+                       du -b "${filename}"
+               else
+                       echo "FAIL"
+                       rm -f "${tmp}"
+               fi
+               shift
+       done
 }
 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
+       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 ${ret}
+       echo ${maintainer}
+       return 0
 }
 submit_bug_stable() {
        local msg="doit"
@@ -127,39 +176,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
 }
 
@@ -169,11 +210,10 @@ eskeys() {
                # running in a category rather than package
                cat="/"
        fi
-       [[ -z $* ]] && set -- arm m68k s390 sh
+       [[ -z $* ]] && set -- m68k s390 sh
        for k in "$@" ; do
-               local list="$(grep "^KEYWORDS=.*~${k}\>.*[^~]x86" *${cat}*d -l)"
+               local list="$(grep "^[[:space:]]*KEYWORDS=.*~${k}\>.*[^~]x86" *${cat}*d -l)"
                [[ -z ${list} ]] && continue
-               sed -i "1s:.*:# Copyright 1999-$(date +%Y) Gentoo Foundation:" ${list}
                ekeyword ${k} ${list}
        done
 }
@@ -185,3 +225,6 @@ _erit() {
 }
 erstable() { _erit stable "$@" ; }
 erlove() { _erit love "$@" ; }
+
+export PORTAGE_INST_UID=${UID}
+export PORTAGE_INST_GID=`id -g`