Port os.rename calls to work on Windows
os.rename fails on Windows if the destination exists, so replace
os.rename to platform_utils.rename which handles the platform
differences.
Change-Id: I15a86f10f65eedee5b003b80f88a0c28a3e1aa48
diff --git a/platform_utils.py b/platform_utils.py
index 4417c5a..e0fa9dc 100644
--- a/platform_utils.py
+++ b/platform_utils.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import errno
import os
import platform
import select
@@ -225,3 +226,19 @@
# Allow deleting read-only files
os.chmod(path, stat.S_IWRITE)
function(path)
+
+
+def rename(src, dst):
+ if isWindows():
+ # On Windows, rename fails if destination exists, see
+ # https://docs.python.org/2/library/os.html#os.rename
+ try:
+ os.rename(src, dst)
+ except OSError as e:
+ if e.errno == errno.EEXIST:
+ os.remove(dst)
+ os.rename(src, dst)
+ else:
+ raise
+ else:
+ os.rename(src, dst)