Merge git://git.denx.de/u-boot-dm

This commit is contained in:
Tom Rini 2018-05-16 17:32:59 -04:00
commit 00ef2cd6c7
4 changed files with 44 additions and 3 deletions

View File

@ -198,6 +198,12 @@ static int pinctrl_select_state_simple(struct udevice *dev)
int pinctrl_select_state(struct udevice *dev, const char *statename)
{
/*
* Some device which is logical like mmc.blk, do not have
* a valid ofnode.
*/
if (!ofnode_valid(dev->node))
return 0;
/*
* Try full-implemented pinctrl first.
* If it fails or is not implemented, try simple one.

View File

@ -6,6 +6,7 @@ import errno
import glob
import os
import shutil
import sys
import threading
import command
@ -26,6 +27,9 @@ def Mkdir(dirname, parents = False):
os.mkdir(dirname)
except OSError as err:
if err.errno == errno.EEXIST:
if os.path.realpath('.') == os.path.realpath(dirname):
print "Cannot create the current working directory '%s'!" % dirname
sys.exit(1)
pass
else:
raise

View File

@ -80,6 +80,28 @@ def ShowActions(series, why_selected, boards_selected, builder, options):
print ('Total boards to build for each commit: %d\n' %
len(why_selected['all']))
def CheckOutputDir(output_dir):
"""Make sure that the output directory is not within the current directory
If we try to use an output directory which is within the current directory
(which is assumed to hold the U-Boot source) we may end up deleting the
U-Boot source code. Detect this and print an error in this case.
Args:
output_dir: Output directory path to check
"""
path = os.path.realpath(output_dir)
cwd_path = os.path.realpath('.')
while True:
if os.path.realpath(path) == cwd_path:
Print("Cannot use output directory '%s' since it is within the current directtory '%s'" %
(path, cwd_path))
sys.exit(1)
parent = os.path.dirname(path)
if parent == path:
break
path = parent
def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
clean_dir=False):
"""The main control code for buildman
@ -251,9 +273,9 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
# output directory itself rather than any subdirectory.
if not options.no_subdirs:
output_dir = os.path.join(options.output_dir, dirname)
if (clean_dir and output_dir != options.output_dir and
os.path.exists(output_dir)):
shutil.rmtree(output_dir)
if clean_dir and os.path.exists(output_dir):
shutil.rmtree(output_dir)
CheckOutputDir(output_dir)
builder = Builder(toolchains, output_dir, options.git_dir,
options.threads, options.jobs, gnu_make=gnu_make, checkout=True,
show_unknown=options.show_unknown, step=options.step,

View File

@ -519,3 +519,12 @@ class TestFunctional(unittest.TestCase):
self._RunControl('-b', self._test_branch, clean_dir=False)
self.assertEqual(self._builder.count, self._total_builds)
self.assertEqual(self._builder.fail, 0)
def testBadOutputDir(self):
"""Test building with an output dir the same as out current dir"""
self._test_branch = '/__dev/__testbranch'
with self.assertRaises(SystemExit):
self._RunControl('-b', self._test_branch, '-o', os.getcwd())
with self.assertRaises(SystemExit):
self._RunControl('-b', self._test_branch, '-o',
os.path.join(os.getcwd(), 'test'))