本文整理汇总了Python中snapcraft.common.get_stagedir函数的典型用法代码示例。如果您正苦于以下问题:Python get_stagedir函数的具体用法?Python get_stagedir怎么用?Python get_stagedir使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_stagedir函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_partial_clean
def test_partial_clean(self):
parts = self.make_snapcraft_yaml(n=3)
main(["clean", "clean0", "clean2"])
for i in [0, 2]:
self.assertFalse(
os.path.exists(parts[i]["part_dir"]), "Expected for {!r} to be wiped".format(parts[i]["part_dir"])
)
self.assertTrue(os.path.exists(parts[1]["part_dir"]), "Expected a part directory for the clean1 part")
self.assertTrue(os.path.exists(common.get_partsdir()))
self.assertTrue(os.path.exists(common.get_stagedir()))
self.assertTrue(os.path.exists(common.get_snapdir()))
# Now clean it the rest of the way
main(["clean", "clean1"])
for i in range(0, 3):
self.assertFalse(
os.path.exists(parts[i]["part_dir"]), "Expected for {!r} to be wiped".format(parts[i]["part_dir"])
)
self.assertFalse(os.path.exists(common.get_partsdir()))
self.assertFalse(os.path.exists(common.get_stagedir()))
self.assertFalse(os.path.exists(common.get_snapdir()))
示例2: test_build_environment
def test_build_environment(self):
class Options:
configflags = []
plugin = cmake.CMakePlugin('test-part', Options())
os.makedirs(plugin.builddir)
plugin.build()
expected = {}
expected['CMAKE_PREFIX_PATH'] = '$CMAKE_PREFIX_PATH:{}'.format(
common.get_stagedir())
expected['CMAKE_INCLUDE_PATH'] = '$CMAKE_INCLUDE_PATH:' + ':'.join(
['{0}/include', '{0}/usr/include', '{0}/include/{1}',
'{0}/usr/include/{1}']).format(common.get_stagedir(),
common.get_arch_triplet())
expected['CMAKE_LIBRARY_PATH'] = '$CMAKE_LIBRARY_PATH:' + ':'.join(
['{0}/lib', '{0}/usr/lib', '{0}/lib/{1}',
'{0}/usr/lib/{1}']).format(common.get_stagedir(),
common.get_arch_triplet())
self.assertEqual(3, self.run_mock.call_count)
for call_args in self.run_mock.call_args_list:
environment = call_args[1]['env']
for variable, value in expected.items():
self.assertTrue(
variable in environment,
'Expected variable "{}" to be in environment'.format(
variable))
self.assertEqual(environment[variable], value,
'Expected ${}={}, but it was {}'.format(
variable, value, environment[variable]))
示例3: test_partial_clean
def test_partial_clean(self):
parts = self.make_snapcraft_yaml(n=3)
clean.main(['clean0', 'clean2'])
for i in [0, 2]:
self.assertFalse(
os.path.exists(parts[i]['part_dir']),
'Expected for {!r} to be wiped'.format(parts[i]['part_dir']))
self.assertTrue(os.path.exists(parts[1]['part_dir']),
'Expected a part directory for the clean1 part')
self.assertTrue(os.path.exists(common.get_partsdir()))
self.assertTrue(os.path.exists(common.get_stagedir()))
self.assertTrue(os.path.exists(common.get_snapdir()))
# Now clean it the rest of the way
clean.main(['clean1'])
for i in range(0, 3):
self.assertFalse(
os.path.exists(parts[i]['part_dir']),
'Expected for {!r} to be wiped'.format(parts[i]['part_dir']))
self.assertFalse(os.path.exists(common.get_partsdir()))
self.assertFalse(os.path.exists(common.get_stagedir()))
self.assertFalse(os.path.exists(common.get_snapdir()))
示例4: main
def main(argv=None):
argv = argv if argv else []
args = docopt(__doc__, argv=argv)
config = snapcraft.yaml.load_config()
if args['PART']:
config.validate_parts(args['PART'])
for part in config.all_parts:
if not args['PART'] or part.name in args['PART']:
part.clean()
# parts dir does not contain only generated code.
if (os.path.exists(common.get_partsdir()) and
not os.listdir(common.get_partsdir())):
os.rmdir(common.get_partsdir())
parts_match = set(config.part_names) == set(args['PART'])
# Only clean stage if all the parts were cleaned up.
clean_stage = not args['PART'] or parts_match
if clean_stage and os.path.exists(common.get_stagedir()):
logger.info('Cleaning up staging area')
shutil.rmtree(common.get_stagedir())
if os.path.exists(common.get_snapdir()):
logger.info('Cleaning up snapping area')
shutil.rmtree(common.get_snapdir())
示例5: test_clean_stage_after_fileset_change
def test_clean_stage_after_fileset_change(self):
# Create part1 and get it through the "build" step.
handler = pluginhandler.load_plugin('part1', 'nil')
handler.makedirs()
bindir = os.path.join(handler.code.installdir, 'bin')
os.makedirs(bindir)
open(os.path.join(bindir, '1'), 'w').close()
open(os.path.join(bindir, '2'), 'w').close()
handler.mark_done('build')
handler.stage()
# Verify that both files have been staged
self.assertTrue(
os.path.exists(os.path.join(common.get_stagedir(), 'bin', '1')))
self.assertTrue(
os.path.exists(os.path.join(common.get_stagedir(), 'bin', '2')))
# Now update the `stage` fileset to only snap one of these files
handler.code.options.stage = ['bin/1']
# Now clean the strip step for part1
handler.clean_stage({})
# Verify that part1's file is no longer staged
self.assertFalse(
os.path.exists(os.path.join(common.get_stagedir(), 'bin', '1')),
'Expected bin/1 to be cleaned')
self.assertFalse(
os.path.exists(os.path.join(common.get_stagedir(), 'bin', '2')),
'Expected bin/2 to be cleaned as well, even though the filesets '
'changed since it was staged.')
示例6: clean
def clean(args):
config = _load_config()
part_names = {part.name for part in config.all_parts}
for part_name in args.parts:
if part_name not in part_names:
logger.error('The part named {!r} is not defined in '
'\'snapcraft.yaml\''.format(part_name))
sys.exit(1)
for part in config.all_parts:
if not args.parts or part.name in args.parts:
part.clean()
# parts dir does not contain only generated code.
if (os.path.exists(common.get_partsdir()) and
not os.listdir(common.get_partsdir())):
os.rmdir(common.get_partsdir())
clean_stage = not args.parts or part_names == set(args.parts)
if clean_stage and os.path.exists(common.get_stagedir()):
logger.info('Cleaning up staging area')
shutil.rmtree(common.get_stagedir())
if os.path.exists(common.get_snapdir()):
logger.info('Cleaning up snapping area')
shutil.rmtree(common.get_snapdir())
示例7: _cleanup_common_directories
def _cleanup_common_directories(config):
_remove_directory_if_empty(common.get_partsdir())
_remove_directory_if_empty(common.get_stagedir())
_remove_directory_if_empty(common.get_snapdir())
max_index = -1
for part in config.all_parts:
step = part.last_step()
if step:
index = common.COMMAND_ORDER.index(step)
if index > max_index:
max_index = index
# If no parts have been pulled, remove the parts directory. In most cases
# this directory should have already been cleaned, but this handles the
# case of a failed pull.
should_remove_partsdir = max_index < common.COMMAND_ORDER.index('pull')
if should_remove_partsdir and os.path.exists(common.get_partsdir()):
logger.info('Cleaning up parts directory')
shutil.rmtree(common.get_partsdir())
# If no parts have been staged, remove staging area.
should_remove_stagedir = max_index < common.COMMAND_ORDER.index('stage')
if should_remove_stagedir and os.path.exists(common.get_stagedir()):
logger.info('Cleaning up staging area')
shutil.rmtree(common.get_stagedir())
# If no parts have been stripped, remove snapping area.
should_remove_snapdir = max_index < common.COMMAND_ORDER.index('strip')
if should_remove_snapdir and os.path.exists(common.get_snapdir()):
logger.info('Cleaning up snapping area')
shutil.rmtree(common.get_snapdir())
示例8: test_clean_all
def test_clean_all(self):
cmds.clean({})
self.mock_exists.assert_has_calls([
mock.call('partdir1'),
mock.call().__bool__(),
mock.call('partdir2'),
mock.call().__bool__(),
mock.call('partdir3'),
mock.call().__bool__(),
mock.call(common.get_partsdir()),
mock.call().__bool__(),
mock.call(common.get_stagedir()),
mock.call().__bool__(),
mock.call(common.get_snapdir()),
mock.call().__bool__(),
])
self.mock_rmtree.assert_has_calls([
mock.call('partdir1'),
mock.call('partdir2'),
mock.call('partdir3'),
mock.call(common.get_stagedir()),
mock.call(common.get_snapdir()),
])
self.mock_rmdir.assert_called_once_with(common.get_partsdir())
示例9: clear_common_directories
def clear_common_directories(self):
if os.path.exists(common.get_partsdir()):
shutil.rmtree(common.get_partsdir())
if os.path.exists(common.get_stagedir()):
shutil.rmtree(common.get_stagedir())
if os.path.exists(common.get_snapdir()):
shutil.rmtree(common.get_snapdir())
示例10: test_clean_nested_dependent_parts
def test_clean_nested_dependent_parts(self):
yaml = """name: clean-test
version: 1.0
summary: test clean
description: test clean
parts:
main:
plugin: nil
source: .
dependent:
plugin: nil
source: .
after: [main]
dependent-dependent:
plugin: nil
source: .
after: [dependent]"""
super().make_snapcraft_yaml(yaml)
part_dirs = {}
for part in ['main', 'dependent', 'dependent-dependent']:
part_dirs[part] = os.path.join(common.get_partsdir(), part)
os.makedirs(part_dirs[part])
os.makedirs(common.get_stagedir())
os.makedirs(common.get_snapdir())
# Cleaning only `main`. Since `dependent` depends upon main, we expect
# that it will be cleaned as well. Otherwise it won't be using the new
# `main` when it is built.
clean.main(['main'])
self.assertFalse(os.path.exists(part_dirs['main']),
'Expected part directory for main to be cleaned')
self.assertFalse(
os.path.exists(part_dirs['dependent']),
'Expected part directory for dependent to be cleaned as it '
'depends upon main')
self.assertFalse(
os.path.exists(part_dirs['dependent-dependent']),
'Expected part directory for dependent-dependent to be cleaned as '
'it depends upon dependent, which depends upon main')
self.assertFalse(os.path.exists(common.get_partsdir()))
self.assertFalse(os.path.exists(common.get_stagedir()))
self.assertFalse(os.path.exists(common.get_snapdir()))
示例11: test_cleanbuild
def test_cleanbuild(self, mock_installed, mock_call):
mock_installed.return_value = True
fake_logger = fixtures.FakeLogger(level=logging.INFO)
self.useFixture(fake_logger)
self.make_snapcraft_yaml()
# simulate build artifacts
dirs = [
os.path.join(common.get_partsdir(), 'part1', 'src'),
common.get_stagedir(),
common.get_snapdir(),
os.path.join(common.get_partsdir(), 'plugins'),
]
files_tar = [
os.path.join(common.get_partsdir(), 'plugins', 'x-plugin.py'),
'main.c',
]
files_no_tar = [
os.path.join(common.get_stagedir(), 'binary'),
os.path.join(common.get_snapdir(), 'binary'),
'snap-test.snap',
'snap-test_1.0_source.tar.bz2',
]
for d in dirs:
os.makedirs(d)
for f in files_tar + files_no_tar:
open(f, 'w').close()
cleanbuild.main()
self.assertEqual(
'Setting up container with project assets\n'
'Waiting for a network connection...\n'
'Network connection established\n'
'Retrieved snap-test_1.0_amd64.snap\n',
fake_logger.output)
with tarfile.open('snap-test_1.0_source.tar.bz2') as tar:
tar_members = tar.getnames()
for f in files_no_tar:
f = os.path.relpath(f)
self.assertFalse('./{}'.format(f) in tar_members,
'{} should not be in {}'.format(f, tar_members))
for f in files_tar:
f = os.path.relpath(f)
self.assertTrue('./{}'.format(f) in tar_members,
'{} should be in {}'.format(f, tar_members))
示例12: _build_environment
def _build_environment(self):
env = os.environ.copy()
env['CMAKE_PREFIX_PATH'] = '$CMAKE_PREFIX_PATH:{}'.format(
common.get_stagedir())
env['CMAKE_INCLUDE_PATH'] = '$CMAKE_INCLUDE_PATH:' + ':'.join(
['{0}/include', '{0}/usr/include', '{0}/include/{1}',
'{0}/usr/include/{1}']).format(common.get_stagedir(),
common.get_arch_triplet())
env['CMAKE_LIBRARY_PATH'] = '$CMAKE_LIBRARY_PATH:' + ':'.join(
['{0}/lib', '{0}/usr/lib', '{0}/lib/{1}',
'{0}/usr/lib/{1}']).format(common.get_stagedir(),
common.get_arch_triplet())
return env
示例13: test_clean_stage
def test_clean_stage(self):
filesets = {
'all': {
'fileset': ['*'],
},
'no1': {
'fileset': ['-1'],
},
'onlya': {
'fileset': ['a'],
},
'onlybase': {
'fileset': ['*', '-*/*'],
},
'nostara': {
'fileset': ['-*/a'],
},
}
for key, value in filesets.items():
with self.subTest(key=key):
self.clear_common_directories()
handler = pluginhandler.load_plugin('test_part', 'nil', {
'stage': value['fileset']
})
handler.makedirs()
installdir = handler.code.installdir
os.makedirs(installdir + '/1/1a/1b')
os.makedirs(installdir + '/2/2a')
os.makedirs(installdir + '/3')
open(installdir + '/a', mode='w').close()
open(installdir + '/b', mode='w').close()
open(installdir + '/1/a', mode='w').close()
open(installdir + '/3/a', mode='w').close()
handler.mark_done('build')
# Stage the installed files
handler.stage()
self.assertTrue(os.listdir(common.get_stagedir()))
handler.clean_stage({})
self.assertFalse(os.listdir(common.get_stagedir()),
'Expected snapdir to be completely cleaned')
示例14: test_upload
def test_upload(self):
upload.main()
self.assertEqual(
'Snap snap-test_1.0_amd64.snap not found. '
'Running snap step to create it.\n'
'Pulling part1 \n'
'Building part1 \n'
'Staging part1 \n'
'Stripping part1 \n'
'Snapping snap-test_1.0_amd64.snap\n'
'Snapped snap-test_1.0_amd64.snap\n',
self.fake_logger.output)
self.assertTrue(os.path.exists(common.get_stagedir()),
'Expected a stage directory')
self.assertTrue(self.state_file,
'Expected a state file for the part1 part')
with open(self.state_file) as sf:
state = sf.readlines()
self.assertEqual(len(state), 1, 'Expected only one line in the state '
'file for the part1 part')
self.assertEqual(state[0], 'strip', "Expected the state file for "
"part1 to be 'strip'")
self.mock_upload.assert_called_once_with(
'snap-test_1.0_amd64.snap',
'snap-test',
config=self.mock_load_config.return_value)
示例15: test_string_replacement_with_complex_data
def test_string_replacement_with_complex_data(self):
stagedir = common.get_stagedir()
subject = {
'filesets': {
'files': [
'somefile',
'$SNAPCRAFT_STAGE/file1',
'SNAPCRAFT_STAGE/really',
]
},
'configFlags': [
'--with-python',
'--with-swig $SNAPCRAFT_STAGE/swig',
],
}
expected = {
'filesets': {
'files': [
'somefile',
'{}/file1'.format(stagedir),
'SNAPCRAFT_STAGE/really',
]
},
'configFlags': [
'--with-python',
'--with-swig {}/swig'.format(stagedir),
],
}
self.assertEqual(pluginhandler._expand_env(subject), expected)