mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 22:51:37 +00:00
patman: Add a few more helpers to the tools library
Add functions to read and write a file, looking through a list of search paths to find it. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
2b19321ef9
commit
aeffc5e956
1 changed files with 75 additions and 1 deletions
|
@ -3,16 +3,26 @@
|
||||||
# Copyright (c) 2016 Google, Inc
|
# Copyright (c) 2016 Google, Inc
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import command
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
import tout
|
import tout
|
||||||
|
|
||||||
|
# Output directly (generally this is temporary)
|
||||||
outdir = None
|
outdir = None
|
||||||
indirs = None
|
|
||||||
|
# True to keep the output directory around after exiting
|
||||||
preserve_outdir = False
|
preserve_outdir = False
|
||||||
|
|
||||||
|
# Path to the Chrome OS chroot, if we know it
|
||||||
|
chroot_path = None
|
||||||
|
|
||||||
|
# Search paths to use for Filename(), used to find files
|
||||||
|
search_paths = []
|
||||||
|
|
||||||
|
|
||||||
def PrepareOutputDir(dirname, preserve=False):
|
def PrepareOutputDir(dirname, preserve=False):
|
||||||
"""Select an output directory, ensuring it exists.
|
"""Select an output directory, ensuring it exists.
|
||||||
|
|
||||||
|
@ -117,3 +127,67 @@ def Align(pos, align):
|
||||||
|
|
||||||
def NotPowerOfTwo(num):
|
def NotPowerOfTwo(num):
|
||||||
return num and (num & (num - 1))
|
return num and (num & (num - 1))
|
||||||
|
|
||||||
|
def Run(name, *args):
|
||||||
|
command.Run(name, *args, cwd=outdir)
|
||||||
|
|
||||||
|
def Filename(fname):
|
||||||
|
"""Resolve a file path to an absolute path.
|
||||||
|
|
||||||
|
If fname starts with ##/ and chroot is available, ##/ gets replaced with
|
||||||
|
the chroot path. If chroot is not available, this file name can not be
|
||||||
|
resolved, `None' is returned.
|
||||||
|
|
||||||
|
If fname is not prepended with the above prefix, and is not an existing
|
||||||
|
file, the actual file name is retrieved from the passed in string and the
|
||||||
|
search_paths directories (if any) are searched to for the file. If found -
|
||||||
|
the path to the found file is returned, `None' is returned otherwise.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
fname: a string, the path to resolve.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Absolute path to the file or None if not found.
|
||||||
|
"""
|
||||||
|
if fname.startswith('##/'):
|
||||||
|
if chroot_path:
|
||||||
|
fname = os.path.join(chroot_path, fname[3:])
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Search for a pathname that exists, and return it if found
|
||||||
|
if fname and not os.path.exists(fname):
|
||||||
|
for path in search_paths:
|
||||||
|
pathname = os.path.join(path, os.path.basename(fname))
|
||||||
|
if os.path.exists(pathname):
|
||||||
|
return pathname
|
||||||
|
|
||||||
|
# If not found, just return the standard, unchanged path
|
||||||
|
return fname
|
||||||
|
|
||||||
|
def ReadFile(fname):
|
||||||
|
"""Read and return the contents of a file.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
fname: path to filename to read, where ## signifiies the chroot.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
data read from file, as a string.
|
||||||
|
"""
|
||||||
|
with open(Filename(fname), 'rb') as fd:
|
||||||
|
data = fd.read()
|
||||||
|
#self._out.Info("Read file '%s' size %d (%#0x)" %
|
||||||
|
#(fname, len(data), len(data)))
|
||||||
|
return data
|
||||||
|
|
||||||
|
def WriteFile(fname, data):
|
||||||
|
"""Write data into a file.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
fname: path to filename to write
|
||||||
|
data: data to write to file, as a string
|
||||||
|
"""
|
||||||
|
#self._out.Info("Write file '%s' size %d (%#0x)" %
|
||||||
|
#(fname, len(data), len(data)))
|
||||||
|
with open(Filename(fname), 'wb') as fd:
|
||||||
|
fd.write(data)
|
||||||
|
|
Loading…
Add table
Reference in a new issue