Index: locale-gen
===================================================================
--- locale-gen	(revision 196367)
+++ locale-gen	(working copy)
@@ -35,6 +35,7 @@
 	localedef -i "$input" -c -f "$charset" -A /usr/share/locale/locale.alias "$locale"
 }
 
+maxjobs=$(grep -qc processor /proc/cpuinfo 2>/dev/null || echo 1)
 echo "Generating locales..."
 while read locale charset; do \
 	case $locale in
@@ -43,6 +44,12 @@
 			;;
 	esac
 	gen "$locale" "$charset" &
+
+	# keep no more than $maxjobs jobs in flight
+	while [ $(jobs | wc -l) -ge $maxjobs ]; do
+		sleep 0.25
+		jobs >/dev/null
+	done
 done < $LOCALEGEN
 wait