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