def execute(args, parser): from conda.misc import untracked, which_package from conda.packup import make_tarbz2 prefix = get_prefix(args) if args.which: for path in args.which: for dist in which_package(path): print('%-50s %s' % (path, dist)) return print('# prefix:', prefix) if args.reset: remove(prefix, untracked(prefix)) return if args.untracked: files = sorted(untracked(prefix)) print('# untracked files: %d' % len(files)) for fn in files: print(fn) return make_tarbz2(prefix, name=args.pkg_name.lower(), version=args.pkg_version, build_number=int(args.pkg_build))
def execute(args, parser): import sys from os.path import basename from conda.misc import untracked from conda.builder.packup import make_tarbz2, remove prefix = common.get_prefix(args) if args.check: from conda.builder.tarcheck import check_all for path in args.path: try: check_all(path) print('%s OK' % basename(path)) except Exception as e: print(e) print('%s FAILED' % basename(path)) return if args.which: from conda.builder.packup import which_package for path in args.path: for dist in which_package(path): print('%-50s %s' % (path, dist)) return if args.path: sys.exit("Error: no positional arguments expected.") print('# prefix:', prefix) if args.reset: remove(prefix, untracked(prefix)) return if args.untracked: files = sorted(untracked(prefix)) print('# untracked files: %d' % len(files)) for fn in files: print(fn) return if args.share: from conda.builder.share import create_bundle path, warnings = create_bundle(prefix) for w in warnings: print("Warning:", w) print(path) return make_tarbz2(prefix, name = args.pkg_name, version = args.pkg_version, build_number = int(args.pkg_build))
def make_tarbz2(prefix, name='unknown', version='0.0', build_number=0, files=None): if files is None: files = untracked(prefix) print("# files: %d" % len(files)) if len(files) == 0: print("# failed: nothing to do") return None if any('/site-packages/' in f for f in files): python_version = get_installed_version(prefix, 'python') assert python_version is not None requires_py = tuple(int(x) for x in python_version[:3].split('.')) else: requires_py = False info = create_info(name, version, build_number, requires_py) tarbz2_fn = '%(name)s-%(version)s-%(build)s.tar.bz2' % info create_conda_pkg(prefix, files, info, tarbz2_fn) print('# success') print(tarbz2_fn) return tarbz2_fn
def old_create_bundle(prefix): """ Create a "bundle package" of the environment located in `prefix`, and return the full path to the created package. This file is created in a temp directory, and it is the callers responsibility to remove this directory (after the file has been handled in some way). This bundle is a regular meta-package which lists (in its requirements) all Anaconda packages installed (not packages the user created manually), and all files in the prefix which are not installed from Anaconda packages. When putting this packages into a conda repository, it can be used to created a new environment using the conda create command. """ info = dict( name = 'share', build = '0', build_number = 0, platform = config.platform, arch = config.arch_name, depends = get_requires(prefix), ) tmp_dir = tempfile.mkdtemp() tmp_path = join(tmp_dir, 'share.tar.bz2') warnings = create_conda_pkg(prefix, untracked(prefix, exclude_self_build=True), info, tmp_path, update_info) path = join(tmp_dir, '%(name)s-%(version)s-%(build)s.tar.bz2' % info) os.rename(tmp_path, path) return path, warnings
def old_create_bundle(prefix): """ Create a "bundle package" of the environment located in `prefix`, and return the full path to the created package. This file is created in a temp directory, and it is the callers responsibility to remove this directory (after the file has been handled in some way). This bundle is a regular meta-package which lists (in its requirements) all Anaconda packages installed (not packages the user created manually), and all files in the prefix which are not installed from Anaconda packages. When putting this packages into a conda repository, it can be used to created a new environment using the conda create command. """ info = dict( name='share', build='0', build_number=0, platform=config.platform, arch=config.arch_name, depends=get_requires(prefix), ) tmp_dir = tempfile.mkdtemp() tmp_path = join(tmp_dir, 'share.tar.bz2') warnings = create_conda_pkg(prefix, untracked(prefix, exclude_self_build=True), info, tmp_path, update_info) path = join(tmp_dir, '%(name)s-%(version)s-%(build)s.tar.bz2' % info) os.rename(tmp_path, path) return path, warnings
def get_untracked_obj_files(prefix): res = [] files = untracked(prefix) for f in files: path = join(prefix, f) if post.is_obj(path): res.append(f) return res
def packup_and_reinstall(prefix, ignore_files, pkg_name, pkg_version=None): files = untracked(prefix) - ignore_files if pkg_version is None: pkg_version = guess_pkg_version(files, pkg_name) fn = make_tarbz2(prefix, name=pkg_name, version=pkg_version, files=files) if fn is None: return remove(prefix, files) install_local_packages(prefix, [fn])
def execute(args, parser): import sys from conda.misc import untracked from conda.packup import make_tarbz2, remove prefix = common.get_prefix(args) if args.which: from conda.misc import which_package for path in args.path: for dist in which_package(path): print('%-50s %s' % (path, dist)) return if args.ls_files: if list_package_files(args.ls_files) == 1: sys.exit(1) else: return if args.path: sys.exit("Error: no positional arguments expected.") print('# prefix:', prefix) if args.reset: remove(prefix, untracked(prefix)) return if args.untracked: files = sorted(untracked(prefix)) print('# untracked files: %d' % len(files)) for fn in files: print(fn) return make_tarbz2(prefix, name = args.pkg_name.lower(), version = args.pkg_version, build_number = int(args.pkg_build))
def execute(args, parser): import sys from conda.misc import untracked from conda.packup import make_tarbz2, remove prefix = common.get_prefix(args) if args.which: from conda.misc import which_package for path in args.path: for dist in which_package(path): print('%-50s %s' % (path, dist)) return if args.ls_files: if list_package_files(args.ls_files) == 1: sys.exit(1) else: return if args.path: sys.exit("Error: no positional arguments expected.") print('# prefix:', prefix) if args.reset: remove(prefix, untracked(prefix)) return if args.untracked: files = sorted(untracked(prefix)) print('# untracked files: %d' % len(files)) for fn in files: print(fn) return make_tarbz2(prefix, name=args.pkg_name.lower(), version=args.pkg_version, build_number=int(args.pkg_build))
def create_bundle(prefix=None, data_path=None, bundle_name=None, extra_meta=None): """ Create a "bundle" of the environment located in `prefix`, and return the full path to the created package, which is going to be located in the current working directory, unless specified otherwise. """ meta = dict( name='bundle', build='0', build_number=0, type='bundle', bundle_name=bundle_name, creator=os.getenv('USER'), platform=platform, arch=arch_name, ctime=time.strftime(ISO8601), depends=[], ) meta['version'] = get_version(meta) tar_path = join('bundle-%(version)s-0.tar.bz2' % meta) t = tarfile.open(tar_path, 'w:bz2') if prefix: prefix = abspath(prefix) if not prefix.startswith('/opt/anaconda'): for f in sorted(untracked(prefix, exclude_self_build=True)): if f.startswith(BDP): raise RuntimeError('bad untracked file: %s' % f) if f.startswith('info/'): continue path = join(prefix, f) add_file(t, path, f) meta['bundle_prefix'] = prefix meta['depends'] = [ ' '.join(dist.rsplit('-', 2)) for dist in sorted(install.linked(prefix)) ] if data_path: add_data(t, data_path) if extra_meta: meta.update(extra_meta) add_info_files(t, meta) t.close() return tar_path
def create_bundle(prefix=None, data_path=None, bundle_name=None, extra_meta=None): """ Create a "bundle" of the environment located in `prefix`, and return the full path to the created package, which is going to be located in the current working directory, unless specified otherwise. """ meta = dict( name='bundle', build='0', build_number=0, type='bundle', bundle_name=bundle_name, creator=os.getenv('USER'), platform=platform, arch=arch_name, ctime=time.strftime(ISO8601), depends=[], ) meta['version'] = get_version(meta) tar_path = join('bundle-%(version)s-0.tar.bz2' % meta) t = tarfile.open(tar_path, 'w:bz2') if prefix: prefix = abspath(prefix) if not prefix.startswith('/opt/anaconda'): for f in sorted(untracked(prefix, exclude_self_build=True)): if f.startswith(BDP): raise RuntimeError('bad untracked file: %s' % f) if f.startswith('info/'): continue path = join(prefix, f) add_file(t, path, f) meta['bundle_prefix'] = prefix meta['depends'] = ['%(name)s %(version)s %(build)s' % info for info in itervalues(install.linked_data(prefix))] if data_path: add_data(t, data_path) if extra_meta: meta.update(extra_meta) add_info_files(t, meta) t.close() return tar_path
def create_analysispackage(prefix=None, data_path=None, analysispackage_name=None, extra_meta=None): """ Create a "analysispackage" of the environment located in `prefix`, and return the full path to the created package, which is going to be located in the current working directory, unless specified otherwise. """ meta = dict( name = 'analysispackage', build = '0', build_number = 0, type = 'analysispackage', analysispackage_name = analysispackage_name, creator = os.getenv('USER'), platform = config.platform, arch = config.arch_name, ctime = time.strftime(ISO8601), depends = [], ) meta['version'] = get_version(meta) tar_path = 'analysis_package_%s.tar.bz2' % analysispackage_name #tar_path = join('analysispackage-%(version)s-0.tar.bz2' % meta) t = tarfile.open(tar_path, 'w:bz2') if prefix: prefix = abspath(prefix) for f in sorted(untracked(prefix, exclude_self_build=True)): if f.startswith(BDP): raise RuntimeError('bad untracked file: %s' % f) if f.startswith('info/'): continue path = join(prefix, f) add_file(t, path, f) meta['analysispackage_prefix'] = prefix meta['depends'] = [' '.join(dist.rsplit('-', 2)) for dist in sorted(install.linked(prefix))] if data_path: add_data(t, data_path) if extra_meta: meta.update(extra_meta) add_info_files(t, meta) t.close() return tar_path