]> git.wh0rd.org - home.git/blob - .profile.d/gentoo.sh
gentoo: add rf helper
[home.git] / .profile.d / gentoo.sh
1 alias ebuild-sync='rsync -av ./ /usr/portage/${PWD#/usr/local/src/gentoo/repo/gentoo/} --exclude ChangeLog --exclude CVS --exclude metadata.xml --delete'
2 alias ebuild-emerge='sudo emerge -1av $(echo ${PWD} | awk -F/ "{printf \"%s/%s\", \$(NF-1), \$(NF)}")'
3 alias ekeyword='ekeyword -v -q'
4 alias rf='repoman full'
5
6 _echangelog() {
7 [[ ! -e ChangeLog ]] \
8 && echo "No ChangeLog" \
9 && return 1
10 echangelog "$@" || return 1
11 }
12 er() {
13 repoman commit "${@:1:$#-1}" -m "${@:$#}" || return 1
14 }
15 ec() {
16 (
17 _echangelog "$@" || exit 1
18 cvs commit -m "$@" || exit 1
19 )
20 }
21
22 att() {
23 while [[ $# -gt 0 ]] ; do
24 declare url=$1 tmp=$(mktemp) filename || return 1
25 [[ ${url} == */* ]] || url="http://bugs.gentoo.org/attachment.cgi?id=${url}"
26 printf '%s -> ' "${url}"
27 if eval $(wget -S -O"${tmp}" "${url}" 2>&1 |
28 grep 'Content-disposition:' | sed 's/.* //') && \
29 mv "${tmp}" "${filename}" && \
30 chmod $(printf "%03o" "$((0666 & ~$(umask)))") "${filename}" ; then
31 du -b "${filename}"
32 else
33 echo "FAIL"
34 rm -f "${tmp}"
35 fi
36 shift
37 done
38 }
39 arch_emails() {
40 local ret
41 if [[ $@ == *.ebuild* ]] ; then
42 local e keys
43 for e in "$@" ; do
44 keys=$(sed -n '/^[[:space:]]*KEYWORD/{s:.*=::;s:"::g;p}' ${e})
45 for a in ${keys} ; do
46 [[ ${a} != ~* ]] && continue
47 ret="${ret} ${a}"
48 done
49 done
50 else
51 ret="$*"
52 fi
53 printf '%s@gentoo.org ' ${ret//\~}
54 echo
55 }
56 stable_arch_emails() {
57 arch_emails "$@" | sed -r -e 's:([^ ]*-[^ ]*|mips)@[^ ]*::g'
58 }
59 eget_maintainer() {
60 local f=${1:-metadata.xml}
61 local maintainer=$(xml sel -t -v pkgmetadata/herd $f)
62 if [[ ${maintainer:-no-herd} == "no-herd" ]] ; then
63 maintainer=$(xml sel -t -v pkgmetadata/maintainer/email $f)
64 elif [[ -n ${maintainer} ]] ; then
65 maintainer="${maintainer}@gentoo.org"
66 fi
67 if [[ -z ${maintainer} ]] ; then
68 echo "No maintainer found in $f"
69 return 1
70 fi
71 echo ${maintainer}
72 return 0
73 }
74 submit_bug_stable() {
75 local msg="doit"
76 if [[ $1 == "-m" ]] ; then
77 msg=$2
78 shift 2
79 fi
80 if [[ -z $1 ]] || [[ -n $2 ]] ; then
81 echo "Usage: submit_bug_stable <ebuilds>"
82 return 1
83 fi
84 local maintainer
85 maintainer=$(eget_maintainer) || return 1
86 local cat=$(basename $(dirname $(pwd)))
87 local pkg=${1%.ebuild}
88 local ebuild=${pkg}.ebuild
89 local cc=$(stable_arch_emails ${ebuild})
90 if [[ -z ${cc} ]] ; then
91 echo "Unable to read ebuild '${ebuild}'"
92 return 1
93 fi
94 if [[ ${maintainer} == *" "* ]] ; then
95 cc+=",${maintainer#* }"
96 maintainer=${maintainer%% *}
97 fi
98 gbugz \
99 post \
100 --batch \
101 -t "${cat}/${pkg}: stabilize" \
102 -d "${msg}" \
103 -a "${maintainer}" \
104 --cc="${cc// /,}" \
105 -k STABLEREQ \
106 --product='Gentoo Linux' \
107 --component=Ebuilds \
108 --priority=Normal \
109 --severity=enhancement
110 }
111
112 eskeys() {
113 local k cat
114 if [[ ! -e ChangeLog ]] ; then
115 # running in a category rather than package
116 cat="/"
117 fi
118 [[ -z $* ]] && set -- arm64 m68k s390 sh
119 for k in "$@" ; do
120 ekeyword "${k}=x86" $(grep -l "KEYWORDS.*${k}" *${cat}*.ebuild)
121 done
122 }
123 _erit() {
124 local msg=$1 ; shift
125 [[ $1 == [[:digit:]]* ]] && msg="$msg #$1" && shift
126 echo repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
127 repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
128 }
129 erstable() { _erit stable "$@" ; }
130 erlove() { _erit love "$@" ; }
131
132 export PORTAGE_INST_UID=${UID}
133 export PORTAGE_INST_GID=`id -g`