]> git.wh0rd.org Git - 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`