Start using prebuilt.conf instead of make.conf this is an initial step

to eventually moving entirely out of the overlay directory. The reason
to do this now is to avoid devs having to remerge there make.conf changes
while they are in flight.

Add private support to prebuilt.py so we will update private overlays if
we are internal and external if we are external.
Update prebuilt_unittest to ensure we are returning the proper path if
the private overlay exists. Also ensure we are returning the proper host
path regardless.

BUG=9919
TEST=unittest added for private case
This commit is contained in:
Scott Zawalski 2011-01-14 15:06:43 -08:00
parent d1f0db8c7d
commit 61a543d901
2 changed files with 41 additions and 13 deletions

View File

@ -78,6 +78,7 @@ class UnknownBoardFormat(Exception):
class GitPushFailed(Exception):
"""Raised when a git push failed after retry."""
pass
def UpdateLocalFile(filename, value, key='PORTAGE_BINHOST'):
@ -321,16 +322,22 @@ def GenerateUploadDict(base_local_path, base_remote_path, pkgs):
return upload_files
def DetermineMakeConfFile(target):
"""Determine the make.conf file that needs to be updated for prebuilts.
def DeterminePrebuiltConfFile(target):
"""Determine the prebuilt.conf file that needs to be updated for prebuilts.
Args:
target: String representation of the board. This includes host and board
targets
Returns
A string path to a make.conf file to be updated.
A string path to a prebuilt.conf file to be updated.
"""
overlay_base_dir = _BINHOST_BASE_DIR
# If this is a private checkout default to updating
# private overlays over public.
if os.path.exists(_PRIVATE_OVERLAY_DIR):
overlay_base_dir = _PRIVATE_OVERLAY_DIR
if _HOST_TARGET == target:
# We are host.
# Without more examples of hosts this is a kludge for now.
@ -340,10 +347,10 @@ def DetermineMakeConfFile(target):
elif re.match('.*?_.*', target):
# We are a board variant
overlay_str = 'overlay-variant-%s' % target.replace('_', '-')
make_path = os.path.join(_BINHOST_BASE_DIR, overlay_str, 'make.conf')
make_path = os.path.join(overlay_base_dir, overlay_str, 'prebuilt.conf')
elif re.match('.*?-\w+', target):
overlay_str = 'overlay-%s' % target
make_path = os.path.join(_BINHOST_BASE_DIR, overlay_str, 'make.conf')
make_path = os.path.join(overlay_base_dir, overlay_str, 'prebuilt.conf')
else:
raise UnknownBoardFormat('Unknown format: %s' % target)
@ -410,7 +417,7 @@ def UploadPrebuilt(build_path, upload_location, version, binhost_base_url,
package_path = os.path.join(board_path, 'packages')
package_string = board
url_suffix = _REL_BOARD_PATH % {'board': board, 'version': version}
git_file = os.path.join(build_path, DetermineMakeConfFile(board))
git_file = os.path.join(build_path, DeterminePrebuiltConfFile(board))
binhost_conf = os.path.join(build_path, _BINHOST_CONF_DIR, 'target',
'%s.conf' % board)
remote_location = '%s/%s' % (upload_location.rstrip('/'), url_suffix)

View File

@ -180,21 +180,42 @@ class TestPrebuilt(unittest.TestCase):
files = {'test': '/uasd'}
self.assertEqual(prebuilt.RemoteUpload(files), set([('test', '/uasd')]))
def testDetermineMakeConf(self):
def testDeterminePrebuiltConf(self):
"""Test the different known variants of boards for proper path discovery."""
targets = {'amd64': os.path.join(prebuilt._PREBUILT_MAKE_CONF['amd64']),
'x86-generic': os.path.join(prebuilt._BINHOST_BASE_DIR,
'overlay-x86-generic', 'make.conf'),
'overlay-x86-generic', 'prebuilt.conf'),
'arm-tegra2_vogue': os.path.join(
prebuilt._BINHOST_BASE_DIR,
'overlay-variant-arm-tegra2-vogue', 'make.conf'),}
'overlay-variant-arm-tegra2-vogue', 'prebuilt.conf'),}
for target in targets:
self.assertEqual(prebuilt.DetermineMakeConfFile(target), targets[target])
self.assertEqual(prebuilt.DeterminePrebuiltConfFile(target),
targets[target])
def testDetermineMakeConfGarbage(self):
def testPrivatePrebuiltConf(self):
"""Test that we get a different path for private prebuilts"""
targets = {'amd64': os.path.join(prebuilt._PREBUILT_MAKE_CONF['amd64']),
'x86-generic': os.path.join(
prebuilt._PRIVATE_OVERLAY_DIR, 'overlay-x86-generic',
'prebuilt.conf'),
'arm-tegra2_vogue': os.path.join(
prebuilt._PRIVATE_OVERLAY_DIR,
'overlay-variant-arm-tegra2-vogue', 'prebuilt.conf'),}
self.mox.StubOutWithMock(prebuilt.os.path, 'exists')
# Add mocks for every target we check
for mock_count in range(len(targets)):
prebuilt.os.path.exists(prebuilt._PRIVATE_OVERLAY_DIR).AndReturn(True)
self.mox.ReplayAll()
for target in targets:
self.assertEqual(prebuilt.DeterminePrebuiltConfFile(target),
targets[target])
def testDeterminePrebuiltConfGarbage(self):
"""Ensure an exception is raised on bad input."""
self.assertRaises(prebuilt.UnknownBoardFormat, prebuilt.DetermineMakeConfFile,
'asdfasdf')
self.assertRaises(prebuilt.UnknownBoardFormat,
prebuilt.DeterminePrebuiltConfFile, 'asdfasdf')
class TestPackagesFileFiltering(unittest.TestCase):