1 |
commit: bd2318b2ecc9f7a68e321c9f2ddcbe08825ccaef |
2 |
Author: Ian Stakenvicius <axs <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Jul 1 16:55:20 2012 +0000 |
4 |
Commit: Ian Stakenvicius <axs <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Jul 1 16:55:20 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=dev/axs.git;a=commit;h=bd2318b2 |
7 |
|
8 |
Added script hack-4slotabi-into-portagedb.sh to upgrade any existing EAPI=4 packages to EAPI=4-slot-abi in /var/db/pkg |
9 |
|
10 |
--- |
11 |
hack-4slotabi-into-portagedb.sh | 151 +++++++++++++++++++++++++++++++++++++++ |
12 |
profiles/base/package.keywords | 1 - |
13 |
profiles/updates/1Q-2099 | 15 ---- |
14 |
3 files changed, 151 insertions(+), 16 deletions(-) |
15 |
|
16 |
diff --git a/hack-4slotabi-into-portagedb.sh b/hack-4slotabi-into-portagedb.sh |
17 |
new file mode 100755 |
18 |
index 0000000..385d152 |
19 |
--- /dev/null |
20 |
+++ b/hack-4slotabi-into-portagedb.sh |
21 |
@@ -0,0 +1,151 @@ |
22 |
+#!/bin/sh |
23 |
+ |
24 |
+if [ ! -e /var/lib/layman/axs/hack-4slotabi-into-portagedb.sh ]; then |
25 |
+ if [ ! -e "$1"/hack-4slotabi-into-portagedb.sh ]; then |
26 |
+ echo "Error - could not find axs developer overlay in layman repos." |
27 |
+ echo "Please 'layman -a axs' or specify path to the overlay as a parameter." |
28 |
+ exit 1 |
29 |
+ else |
30 |
+ opath=$1 |
31 |
+ fi |
32 |
+else |
33 |
+ opath=/var/lib/layman/axs |
34 |
+fi |
35 |
+ |
36 |
+echo "checking to ensure a version of portage supporting 4-slot-abi is installed..." |
37 |
+emerge -u =sys-apps/portage-9999 || exit 1 |
38 |
+ |
39 |
+echo "" |
40 |
+echo "WARNING WARNING WARNING" |
41 |
+echo "This script is about to modify your portage database ( /var/db/pkg ) directly" |
42 |
+echo "There is a HIGH possiblity that anything going wrong here will completely" |
43 |
+echo "and unrecoverably BORK your portage." |
44 |
+echo "" |
45 |
+echo "pausing for 5 seconds, break out to abort..." |
46 |
+sleep 5 |
47 |
+echo "pausing for 5 more seconds, just in case..." |
48 |
+sleep 5 |
49 |
+echo "last chance, will start in 3 seconds." |
50 |
+sleep 3 |
51 |
+echo "Too late -- may the diety of your choosing have mercy on us all.." |
52 |
+echo "" |
53 |
+echo "" |
54 |
+ |
55 |
+echo "Upgrading currently-installed entries with EAPI=4 to EAPI=4-slot-abi if applicable" |
56 |
+didsomething=0 |
57 |
+processedatoms= |
58 |
+cd /var/db/pkg |
59 |
+for atom in `find -mindepth 2 -type d |sed -e 's#^\./##'`; do |
60 |
+ if [[ $(cat "$atom/EAPI") == "4" ]]; then |
61 |
+ ofile=${opath}/$(echo $atom |sed -e 's#/#/*/#').ebuild |
62 |
+ if grep '^EAPI.*4-slot-abi' ${ofile} &>/dev/null; then |
63 |
+ echo -n " updating $atom ..." |
64 |
+ |
65 |
+ # update the abi |
66 |
+ echo '4-slot-abi' >"${atom}/EAPI" |
67 |
+ |
68 |
+ # set the package as coming from this repos |
69 |
+ cat "${opath}/profiles/repo_name" >"${atom}/repository" |
70 |
+ |
71 |
+ # update the ebuild so it matches what's in the repos |
72 |
+ cp ${ofile} "${atom}/" |
73 |
+ |
74 |
+ # update the slot, if slot has changed |
75 |
+ if grep '^SLOT=' ${ofile} |grep '/' &>/dev/null; then |
76 |
+ grep '^SLOT=' ${ofile} \ |
77 |
+ |sed -e 's/SLOT=//' -e 's/"//g' >"${atom}/SLOT" |
78 |
+ fi |
79 |
+ |
80 |
+ # update DEPEND, RDEPEND |
81 |
+ for dependitem in DEPEND RDEPEND PDEPEND; do |
82 |
+ if [ -e ${atom}/${dependitem} ]; then |
83 |
+ mydep=$(portageq metadata / ebuild ${atom} ${dependitem}); |
84 |
+ # make a list of use flags not set for the package, so that DEPEND can be trimmed |
85 |
+ for ech in $mydep; do |
86 |
+ if echo $ech |grep '\?$' &>/dev/null; then |
87 |
+ echo $ech |sed -e 's/\?$//' >>/tmp/${dependitem}-fulluse |
88 |
+ fi |
89 |
+ done |
90 |
+ # make grep match lines for the flags in USE |
91 |
+ sed -e "s/ /\n/g" ${atom}/USE |sed -e 's/^/^/' >/tmp/${dependitem}-use |
92 |
+ # add inversions of use flags to remove disabled matches |
93 |
+ sed -e "s/ /\n/g" ${atom}/USE |sed -e 's/^/!/' >>/tmp/${dependitem}-fulluse |
94 |
+ # add inversions to the use mask so that we don't strip !use deps when that flag is off |
95 |
+ sed -e "s/ /\n/g" ${atom}/IUSE |sed -e 's/^[^a-z0-9]//' \ |
96 |
+ |grep -v -f /tmp/${dependitem}-use |sed -e 's/^/^!/' >>/tmp/${dependitem}-use |
97 |
+ |
98 |
+ # trim the unset USE flag deps from the new DEPEND list |
99 |
+ for ech in $(grep -v -f /tmp/${dependitem}-use /tmp/${dependitem}-fulluse); do |
100 |
+ mydep=$(echo " $mydep " |sed -e "s/ ${ech}? ([^()]*) / /" -e "s/ ${ech}? ([^()]*\(([^()]*)\)*[^()]*) / /" -e "s/ ${ech}? ([^()]*\(([^()]*\(([^()]*)\)*[^()]*)\)*[^()]*) / /") |
101 |
+ done |
102 |
+ |
103 |
+ # remove the use flag stuff from remaining mydeps as they are enabled |
104 |
+ mydep=$(echo $mydep |sed -e 's/[^\?\ ]*? (\([^?()]*\(([^?()]*)\)*[^?()]*\))/\1/g' -e 's/[^\?\ ]*? (\([^?()]*\(([^?()]*)\)*[^?()]*\))/\1/g' -e 's/[^\?\ ]*? (\([^?()]*\(([^?()]*)\)*[^?()]*\))/\1/g' -e 's/[^\?\ ]*? (\([^?()]*\(([^?()]*)\)*[^?()]*\))/\1/g' |xargs echo) |
105 |
+ |
106 |
+ # print old and new for debugging |
107 |
+ echo "" |
108 |
+ sed -e "s/ /\n/g" ${atom}/${dependitem} >/tmp/${dependitem}-old |
109 |
+ echo $mydep |sed -e "s/ /\n/g" |diff -U 0 /tmp/${dependitem}-old - \ |
110 |
+ |grep -v -e '^---' -e '^+++' -e '^@@' |sed -e "s/^/ ${dependitem}: /" |
111 |
+ |
112 |
+ echo $mydep >${atom}/${dependitem} |
113 |
+ rm -f /tmp/${dependitem}-fulluse /tmp/${dependitem}-use |
114 |
+ fi; done |
115 |
+ |
116 |
+ echo " done." |
117 |
+ didsomething=$(($didsomething + 1)) |
118 |
+ processedatoms="${processedatoms} ${atom}" |
119 |
+ touch "${atom}" |
120 |
+ fi |
121 |
+ fi |
122 |
+done |
123 |
+if (( $didsomething > 0 )); then |
124 |
+ echo "Substituting proper slot value for any dependencies with slot operators..." |
125 |
+ # substitute the proper slot for := and :* deps when they exist in *DEPEND |
126 |
+ for atom in $processedatoms ; do for dependitem in DEPEND RDEPEND PDEPEND; do |
127 |
+ if [ -e ${atom}/${dependitem} ]; then |
128 |
+ for dep in $(sed -e "s/ /\n/g" ${atom}/${dependitem}); do |
129 |
+ if echo $dep |grep ':[^ /=*]*[*=]' &>/dev/null; then |
130 |
+ # get the base slot desired so we can find a match |
131 |
+ pkg=$(echo $dep |sed -e 's/:.*$//') |
132 |
+ if echo $pkg |grep '^[<>=!]' &>/dev/null; then |
133 |
+ pkgfile=$(echo $pkg |sed -e 's/^[<>=!]*//' |xargs qatom |awk '{print $1 "/" $2 "-[0-9]"}') |
134 |
+ else |
135 |
+ pkgfile=$pkg |
136 |
+ fi |
137 |
+ pkguse=$(echo $dep |sed -e 's/^[^:]*:[^ /=*]*[=*]//') |
138 |
+ baseslot=$(echo $dep |sed -e 's/^[^:]*:\([^ /=*]*\)[=*].*$/\1/') |
139 |
+ slotop=$(echo $dep |sed -e 's/^[^:]*:[^ /=*]*\([=*]\).*$/\1/') |
140 |
+ : ${baseslot:=0} |
141 |
+ for matchdep in ${pkgfile}*/ ; do |
142 |
+ if [[ $(cat ${matchdep}/SLOT |sed -e 's#/.*$##') == $baseslot ]]; then |
143 |
+ mdepslot=$(cat ${matchdep}/SLOT) |
144 |
+ # echo "...${atom} : changing $dependitem $dep to $pkg:$mdepslot$slotop$pkguse " |
145 |
+ echo "${pkg}:${mdepslot}${slotop}${pkguse}" >>/tmp/new-${dependitem} |
146 |
+ fi |
147 |
+ done |
148 |
+ else |
149 |
+ echo "$dep" >>/tmp/new-${dependitem} |
150 |
+ fi |
151 |
+ done |
152 |
+ sed -e "s/ /\n/g" ${atom}/${dependitem} >/tmp/${dependitem}-old |
153 |
+ diff -U 0 /tmp/${dependitem}-old /tmp/new-${dependitem} \ |
154 |
+ |grep -v -e '^---' -e '^+++' -e '^@@' |sed -e "s#^# ${atom} ${dependitem}: #" |
155 |
+ |
156 |
+ cat /tmp/new-${dependitem} |xargs echo >${atom}/${dependitem} |
157 |
+ rm -f /tmp/new-${dependitem} /tmp/${dependitem}-old |
158 |
+ fi |
159 |
+ done; done |
160 |
+ echo "" |
161 |
+ echo "$didsomething packages processed." |
162 |
+else |
163 |
+ echo "Nothing to do" |
164 |
+fi |
165 |
+ |
166 |
+ |
167 |
+ |
168 |
+# |
169 |
+# Depend stuff needs to have actual slot value instead of just the := shortcut |
170 |
+# zmedico said this can help (in python): |
171 |
+# settings = portage.config(clone=portage.settings) ; settings.setcpv('dev-perl/URI-1.590.0', mydb=portage.db['/']['vartree'].dbapi) |
172 |
+# evaluate_slot_abi_equal_deps() function for that in pym/portage/dep/_slot_abi.py |
173 |
|
174 |
diff --git a/profiles/base/package.keywords b/profiles/base/package.keywords |
175 |
deleted file mode 100644 |
176 |
index 70e1b67..0000000 |
177 |
--- a/profiles/base/package.keywords |
178 |
+++ /dev/null |
179 |
@@ -1 +0,0 @@ |
180 |
-=sys-apps/portage-9999 amd64 x86 |
181 |
|
182 |
diff --git a/profiles/updates/1Q-2099 b/profiles/updates/1Q-2099 |
183 |
deleted file mode 100644 |
184 |
index 418412e..0000000 |
185 |
--- a/profiles/updates/1Q-2099 |
186 |
+++ /dev/null |
187 |
@@ -1,15 +0,0 @@ |
188 |
-dev-lang/perl-5.12.4 0 0/5.12 |
189 |
-dev-lang/perl-5.12.4-r1 0 0/5.12 |
190 |
-dev-lang/perl-5.12.4-r2 0 0/5.12 |
191 |
-dev-lang/perl-5.14.1 0 0/5.14 |
192 |
-dev-lang/perl-5.14.1-r1 0 0/5.14 |
193 |
-dev-lang/perl-5.14.2 0 0/5.14 |
194 |
-dev-lang/perl-5.16.0 0 0/5.16 |
195 |
-dev-lang/spidermonkey-1.8.5-r1 0 0/185 |
196 |
-dev-lang/spidermonkey-1.8.7 0 0/187 |
197 |
-dev-libs/libyaml-0.1.4 0 0/2.0 |
198 |
-x11-base/xorg-server-1.10.6-r1 0 0/1.10 |
199 |
-x11-base/xorg-server-1.11.4-r1 0 0/1.11 |
200 |
-x11-base/xorg-server-1.12.2 0 0/1.12 |
201 |
-x11-libs/xcb-util-0.3.8 0 0/0.0 |
202 |
-x11-libs/xcb-util-0.3.9 0 0/1.0 |