Hi!
I use osmfilter to prepare bounds:
$ ./osmfilter source.osm.o5m --keep-nodes= \
--keep-ways-relations="(place=city or place=town or place=village or place=hamlet) boundary=administrative =postal_code postal_code=" --out-o5m > RU-boundaries.osm.o5m
$ java -cp /usr/share/java/mkgmap.jar uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor RU-boundaries.osm.o5m bounds
And rules from mkgmap (part of rules):
# Russia = RUS
mkgmap:country=RUS & mkgmap:region!=* & mkgmap:admin_level4=* { set mkgmap:region='${mkgmap:admin_level4}' }
mkgmap:country=RUS & mkgmap:city!=* & (place=city | place=town | place=village | place=hamlet) { set mkgmap:city='${place}'}
It's not work for complete address info from place polygon.
The use of polygons place=* in Russia rather than boundary=administrative to use in addr:city autofill.
wbr,
Maks