diff --git a/Makefile b/Makefile
index 75aaae8ad6600c333e8b24492f3970eb1417138e_TWFrZWZpbGU=..54d7657d7d1e6a62315eea53f4498657e766bb60_TWFrZWZpbGU= 100644
--- a/Makefile
+++ b/Makefile
@@ -56,7 +56,7 @@
 	find contrib doc hgext i18n mercurial tests \
 		\( -name '*.py[cdo]' -o -name '*.so' \) -exec rm -f '{}' ';'
 	rm -f $(addprefix mercurial/,$(notdir $(wildcard mercurial/pure/[a-z]*.py)))
-	rm -f MANIFEST MANIFEST.in mercurial/__version__.py tests/*.err
+	rm -f MANIFEST MANIFEST.in mercurial/__version__.py hgext/__index__.py tests/*.err
 	rm -rf build mercurial/locale
 	$(MAKE) -C doc clean
 
diff --git a/mercurial/extensions.py b/mercurial/extensions.py
index 75aaae8ad6600c333e8b24492f3970eb1417138e_bWVyY3VyaWFsL2V4dGVuc2lvbnMucHk=..54d7657d7d1e6a62315eea53f4498657e766bb60_bWVyY3VyaWFsL2V4dGVuc2lvbnMucHk= 100644
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -281,7 +281,7 @@
         return dict((name, gettext(desc))
                     for name, desc in __index__.docs.iteritems()
                     if name not in _order)
-    except ImportError:
+    except (ImportError, AttributeError):
         pass
 
     paths = _disabledpaths()
@@ -304,7 +304,7 @@
             return
         else:
             return gettext(__index__.docs.get(name))
-    except ImportError:
+    except (ImportError, AttributeError):
         pass
 
     paths = _disabledpaths()
diff --git a/setup.py b/setup.py
index 75aaae8ad6600c333e8b24492f3970eb1417138e_c2V0dXAucHk=..54d7657d7d1e6a62315eea53f4498657e766bb60_c2V0dXAucHk= 100644
--- a/setup.py
+++ b/setup.py
@@ -331,7 +331,9 @@
 
     def run(self):
         if os.path.exists(self._indexfilename):
-            os.unlink(self._indexfilename)
+            f = open(self._indexfilename, 'w')
+            f.write('# empty\n')
+            f.close()
 
         # here no extension enabled, disabled() lists up everything
         code = ('import pprint; from mercurial import extensions; '