1 |
vapier 11/11/20 22:01:00 |
2 |
|
3 |
Modified: locale-gen |
4 |
Log: |
5 |
simplify job handling a bit by always using it -- 1 job is simply a special case of N jobs |
6 |
|
7 |
Revision Changes Path |
8 |
1.31 src/patchsets/glibc/extra/locale/locale-gen |
9 |
|
10 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/extra/locale/locale-gen?rev=1.31&view=markup |
11 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/extra/locale/locale-gen?rev=1.31&content-type=text/plain |
12 |
diff : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/extra/locale/locale-gen?r1=1.30&r2=1.31 |
13 |
|
14 |
Index: locale-gen |
15 |
=================================================================== |
16 |
RCS file: /var/cvsroot/gentoo/src/patchsets/glibc/extra/locale/locale-gen,v |
17 |
retrieving revision 1.30 |
18 |
retrieving revision 1.31 |
19 |
diff -u -r1.30 -r1.31 |
20 |
--- locale-gen 15 Sep 2011 17:46:23 -0000 1.30 |
21 |
+++ locale-gen 20 Nov 2011 22:01:00 -0000 1.31 |
22 |
@@ -45,7 +45,7 @@ |
23 |
} |
24 |
show_version() { |
25 |
local b="(" a=")" |
26 |
- local cvsver="$Revision: 1.30 $b $Date: 2011/09/15 17:46:23 $a" |
27 |
+ local cvsver="$Revision: 1.31 $b $Date: 2011/11/20 22:01:00 $a" |
28 |
echo "locale-gen-${cvsver//: }" |
29 |
exit 0 |
30 |
} |
31 |
@@ -75,9 +75,9 @@ |
32 |
-A|--all) ALL=$1;; |
33 |
-u|--update) UPDATE=$1;; |
34 |
-G|--generate) shift; GENERATE=$1;; |
35 |
- -j|--jobs) shift; JOBS_MAX=$(($1));; |
36 |
- -j*) JOBS_MAX=$((${1#-j}));; |
37 |
- -q|--quiet) ((++QUIET));; |
38 |
+ -j|--jobs) shift; JOBS_MAX=$(( $1 ));; |
39 |
+ -j*) : $(( JOBS_MAX = ${1#-j} ));; |
40 |
+ -q|--quiet) : $(( ++QUIET ));; |
41 |
-x|--debug) SET_X="true";; |
42 |
-V|--version) show_version;; |
43 |
-h|--help) show_usage;; |
44 |
@@ -250,83 +250,62 @@ |
45 |
|
46 |
eval declare -a locales_disp=(${locales_disp}) |
47 |
eval declare -a locales_to_generate=(${locales_to_generate}) |
48 |
-total=$((${#locales_to_generate[*]}/2)) |
49 |
+total=$(( ${#locales_to_generate[*]} / 2 )) |
50 |
|
51 |
[[ ${QUIET} -eq 0 ]] && [[ -z ${JUST_LIST} ]] && \ |
52 |
einfo "Generating ${total} locales (this might take a while) with ${JOBS_MAX} jobs" |
53 |
|
54 |
-ret=0 |
55 |
-cnt=0 |
56 |
- |
57 |
if [[ -n ${UPDATE} ]] ; then |
58 |
# normalize newlines into spaces |
59 |
existing_locales=" $(echo $(locale -a 2>/dev/null)) " |
60 |
fi |
61 |
|
62 |
generate_locale() { |
63 |
- local ret=0 |
64 |
local output="" |
65 |
|
66 |
if [[ -z ${ASK} ]] && [[ ${QUIET} -eq 0 ]] ; then |
67 |
output=" (${cnt_fmt}/${total}) Generating ${disp}" |
68 |
fi |
69 |
|
70 |
- if [[ ${JOBS_MAX} > 1 ]] ; then |
71 |
- if [[ ${JOB_COUNT} == ${JOBS_MAX} ]] ; then |
72 |
- wait ${JOB_PIDS[${JOB_IDX_S}]} |
73 |
- JOB_RETS[${JOB_IDX_S}]=$? |
74 |
- ((++JOB_IDX_S)) |
75 |
- ((--JOB_COUNT)) |
76 |
- fi |
77 |
- ( |
78 |
- # Accumulate all the output in one go so the parallel |
79 |
- # jobs don't tromp on each other |
80 |
- x=$( |
81 |
- [[ -n ${output} ]] && ebegin "${output}" |
82 |
- "${DESTDIR}"usr/bin/localedef ${LOCALEDEF_OPTS} \ |
83 |
- -i "${input}" \ |
84 |
- -f "${charmap}" \ |
85 |
- -A "${ALIAS}" \ |
86 |
- --prefix "${DESTDIR}" \ |
87 |
- "${locale}" 2>&1 |
88 |
- ret=$? |
89 |
- [[ -n ${output} ]] && eend ${ret} |
90 |
- exit ${ret} |
91 |
- ) |
92 |
+ if [[ $(( JOB_IDX_E - JOB_IDX_S )) == ${JOBS_MAX} ]] ; then |
93 |
+ wait ${JOB_PIDS[$(( JOB_IDX_S++ ))]} |
94 |
+ JOB_RETS+=( $? ) |
95 |
+ fi |
96 |
+ ( |
97 |
+ # Accumulate all the output in one go so the parallel |
98 |
+ # jobs don't tromp on each other |
99 |
+ x=$( |
100 |
+ [[ -n ${output} ]] && ebegin "${output}" |
101 |
+ "${DESTDIR}"usr/bin/localedef ${LOCALEDEF_OPTS} \ |
102 |
+ -i "${input}" \ |
103 |
+ -f "${charmap}" \ |
104 |
+ -A "${ALIAS}" \ |
105 |
+ --prefix "${DESTDIR}" \ |
106 |
+ "${locale}" 2>&1 |
107 |
ret=$? |
108 |
- echo "${x}" |
109 |
+ [[ -n ${output} ]] && eend ${ret} |
110 |
exit ${ret} |
111 |
- ) & |
112 |
- JOB_PIDS[${JOB_IDX_E}]=$! |
113 |
- ((++JOB_IDX_E)) |
114 |
- ((++JOB_COUNT)) |
115 |
- else |
116 |
- [[ -n ${output} ]] && ebegin "${output}" |
117 |
- "${DESTDIR}"usr/bin/localedef ${LOCALEDEF_OPTS} \ |
118 |
- -i "${input}" \ |
119 |
- -f "${charmap}" \ |
120 |
- -A "${ALIAS}" \ |
121 |
- --prefix "${DESTDIR}" \ |
122 |
- "${locale}" |
123 |
+ ) |
124 |
ret=$? |
125 |
- [[ -n ${output} ]] && eend ${ret} |
126 |
- fi |
127 |
+ echo "${x}" |
128 |
+ exit ${ret} |
129 |
+ ) & |
130 |
+ JOB_PIDS+=( $! ) |
131 |
+ : $(( ++JOB_IDX_E )) |
132 |
|
133 |
if [[ ${ret} != 0 && ${locale} == */* ]] ; then |
134 |
ewarn "Perhaps you meant to use a space instead of a / in your config file ?" |
135 |
fi |
136 |
- |
137 |
- return ${ret} |
138 |
} |
139 |
|
140 |
JOB_PIDS=() |
141 |
JOB_RETS=() |
142 |
JOB_IDX_S=0 |
143 |
JOB_IDX_E=0 |
144 |
-JOB_COUNT=0 |
145 |
+cnt=0 |
146 |
lidx=0 |
147 |
while [[ -n ${locales_to_generate[${lidx}]} ]] ; do |
148 |
- ((++cnt)) |
149 |
+ : $(( ++cnt )) |
150 |
locale=${locales_to_generate[$((lidx++))]} |
151 |
charmap=${locales_to_generate[$((lidx++))]} |
152 |
|
153 |
@@ -341,7 +320,7 @@ |
154 |
continue |
155 |
fi |
156 |
|
157 |
- disp=${locales_disp[$((cnt-1))]} |
158 |
+ disp=${locales_disp[$(( cnt - 1 ))]} |
159 |
|
160 |
if [[ -n ${UPDATE} ]] ; then |
161 |
normalized_locale=$(normalize ${locale}) |
162 |
@@ -371,24 +350,16 @@ |
163 |
[[ ${user_answer} == [nN]* ]] && continue |
164 |
fi |
165 |
generate_locale |
166 |
- ((ret+=$?)) |
167 |
else |
168 |
echo "${disp}" |
169 |
fi |
170 |
done |
171 |
|
172 |
-if [[ ${JOBS_MAX} -gt 1 ]] ; then |
173 |
- i=0 |
174 |
- while [[ ${i} -lt ${JOB_IDX_S} ]] ; do |
175 |
- ((ret+=${JOB_RETS[${i}]})) |
176 |
- ((++i)) |
177 |
- done |
178 |
- while [[ ${JOB_IDX_S} -lt ${JOB_IDX_E} ]] ; do |
179 |
- wait ${JOB_PIDS[${JOB_IDX_S}]} |
180 |
- ((ret+=$?)) |
181 |
- ((++JOB_IDX_S)) |
182 |
- done |
183 |
-fi |
184 |
+for (( i = JOB_IDX_S; i < JOB_IDX_E; ++i )) ; do |
185 |
+ wait ${JOB_PIDS[$(( i++ ))]} |
186 |
+ JOB_RETS+=( $? ) |
187 |
+done |
188 |
+ret=$(( 0 ${JOB_RETS[@]/#/+} )) |
189 |
|
190 |
[[ ${QUIET} -eq 0 ]] && [[ -z ${JUST_LIST} ]] && \ |
191 |
einfo "Generation complete" |