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