blob: 70fe4fb4e8aa0af2633323d5024793bea27e63e4 [file] [log] [blame]
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import errno
import os
import uuid
"""Creates a directory and its parents (i.e. `mkdir -p`).
If the directory already exists, does nothing."""
def mkdir_p(path):
try:
os.makedirs(path)
except OSError as exc:
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else:
raise
"""Creates or ovewrites a symlink from `link` to `target`."""
def symlink(target, link):
mkdir_p(os.path.dirname(link))
tmp_link = link + '.tmp.' + uuid.uuid4().hex
try:
os.remove(tmp_link)
except OSError:
pass
os.symlink(target, tmp_link)
try:
os.rename(tmp_link, link)
except FileExistsError:
try:
os.remove(tmp_link)
except OSError:
pass