#4601: 'make install' did not set the permissions on library directories,
only root could start IDLE for example.

Beware that os.path.walk does not translate as is to os.walk!
the former uses a callback to call on each dir, the latter is a generator...
diff --git a/setup.py b/setup.py
index 2738eec..c42416e 100644
--- a/setup.py
+++ b/setup.py
@@ -1605,12 +1605,11 @@
 
     def set_dir_modes(self, dirname, mode):
         if not self.is_chmod_supported(): return
-        os.walk(dirname, self.set_dir_modes_visitor, mode)
-
-    def set_dir_modes_visitor(self, mode, dirname, names):
-        if os.path.islink(dirname): return
-        log.info("changing mode of %s to %o", dirname, mode)
-        if not self.dry_run: os.chmod(dirname, mode)
+        for dirpath, dirnames, fnames in os.walk(dirname):
+            if os.path.islink(dirpath):
+                continue
+            log.info("changing mode of %s to %o", dirpath, mode)
+            if not self.dry_run: os.chmod(dirpath, mode)
 
     def is_chmod_supported(self):
         return hasattr(os, 'chmod')