X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=.profile.d%2Fgentoo.sh;h=950260c749a7a455f8427a647ea201b38d061d87;hb=942a43e2e16198361bee17df0077435a5064a2ed;hp=34bb31f51375ae9d67d3a8cf251e3195ef5d065b;hpb=39d58573fc0d8290254183273a5f228d7cebbb1f;p=home.git diff --git a/.profile.d/gentoo.sh b/.profile.d/gentoo.sh index 34bb31f..950260c 100644 --- a/.profile.d/gentoo.sh +++ b/.profile.d/gentoo.sh @@ -1,121 +1,80 @@ -cvs_gentoo_url() { -_cvs_gentoo_url() { - if [[ -n $2 ]] ; then - echo "Usage: cvs_gentoo_url [: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 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' +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() { - 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 -} - -er() { +_echangelog() { [[ ! -e ChangeLog ]] \ && echo "No ChangeLog" \ && return 1 echangelog "$@" || return 1 - repoman commit -m "$@" || return 1 } +er() { + repoman commit "${@: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" + 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 + 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 - echo ${ret} + 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 +86,31 @@ submit_bug_stable() { echo "Usage: submit_bug_stable " 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,19 +120,19 @@ eskeys() { # 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" + echo git commit -m "$(echo $@ | sed 's: :/:g') $msg" + git commit -m "$(echo $@ | sed 's: :/:g') $msg" } erstable() { _erit stable "$@" ; } erlove() { _erit love "$@" ; } + +export PORTAGE_INST_UID=${UID} +export PORTAGE_INST_GID=`id -g`