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