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