]> git.wh0rd.org - home.git/blobdiff - .profile.d/gentoo.sh
cros-board: update
[home.git] / .profile.d / gentoo.sh
index 04a6c32038322fa24f413dc1893787dbf8291abd..8aac8e8528d73cbd3d631f00e66cfa14f1593833 100644 (file)
@@ -1,97 +1,11 @@
-cvs_gentoo_url() {
-_cvs_gentoo_url() {
-       if [[ -n $2 ]] ; then
-               echo "Usage: cvs_gentoo_url <file>[:rev1[:rev2]]"
-               return 1
-       fi
-
-       # spec has the form file:rev1[:rev2]
-       # rev2 defaults to rev1-1
-       export IFS=:
-       set -- $1
-       unset IFS
-
-       local file=$1
-       if [[ ! -e ${file} ]] ; then
-               echo "file '${file}' does not exist"
-               return 1
-       fi
-       local dir="."
-       [[ ${file} == */* ]] && dir=${file%/*}
-       file=${file##*/}
-
-       local rev2=$2
-       if [[ -z ${rev2} ]] ; then
-               rev2=$(
-                       cd ${dir}
-                       export IFS=/
-                       set -- $(grep /${file}/ CVS/Entries)
-                       unset IFS
-                       echo $3
-               )
-               if [[ ${rev2} == "0" ]] ; then
-                       # new file
-                       rev2="1.1"
-               else
-                       # existing file, bump rev automatically
-                       rev2="1.$((${rev2#1.}+1))"
-               fi
-       fi
-       local rev2r=${rev2#1.}
-       local rev1=${3:-1.$((rev2r - 1))}
-
-       local cvsroot=$(<${dir}/CVS/Repository)
-       if [[ ${cvsroot} == gentoo-x86* ]] ; then
-               cvsroot=${cvsroot#gentoo-x86}
-               cvsroot=${cvsroot#/}
-       fi
+alias ebuild-sync='rsync -av ./ /usr/portage/${PWD#/usr/local/src/gentoo/repo/gentoo/} --exclude ChangeLog --exclude metadata.xml --delete'
+alias ekeyword='ekeyword -v -q'
+alias repoman='repoman -q -q'
+alias rf='/usr/local/src/gentoo/portage/repoman/bin/repoman.git -q full'
 
-       local urirev
-       [[ ${rev2} == "1.1" || ${rev1} == "${rev2}" ]] \
-               && urirev="?rev=${rev2}" \
-               || urirev="?r1=${rev1}&r2=${rev2}"
-       echo "http://sources.gentoo.org/${cvsroot}/${file}${urirev}"
-}
-       local f
-       for f in "$@" ; do
-               _cvs_gentoo_url "${f}"
-       done
-       unset _cvs_gentoo_url
-}
-git_gentoo_url() {
-       local repo=$(git config remote.origin.url | sed 's:.*git.overlays.gentoo.org/::')
-       git log -n3 ${1:-HEAD} | \
-               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}" | \
-               awk '{
-                       if ($1 == "URL:") {
-                               sub(/.*svnroot/,"")
-                               URL = "http://sources.gentoo.org" $1 "?"
-                       } else if ($1 == "Revision:") {
-                               rev = $2
-                               URL = URL "r1=" rev "&r2=" (rev + 1)
-                       }
-               }
-               END { print URL }'
-       done
+ebuild-emerge() {
+       sudo -E emerge -1av "$@" \
+               $(echo "${PWD}" | awk -F/ "{printf \"%s/%s\", \$(NF-1), \$(NF)}")
 }
 
 _echangelog() {
@@ -101,43 +15,70 @@ _echangelog() {
        echangelog "$@" || return 1
 }
 er() {
-       _echangelog "$@" || return 1
-       repoman commit -m "$@" || return 1
+       repoman commit "${@:1:$#-1}" -m "${@:$#}" || return 1
 }
 ec() {
-       _echangelog "$@" || return 1
-       cvs commit -m "$@" || return 1
+       (
+       _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"
+                               case ${a} in
+                               *-*) continue ;;
+                               ~arm64|~m68k|~mips|~s390|~sh) continue ;;
+                               ~*) ret="${ret} ${a}" ;;
+                               esac
                        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"
@@ -149,57 +90,65 @@ 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
-       bugz post \
+       if [[ ${maintainer} == *" "* ]] ; then
+               cc+=",${maintainer#* }"
+               maintainer=${maintainer%% *}
+       fi
+       gbugz \
+               post \
                --batch \
-               -u vapier@gentoo.org \
-               -t "Stabilize ${cat}/${pkg}" \
+               -t "${cat}/${pkg}: stabilize" \
                -d "${msg}" \
                -a "${maintainer}" \
-               --cc="${cc}" \
-               -k STABLEREQ \
+               --cc="${cc// /,}" \
                --product='Gentoo Linux' \
                --component=Ebuilds \
-               --priority=P2 \
+               --priority=Normal \
                --severity=enhancement
+#              -k STABLEREQ 
 }
 
 eskeys() {
        local k cat
-       if [[ ! -e ChangeLog ]] ; then
+       if [[ ! -e Manifest ]] ; then
                # running in a category rather than package
                cat="/"
        fi
-       [[ -z $* ]] && set -- arm m68k s390 sh
+       [[ -z $* ]] && set -- arm64 m68k s390 sh
        for k in "$@" ; do
-               local list="$(grep "^KEYWORDS=.*~${k}\>.*[^~]x86" *${cat}*d -l)"
-               [[ -z ${list} ]] && continue
-               sed -i "1s:.*:# Copyright 1999-$(date +%Y) Gentoo Foundation:" ${list}
-               ekeyword ${k} ${list}
+               ekeyword "${k}=x86" $(grep -l "KEYWORDS.*${k}" *${cat}*.ebuild)
        done
 }
 _erit() {
-       local msg=$1 ; shift
-       [[ $1 == [[:digit:]]* ]] && msg="$msg #$1" && shift
-       echo repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
-       repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
+       if [[ $# -eq 1 ]] ; then
+               echo "Args: <ver> <arches>"
+               return 1
+       fi
+
+       local cat=$(basename "$(dirname "${PWD}")")
+       local pkg=$(basename "${PWD}")
+       local mode=$1 ; shift
+       local ver=$1 ; shift
+       local arches=$(printf '%s/' $(printf '%s\n' "$@" | sort -u))
+       arches=${arches%/}
+       local msg="${cat}/${pkg}: mark ${ver} ${arches} ${mode}"
+
+       local cmd=( git commit -m "${msg}" . )
+       echo "${cmd[@]}"
+       "${cmd[@]}"
 }
 erstable() { _erit stable "$@" ; }
 erlove() { _erit love "$@" ; }
+
+export PORTAGE_INST_UID=${UID}
+export PORTAGE_INST_GID=`id -g`