def test_built_spec_cache(tmpdir, install_mockery): """ Because the buildcache list command fetches the buildcache index and uses it to populate the binary_distribution built spec cache, when this test calls get_mirrors_for_spec, it is testing the popluation of that cache from a buildcache index. """ global mirror_path_rel mparser = argparse.ArgumentParser() mirror.setup_parser(mparser) margs = mparser.parse_args( ['add', '--scope', 'site', 'test-mirror-rel', 'file://%s' % mirror_path_rel]) mirror.mirror(mparser, margs) # setup argument parser parser = argparse.ArgumentParser() buildcache.setup_parser(parser) list_args = ['list', '-a', '-l'] args = parser.parse_args(list_args) buildcache.buildcache(parser, args) gspec = Spec('garply') gspec.concretize() cspec = Spec('corge') cspec.concretize() full_hash_map = { 'garply': gspec.full_hash(), 'corge': cspec.full_hash(), } gspec_results = bindist.get_mirrors_for_spec(gspec) gspec_mirrors = {} for result in gspec_results: s = result['spec'] assert(s._full_hash == full_hash_map[s.name]) assert(result['mirror_url'] not in gspec_mirrors) gspec_mirrors[result['mirror_url']] = True cspec_results = bindist.get_mirrors_for_spec(cspec, full_hash_match=True) cspec_mirrors = {} for result in cspec_results: s = result['spec'] assert(s._full_hash == full_hash_map[s.name]) assert(result['mirror_url'] not in cspec_mirrors) cspec_mirrors[result['mirror_url']] = True bindist.clear_spec_cache() margs = mparser.parse_args( ['rm', '--scope', 'site', 'test-mirror-rel']) mirror.mirror(mparser, margs)
def test_relative_rpaths_install_default_layout(tmpdir, install_mockery): """ Test the creation and installation of buildcaches with relative rpaths into the default directory layout scheme. """ gspec = Spec('garply') gspec.concretize() cspec = Spec('corge') cspec.concretize() global mirror_path_rel mparser = argparse.ArgumentParser() mirror.setup_parser(mparser) margs = mparser.parse_args( ['add', '--scope', 'site', 'test-mirror-rel', 'file://%s' % mirror_path_rel]) mirror.mirror(mparser, margs) iparser = argparse.ArgumentParser() install.setup_parser(iparser) # setup argument parser parser = argparse.ArgumentParser() buildcache.setup_parser(parser) # set default buildcache args install_args = ['install', '-a', '-u', '-f', cspec.name] # install buildcache created with relativized rpaths args = parser.parse_args(install_args) buildcache.buildcache(parser, args) # This gives warning that spec is already installed buildcache.buildcache(parser, args) # Uninstall the package and deps uparser = argparse.ArgumentParser() uninstall.setup_parser(uparser) uargs = uparser.parse_args(['-y', '--dependents', gspec.name]) uninstall.uninstall(uparser, uargs) # install build cache buildcache.buildcache(parser, args) # test overwrite install install_args.insert(install_args.index('-a'), '-f') args = parser.parse_args(install_args) buildcache.buildcache(parser, args) bindist.clear_spec_cache() spack.stage.purge() margs = mparser.parse_args( ['rm', '--scope', 'site', 'test-mirror-rel']) mirror.mirror(mparser, margs)
def test_built_spec_cache(tmpdir, install_mockery): """ Test what's the situation now """ global mirror_path_rel mparser = argparse.ArgumentParser() mirror.setup_parser(mparser) margs = mparser.parse_args([ 'add', '--scope', 'site', 'test-mirror-rel', 'file://%s' % mirror_path_rel ]) mirror.mirror(mparser, margs) # setup argument parser parser = argparse.ArgumentParser() buildcache.setup_parser(parser) list_args = ['list', '-a', '-l'] args = parser.parse_args(list_args) buildcache.buildcache(parser, args) gspec = Spec('garply') gspec.concretize() cspec = Spec('corge') cspec.concretize() full_hash_map = { 'garply': gspec.full_hash(), 'corge': cspec.full_hash(), } gspec_results = bindist.get_spec(gspec) gspec_mirrors = {} for result in gspec_results: s = result['spec'] assert (s._full_hash == full_hash_map[s.name]) assert (result['mirror_url'] not in gspec_mirrors) gspec_mirrors[result['mirror_url']] = True cspec_results = bindist.get_spec(cspec, full_hash_match=True) cspec_mirrors = {} for result in cspec_results: s = result['spec'] assert (s._full_hash == full_hash_map[s.name]) assert (result['mirror_url'] not in cspec_mirrors) cspec_mirrors[result['mirror_url']] = True bindist.clear_spec_cache() margs = mparser.parse_args(['rm', '--scope', 'site', 'test-mirror-rel']) mirror.mirror(mparser, margs)
def test_default_rpaths_install_nondefault_layout(tmpdir, install_mockery): """ Test the creation and installation of buildcaches with default rpaths into the non-default directory layout scheme. """ gspec = Spec('garply') gspec.concretize() cspec = Spec('corge') cspec.concretize() global mirror_path_def mparser = argparse.ArgumentParser() mirror.setup_parser(mparser) margs = mparser.parse_args( ['add', '--scope', 'site', 'test-mirror-def', 'file://%s' % mirror_path_def]) mirror.mirror(mparser, margs) # setup argument parser parser = argparse.ArgumentParser() buildcache.setup_parser(parser) # Set default buildcache args install_args = ['install', '-a', '-u', '%s' % cspec.name] # Install some packages with dependent packages # test install in non-default install path scheme args = parser.parse_args(install_args) buildcache.buildcache(parser, args) # test force install in non-default install path scheme install_args.insert(install_args.index('-a'), '-f') args = parser.parse_args(install_args) buildcache.buildcache(parser, args) bindist.clear_spec_cache() spack.stage.purge() margs = mparser.parse_args( ['rm', '--scope', 'site', 'test-mirror-def']) mirror.mirror(mparser, margs)
def test_relative_rpaths_install_nondefault(tmpdir, install_mockery): """ Test the installation of buildcaches with relativized rpaths into the non-default directory layout scheme. """ gspec = Spec('garply') gspec.concretize() cspec = Spec('corge') cspec.concretize() global mirror_path_rel mparser = argparse.ArgumentParser() mirror.setup_parser(mparser) margs = mparser.parse_args([ 'add', '--scope', 'site', 'test-mirror-rel', 'file://%s' % mirror_path_rel ]) mirror.mirror(mparser, margs) # Install patchelf needed for relocate in linux test environment iparser = argparse.ArgumentParser() install.setup_parser(iparser) # setup argument parser parser = argparse.ArgumentParser() buildcache.setup_parser(parser) # Set default buildcache args install_args = ['install', '-a', '-u', '%s' % cspec.name] # test install in non-default install path scheme and relative path args = parser.parse_args(install_args) buildcache.buildcache(parser, args) bindist._cached_specs = set() spack.stage.purge() margs = mparser.parse_args(['rm', '--scope', 'site', 'test-mirror-rel']) mirror.mirror(mparser, margs)
def test_default_rpaths_create_install_default_layout(tmpdir, mirror_directory_def, install_mockery): """ Test the creation and installation of buildcaches with default rpaths into the default directory layout scheme. """ gspec = Spec('garply') gspec.concretize() cspec = Spec('corge') cspec.concretize() iparser = argparse.ArgumentParser() install.setup_parser(iparser) # Install some packages with dependent packages iargs = iparser.parse_args(['--no-cache', cspec.name]) install.install(iparser, iargs) global mirror_path_def mirror_path_def = mirror_directory_def mparser = argparse.ArgumentParser() mirror.setup_parser(mparser) margs = mparser.parse_args( ['add', '--scope', 'site', 'test-mirror-def', 'file://%s' % mirror_path_def]) mirror.mirror(mparser, margs) margs = mparser.parse_args(['list']) mirror.mirror(mparser, margs) # setup argument parser parser = argparse.ArgumentParser() buildcache.setup_parser(parser) # Set default buildcache args create_args = ['create', '-a', '-u', '-d', str(mirror_path_def), cspec.name] install_args = ['install', '-a', '-u', cspec.name] # Create a buildache args = parser.parse_args(create_args) buildcache.buildcache(parser, args) # Test force overwrite create buildcache create_args.insert(create_args.index('-a'), '-f') args = parser.parse_args(create_args) buildcache.buildcache(parser, args) # create mirror index args = parser.parse_args(['update-index', '-d', 'file://%s' % str(mirror_path_def)]) buildcache.buildcache(parser, args) # list the buildcaches in the mirror args = parser.parse_args(['list', '-a', '-l', '-v']) buildcache.buildcache(parser, args) # Uninstall the package and deps uparser = argparse.ArgumentParser() uninstall.setup_parser(uparser) uargs = uparser.parse_args(['-y', '--dependents', gspec.name]) uninstall.uninstall(uparser, uargs) # test install args = parser.parse_args(install_args) buildcache.buildcache(parser, args) # This gives warning that spec is already installed buildcache.buildcache(parser, args) # test overwrite install install_args.insert(install_args.index('-a'), '-f') args = parser.parse_args(install_args) buildcache.buildcache(parser, args) args = parser.parse_args(['keys', '-f']) buildcache.buildcache(parser, args) args = parser.parse_args(['list']) buildcache.buildcache(parser, args) args = parser.parse_args(['list', '-a']) buildcache.buildcache(parser, args) args = parser.parse_args(['list', '-l', '-v']) buildcache.buildcache(parser, args) bindist.clear_spec_cache() spack.stage.purge() margs = mparser.parse_args( ['rm', '--scope', 'site', 'test-mirror-def']) mirror.mirror(mparser, margs)