localrepo: forcibly copy list of filecache keys
On Python 3, keys() is more like iterkeys(), so we got in trouble for
mutating the dict while we're iterating here. Since the list of caches
should be relatively small, work around this difference by just
forcing a copy of the key list.
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include guids.wxi ?>
<?include defines.wxi ?>
<Fragment>
<ComponentGroup Id="templatesFolder">
<ComponentRef Id="templates.root" />
<ComponentRef Id="templates.atom" />
<ComponentRef Id="templates.coal" />
<ComponentRef Id="templates.gitweb" />
<ComponentRef Id="templates.json" />
<ComponentRef Id="templates.monoblue" />
<ComponentRef Id="templates.paper" />
<ComponentRef Id="templates.raw" />
<ComponentRef Id="templates.rss" />
<ComponentRef Id="templates.spartan" />
<ComponentRef Id="templates.static" />
</ComponentGroup>
</Fragment>
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Directory Id="templatesdir" Name="templates" FileSource="$(var.SourceDir)">
<Component Id="templates.root" Guid="$(var.templates.root.guid)" Win64='$(var.IsX64)'>
<File Name="map-cmdline.changelog" KeyPath="yes" />
<File Name="map-cmdline.compact" />
<File Name="map-cmdline.default" />
<File Name="map-cmdline.bisect" />
<File Name="map-cmdline.xml" />
<File Name="map-cmdline.status" />
<File Name="map-cmdline.phases" />
</Component>
<Directory Id="templates.jsondir" Name="json">
<Component Id="templates.json" Guid="$(var.templates.json.guid)" Win64='$(var.IsX64)'>
<File Id="json.changelist.tmpl" Name="changelist.tmpl" KeyPath="yes" />
<File Id="json.map" Name="map" />
</Component>
</Directory>
<Directory Id="templates.atomdir" Name="atom">
<Component Id="templates.atom" Guid="$(var.templates.atom.guid)" Win64='$(var.IsX64)'>
<File Id="atom.changelog.tmpl" Name="changelog.tmpl" KeyPath="yes" />
<File Id="atom.changelogentry.tmpl" Name="changelogentry.tmpl" />
<File Id="atom.error.tmpl" Name="error.tmpl" />
<File Id="atom.filelog.tmpl" Name="filelog.tmpl" />
<File Id="atom.header.tmpl" Name="header.tmpl" />
<File Id="atom.map" Name="map" />
<File Id="atom.tagentry.tmpl" Name="tagentry.tmpl" />
<File Id="atom.tags.tmpl" Name="tags.tmpl" />
<File Id="atom.branchentry.tmpl" Name="branchentry.tmpl" />
<File Id="atom.branches.tmpl" Name="branches.tmpl" />
<File Id="atom.bookmarks.tmpl" Name="bookmarks.tmpl" />
<File Id="atom.bookmarkentry.tmpl" Name="bookmarkentry.tmpl" />
</Component>
</Directory>
<Directory Id="templates.coaldir" Name="coal">
<Component Id="templates.coal" Guid="$(var.templates.coal.guid)" Win64='$(var.IsX64)'>
<File Id="coal.header.tmpl" Name="header.tmpl" KeyPath="yes" />
<File Id="coal.map" Name="map" />
</Component>
</Directory>
<Directory Id="templates.gitwebdir" Name="gitweb">
<Component Id="templates.gitweb" Guid="$(var.templates.gitweb.guid)" Win64='$(var.IsX64)'>
<File Id="gitweb.branches.tmpl" Name="branches.tmpl" KeyPath="yes" />
<File Id="gitweb.bookmarks.tmpl" Name="bookmarks.tmpl" />
<File Id="gitweb.changelog.tmpl" Name="changelog.tmpl" />
<File Id="gitweb.changelogentry.tmpl" Name="changelogentry.tmpl" />
<File Id="gitweb.changeset.tmpl" Name="changeset.tmpl" />
<File Id="gitweb.error.tmpl" Name="error.tmpl" />
<File Id="gitweb.fileannotate.tmpl" Name="fileannotate.tmpl" />
<File Id="gitweb.filecomparison.tmpl" Name="filecomparison.tmpl" />
<File Id="gitweb.filediff.tmpl" Name="filediff.tmpl" />
<File Id="gitweb.filelog.tmpl" Name="filelog.tmpl" />
<File Id="gitweb.filerevision.tmpl" Name="filerevision.tmpl" />
<File Id="gitweb.footer.tmpl" Name="footer.tmpl" />
<File Id="gitweb.graph.tmpl" Name="graph.tmpl" />
<File Id="gitweb.header.tmpl" Name="header.tmpl" />
<File Id="gitweb.index.tmpl" Name="index.tmpl" />
<File Id="gitweb.manifest.tmpl" Name="manifest.tmpl" />
<File Id="gitweb.map" Name="map" />
<File Id="gitweb.notfound.tmpl" Name="notfound.tmpl" />
<File Id="gitweb.search.tmpl" Name="search.tmpl" />
<File Id="gitweb.shortlog.tmpl" Name="shortlog.tmpl" />
<File Id="gitweb.summary.tmpl" Name="summary.tmpl" />
<File Id="gitweb.tags.tmpl" Name="tags.tmpl" />
<File Id="gitweb.help.tmpl" Name="help.tmpl" />
<File Id="gitweb.helptopics.tmpl" Name="helptopics.tmpl" />
</Component>
</Directory>
<Directory Id="templates.monobluedir" Name="monoblue">
<Component Id="templates.monoblue" Guid="$(var.templates.monoblue.guid)" Win64='$(var.IsX64)'>
<File Id="monoblue.branches.tmpl" Name="branches.tmpl" KeyPath="yes" />
<File Id="monoblue.bookmarks.tmpl" Name="bookmarks.tmpl" />
<File Id="monoblue.changelog.tmpl" Name="changelog.tmpl" />
<File Id="monoblue.changelogentry.tmpl" Name="changelogentry.tmpl" />
<File Id="monoblue.changeset.tmpl" Name="changeset.tmpl" />
<File Id="monoblue.error.tmpl" Name="error.tmpl" />
<File Id="monoblue.fileannotate.tmpl" Name="fileannotate.tmpl" />
<File Id="monoblue.filecomparison.tmpl" Name="filecomparison.tmpl" />
<File Id="monoblue.filediff.tmpl" Name="filediff.tmpl" />
<File Id="monoblue.filelog.tmpl" Name="filelog.tmpl" />
<File Id="monoblue.filerevision.tmpl" Name="filerevision.tmpl" />
<File Id="monoblue.footer.tmpl" Name="footer.tmpl" />
<File Id="monoblue.graph.tmpl" Name="graph.tmpl" />
<File Id="monoblue.header.tmpl" Name="header.tmpl" />
<File Id="monoblue.index.tmpl" Name="index.tmpl" />
<File Id="monoblue.manifest.tmpl" Name="manifest.tmpl" />
<File Id="monoblue.map" Name="map" />
<File Id="monoblue.notfound.tmpl" Name="notfound.tmpl" />
<File Id="monoblue.search.tmpl" Name="search.tmpl" />
<File Id="monoblue.shortlog.tmpl" Name="shortlog.tmpl" />
<File Id="monoblue.summary.tmpl" Name="summary.tmpl" />
<File Id="monoblue.tags.tmpl" Name="tags.tmpl" />
<File Id="monoblue.help.tmpl" Name="help.tmpl" />
<File Id="monoblue.helptopics.tmpl" Name="helptopics.tmpl" />
</Component>
</Directory>
<Directory Id="templates.paperdir" Name="paper">
<Component Id="templates.paper" Guid="$(var.templates.paper.guid)" Win64='$(var.IsX64)'>
<File Id="paper.branches.tmpl" Name="branches.tmpl" KeyPath="yes" />
<File Id="paper.bookmarks.tmpl" Name="bookmarks.tmpl" />
<File Id="paper.changeset.tmpl" Name="changeset.tmpl" />
<File Id="paper.diffstat.tmpl" Name="diffstat.tmpl" />
<File Id="paper.error.tmpl" Name="error.tmpl" />
<File Id="paper.fileannotate.tmpl" Name="fileannotate.tmpl" />
<File Id="paper.filecomparison.tmpl" Name="filecomparison.tmpl" />
<File Id="paper.filediff.tmpl" Name="filediff.tmpl" />
<File Id="paper.filelog.tmpl" Name="filelog.tmpl" />
<File Id="paper.filelogentry.tmpl" Name="filelogentry.tmpl" />
<File Id="paper.filerevision.tmpl" Name="filerevision.tmpl" />
<File Id="paper.footer.tmpl" Name="footer.tmpl" />
<File Id="paper.graph.tmpl" Name="graph.tmpl" />
<File Id="paper.header.tmpl" Name="header.tmpl" />
<File Id="paper.index.tmpl" Name="index.tmpl" />
<File Id="paper.manifest.tmpl" Name="manifest.tmpl" />
<File Id="paper.map" Name="map" />
<File Id="paper.notfound.tmpl" Name="notfound.tmpl" />
<File Id="paper.search.tmpl" Name="search.tmpl" />
<File Id="paper.shortlog.tmpl" Name="shortlog.tmpl" />
<File Id="paper.shortlogentry.tmpl" Name="shortlogentry.tmpl" />
<File Id="paper.tags.tmpl" Name="tags.tmpl" />
<File Id="paper.help.tmpl" Name="help.tmpl" />
<File Id="paper.helptopics.tmpl" Name="helptopics.tmpl" />
</Component>
</Directory>
<Directory Id="templates.rawdir" Name="raw">
<Component Id="templates.raw" Guid="$(var.templates.raw.guid)" Win64='$(var.IsX64)'>
<File Id="raw.changeset.tmpl" Name="changeset.tmpl" KeyPath="yes" />
<File Id="raw.error.tmpl" Name="error.tmpl" />
<File Id="raw.fileannotate.tmpl" Name="fileannotate.tmpl" />
<File Id="raw.filediff.tmpl" Name="filediff.tmpl" />
<File Id="raw.graph.tmpl" Name="graph.tmpl" />
<File Id="raw.graphedge.tmpl" Name="graphedge.tmpl" />
<File Id="raw.graphnode.tmpl" Name="graphnode.tmpl" />
<File Id="raw.index.tmpl" Name="index.tmpl" />
<File Id="raw.manifest.tmpl" Name="manifest.tmpl" />
<File Id="raw.map" Name="map" />
<File Id="raw.notfound.tmpl" Name="notfound.tmpl" />
<File Id="raw.search.tmpl" Name="search.tmpl" />
<File Id="raw.logentry.tmpl" Name="logentry.tmpl" />
<File Id="raw.changelog.tmpl" Name="changelog.tmpl" />
</Component>
</Directory>
<Directory Id="templates.rssdir" Name="rss">
<Component Id="templates.rss" Guid="$(var.templates.rss.guid)" Win64='$(var.IsX64)'>
<File Id="rss.changelog.tmpl" Name="changelog.tmpl" KeyPath="yes" />
<File Id="rss.changelogentry.tmpl" Name="changelogentry.tmpl" />
<File Id="rss.error.tmpl" Name="error.tmpl" />
<File Id="rss.filelog.tmpl" Name="filelog.tmpl" />
<File Id="rss.filelogentry.tmpl" Name="filelogentry.tmpl" />
<File Id="rss.header.tmpl" Name="header.tmpl" />
<File Id="rss.map" Name="map" />
<File Id="rss.tagentry.tmpl" Name="tagentry.tmpl" />
<File Id="rss.tags.tmpl" Name="tags.tmpl" />
<File Id="rss.bookmarks.tmpl" Name="bookmarks.tmpl" />
<File Id="rss.bookmarkentry.tmpl" Name="bookmarkentry.tmpl" />
<File Id="rss.branchentry.tmpl" Name="branchentry.tmpl" />
<File Id="rss.branches.tmpl" Name="branches.tmpl" />
</Component>
</Directory>
<Directory Id="templates.spartandir" Name="spartan">
<Component Id="templates.spartan" Guid="$(var.templates.spartan.guid)" Win64='$(var.IsX64)'>
<File Id="spartan.branches.tmpl" Name="branches.tmpl" KeyPath="yes" />
<File Id="spartan.changelog.tmpl" Name="changelog.tmpl" />
<File Id="spartan.changelogentry.tmpl" Name="changelogentry.tmpl" />
<File Id="spartan.changeset.tmpl" Name="changeset.tmpl" />
<File Id="spartan.error.tmpl" Name="error.tmpl" />
<File Id="spartan.fileannotate.tmpl" Name="fileannotate.tmpl" />
<File Id="spartan.filediff.tmpl" Name="filediff.tmpl" />
<File Id="spartan.filelog.tmpl" Name="filelog.tmpl" />
<File Id="spartan.filelogentry.tmpl" Name="filelogentry.tmpl" />
<File Id="spartan.filerevision.tmpl" Name="filerevision.tmpl" />
<File Id="spartan.footer.tmpl" Name="footer.tmpl" />
<File Id="spartan.graph.tmpl" Name="graph.tmpl" />
<File Id="spartan.header.tmpl" Name="header.tmpl" />
<File Id="spartan.index.tmpl" Name="index.tmpl" />
<File Id="spartan.manifest.tmpl" Name="manifest.tmpl" />
<File Id="spartan.map" Name="map" />
<File Id="spartan.notfound.tmpl" Name="notfound.tmpl" />
<File Id="spartan.search.tmpl" Name="search.tmpl" />
<File Id="spartan.shortlog.tmpl" Name="shortlog.tmpl" />
<File Id="spartan.shortlogentry.tmpl" Name="shortlogentry.tmpl" />
<File Id="spartan.tags.tmpl" Name="tags.tmpl" />
</Component>
</Directory>
<Directory Id="templates.staticdir" Name="static">
<Component Id="templates.static" Guid="$(var.templates.static.guid)" Win64='$(var.IsX64)'>
<File Id="static.background.png" Name="background.png" KeyPath="yes" />
<File Id="static.coal.file.png" Name="coal-file.png" />
<File Id="static.coal.folder.png" Name="coal-folder.png" />
<File Id="static.excanvas.js" Name="excanvas.js" />
<File Id="static.mercurial.js" Name="mercurial.js" />
<File Id="static.hgicon.png" Name="hgicon.png" />
<File Id="static.hglogo.png" Name="hglogo.png" />
<File Id="static.style.coal.css" Name="style-extra-coal.css" />
<File Id="static.style.gitweb.css" Name="style-gitweb.css" />
<File Id="static.style.monoblue.css" Name="style-monoblue.css" />
<File Id="static.style.paper.css" Name="style-paper.css" />
<File Id="static.style.css" Name="style.css" />
<File Id="static.feed.icon" Name="feed-icon-14x14.png" />
</Component>
</Directory>
</Directory>
</DirectoryRef>
</Fragment>
</Wix>