]> git.wh0rd.org - home.git/blame - .profile.d/gentoo.sh
punt vdsp wrappers
[home.git] / .profile.d / gentoo.sh
CommitLineData
eca710ea
MF
1alias ebuild-sync='rsync -av ./ /usr/portage/${PWD#/usr/local/src/gentoo-x86/} --exclude ChangeLog --exclude CVS --exclude metadata.xml --delete'
2alias ebuild-emerge='sudo emerge -1av $(echo ${PWD} | awk -F/ "{printf \"%s/%s\", \$(NF-1), \$(NF)}")'
3
1afdf944
MF
4cvs_gentoo_url() {
5_cvs_gentoo_url() {
6 if [[ -n $2 ]] ; then
7 echo "Usage: cvs_gentoo_url <file>[:rev1[:rev2]]"
8 return 1
9 fi
10
11 # spec has the form file:rev1[:rev2]
12 # rev2 defaults to rev1-1
13 export IFS=:
14 set -- $1
15 unset IFS
16
17 local file=$1
18 if [[ ! -e ${file} ]] ; then
19 echo "file '${file}' does not exist"
20 return 1
21 fi
22 local dir="."
23 [[ ${file} == */* ]] && dir=${file%/*}
24 file=${file##*/}
25
26 local rev2=$2
27 if [[ -z ${rev2} ]] ; then
28 rev2=$(
29 cd ${dir}
30 export IFS=/
31 set -- $(grep /${file}/ CVS/Entries)
32 unset IFS
33 echo $3
34 )
35 if [[ ${rev2} == "0" ]] ; then
36 # new file
37 rev2="1.1"
38 else
39 # existing file, bump rev automatically
40 rev2="1.$((${rev2#1.}+1))"
41 fi
42 fi
43 local rev2r=${rev2#1.}
44 local rev1=${3:-1.$((rev2r - 1))}
45
46 local cvsroot=$(<${dir}/CVS/Repository)
47 if [[ ${cvsroot} == gentoo-x86* ]] ; then
48 cvsroot=${cvsroot#gentoo-x86}
49 cvsroot=${cvsroot#/}
50 fi
51
52 local urirev
53 [[ ${rev2} == "1.1" || ${rev1} == "${rev2}" ]] \
54 && urirev="?rev=${rev2}" \
55 || urirev="?r1=${rev1}&r2=${rev2}"
56 echo "http://sources.gentoo.org/${cvsroot}/${file}${urirev}"
57}
58 local f
59 for f in "$@" ; do
60 _cvs_gentoo_url "${f}"
61 done
62 unset _cvs_gentoo_url
63}
c58e899d
MF
64git_gentoo_url() {
65 local repo=$(git config remote.origin.url | sed 's:.*git.overlays.gentoo.org/::')
66 git log -n3 ${1:-HEAD} | \
67 sed "s,^commit ,http://git.overlays.gentoo.org/gitweb/?p=${repo};a=commitdiff;h=,"
68}
39d58573 69svn_gentoo_url() {
5b85a493
MF
70 if [[ -z $* ]] ; then
71 svn info | \
72 awk '{
73 if ($1 == "URL:") {
74 URL = "http://sources.gentoo.org/" gensub(/.*svnroot\/([^/]*).*/,"\\1","");
75 } else if ($1 == "Revision:") {
76 rev = $2
77 URL = URL "?rev=" (rev + 1) "&view=rev"
78 }
79 }
80 END { print URL }'
81 return 0
82 fi
83
39d58573
MF
84 local f
85 for f in "$@" ; do
86 svn info "${f}" | \
87 awk '{
88 if ($1 == "URL:") {
89 sub(/.*svnroot/,"")
90 URL = "http://sources.gentoo.org" $1 "?"
91 } else if ($1 == "Revision:") {
92 rev = $2
93 URL = URL "r1=" rev "&r2=" (rev + 1)
94 }
95 }
96 END { print URL }'
97 done
98}
1afdf944 99
2239c239 100_echangelog() {
1afdf944
MF
101 [[ ! -e ChangeLog ]] \
102 && echo "No ChangeLog" \
103 && return 1
104 echangelog "$@" || return 1
2239c239
MF
105}
106er() {
369dd755 107 repoman commit --echangelog=y "${@:1:$#-1}" -m "${@:$#}" || return 1
1afdf944 108}
2239c239 109ec() {
369dd755
MF
110 (
111 _echangelog "$@" || exit 1
112 cvs commit -m "$@" || exit 1
113 )
2239c239
MF
114}
115
1afdf944 116att() {
294704a2
MF
117 while [[ $# -gt 0 ]] ; do
118 declare url=$1 tmp=$(mktemp) filename || return 1
119 [[ ${url} == */* ]] || url="http://bugs.gentoo.org/attachment.cgi?id=${url}"
120 printf '%s -> ' "${url}"
121 if eval $(wget -S -O"${tmp}" "${url}" 2>&1 |
122 grep 'Content-disposition:' | sed 's/.* //') && \
123 mv "${tmp}" "${filename}" && \
124 chmod $(printf "%03o" "$((0666 & ~$(umask)))") "${filename}" ; then
125 du -b "${filename}"
126 else
127 echo "FAIL"
128 rm -f "${tmp}"
129 fi
130 shift
131 done
1afdf944
MF
132}
133arch_emails() {
ef325790 134 local ret
1afdf944
MF
135 if [[ $@ == *.ebuild* ]] ; then
136 local e keys
137 for e in "$@" ; do
39d58573 138 keys=$(sed -n '/^[[:space:]]*KEYWORD/{s:.*=::;s:"::g;p}' ${e})
1afdf944
MF
139 for a in ${keys} ; do
140 [[ ${a} != ~* ]] && continue
ef325790 141 ret="${ret} ${a}"
1afdf944
MF
142 done
143 done
144 else
ef325790 145 ret="$*"
1afdf944 146 fi
ef325790
MF
147 printf '%s@gentoo.org ' ${ret//\~}
148 echo
1afdf944 149}
8ef7abb4
MF
150stable_arch_emails() {
151 arch_emails "$@" | sed -r -e 's:([^ ]*-[^ ]*|mips)@[^ ]*::g'
152}
036bd914
MF
153eget_maintainer() {
154 local f=${1:-metadata.xml}
155 local maintainer=$(xml sel -t -v pkgmetadata/herd $f)
156 if [[ ${maintainer:-no-herd} == "no-herd" ]] ; then
157 maintainer=$(xml sel -t -v pkgmetadata/maintainer/email $f)
158 elif [[ -n ${maintainer} ]] ; then
159 maintainer="${maintainer}@gentoo.org"
160 fi
161 if [[ -z ${maintainer} ]] ; then
162 echo "No maintainer found in $f"
163 return 1
164 fi
94696975 165 echo ${maintainer}
036bd914
MF
166 return 0
167}
1afdf944
MF
168submit_bug_stable() {
169 local msg="doit"
170 if [[ $1 == "-m" ]] ; then
171 msg=$2
172 shift 2
173 fi
174 if [[ -z $1 ]] || [[ -n $2 ]] ; then
175 echo "Usage: submit_bug_stable <ebuilds>"
176 return 1
177 fi
036bd914
MF
178 local maintainer
179 maintainer=$(eget_maintainer) || return 1
1afdf944
MF
180 local cat=$(basename $(dirname $(pwd)))
181 local pkg=${1%.ebuild}
182 local ebuild=${pkg}.ebuild
8ef7abb4 183 local cc=$(stable_arch_emails ${ebuild})
1afdf944
MF
184 if [[ -z ${cc} ]] ; then
185 echo "Unable to read ebuild '${ebuild}'"
186 return 1
187 fi
94696975
MF
188 if [[ ${maintainer} == *" "* ]] ; then
189 cc+=",${maintainer#* }"
190 maintainer=${maintainer%% *}
191 fi
ef325790
MF
192 gbugz \
193 post \
5b85a493 194 --batch \
ef325790 195 -t "${cat}/${pkg}: stabilize" \
1afdf944
MF
196 -d "${msg}" \
197 -a "${maintainer}" \
ef325790 198 --cc="${cc// /,}" \
39d58573
MF
199 -k STABLEREQ \
200 --product='Gentoo Linux' \
201 --component=Ebuilds \
ef325790 202 --priority=Normal \
39d58573 203 --severity=enhancement
1afdf944
MF
204}
205
206eskeys() {
207 local k cat
208 if [[ ! -e ChangeLog ]] ; then
209 # running in a category rather than package
210 cat="/"
211 fi
212 [[ -z $* ]] && set -- arm m68k s390 sh
213 for k in "$@" ; do
214 local list="$(grep "^KEYWORDS=.*~${k}\>.*[^~]x86" *${cat}*d -l)"
215 [[ -z ${list} ]] && continue
216 sed -i "1s:.*:# Copyright 1999-$(date +%Y) Gentoo Foundation:" ${list}
217 ekeyword ${k} ${list}
218 done
219}
220_erit() {
221 local msg=$1 ; shift
222 [[ $1 == [[:digit:]]* ]] && msg="$msg #$1" && shift
223 echo repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
224 repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
225}
226erstable() { _erit stable "$@" ; }
227erlove() { _erit love "$@" ; }
8ef7abb4
MF
228
229export PORTAGE_INST_UID=${UID}
230export PORTAGE_INST_GID=`id -g`