Beispiel #1
0
Datei: inst.py Projekt: Malex/pyg
 def _find_develop(self, dir, req):
     try:
         logger.info('Looking for a local package...')
         try:
             dist = Develop(req.name)
         except (ValueError, AttributeError):
             logger.error('Cannot find a local distribution for {0}', req.name, exc=PygError)
         else:
             # XXX: Add a `location` attribute in pkgtools' next release
             location = os.path.abspath(dist._arg_name)
             path = os.path.dirname(location)
             if not req.match(Version(dist.version)):
                 logger.error('Found {0}, but it does not match the requirement', path, exc=PygError)
             setup_py = os.path.join(path, 'setup.py')
             if not os.path.exists(setup_py):
                 logger.error('Cannot find setup.py for {0}', req.name, exc=PygError)
             logger.info('Found a matching package in {0}', path)
             with TempDir() as tempdir:
                 code, output = call_setup(path, ['sdist', '-d', tempdir])
                 if code != 0:
                     logger.fatal('setup.py failed to create the source distribution')
                     print_output(output, 'setup.py sdist')
                     raise PygError
                 arch = glob.glob(os.path.join(tempdir, '*{0}*'.format(req.name)))[0]
                 shutil.move(arch, dir)
                 arch_name = os.path.join(dir, os.path.basename(arch))
                 unpack(arch_name)
                 return arch_name
     except (PygError, IndexError, ValueError):
         return False
Beispiel #2
0
Datei: vcs.py Projekt: Malex/pyg
 def develop(self):
     logger.info('Running setup.py develop for {0}', self.package_name)
     code, output = call_setup(self.dest, ['develop'])
     if code != 0:
         logger.fatal('Error: setup.py develop did not install {0}', self.package_name)
         print_output(output, 'setup.py develop')
         raise InstallationError('setup.py did not install {0}'.format(self.package_name))
     logger.info('{0} installed succesfully', self.package_name)
Beispiel #3
0
Datei: base.py Projekt: Malex/pyg
 def develop(self):
     self.retrieve_data()
     if not os.path.exists(os.path.join(self.dir, 'setup.py')):
         logger.fatal('Error: The repository must have a top-level setup.py file', exc=InstallationError)
     logger.info('Running setup.py develop for {0}', self.package_name)
     code, output = call_setup(self.dir, ['develop'])
     if code != 0:
         logger.fatal('Error: setup.py develop did not install {0}', self.package_name)
         print_output(output, 'setup.py develop')
         raise InstallationError('setup.py did not install {0}'.format(self.package_name))
     logger.info('{0} installed succesfully', self.package_name)
Beispiel #4
0
Datei: core.py Projekt: Malex/pyg
    def install(self):
        '''
        Given a pathname containing a :file:`setup.py` file, install the package.
        First runs `setup.py egg_info` to find out requirements, then runs ``setup.py install``.
        '''

        if self.reqset is not None:
            logger.info('Running setup.py egg_info for {0}', self.name)
            call_setup(self.path, ['egg_info', '--egg-base', self.tempdir])
            try:
                dist = DirTools(glob.glob(os.path.join(self.path, '*egg-info'))[0])
            except (IndexError, ValueError):
                pass
            else:
                try:
                    for r in dist.file('requires.txt'):
                        self.reqset.add(r)
                except (KeyError, ConfigParser.MissingSectionHeaderError):
                    logger.debug('debug: requires.txt not found')
                #try:
                #    for r in dist.file('dependency_links.txt'):
                #        self.reqset.add(r)
                #except (KeyError, ConfigParser.MissingSectionHeaderError):
                #    logger.debug('debug: dependency_links.txt not found')
        args = []
        if args_manager['install']['install_dir'] != INSTALL_DIR:
            dir = os.path.abspath(args_manager['install']['install_dir'])
            if not os.path.exists(dir):
                os.makedirs(dir)

            ## Setuptools would not install the package without this hack
            os.putenv('PYTHONPATH', dir)
            args += ['--install-purelib', dir, '--install-platlib', dir]
        if args_manager['install']['no_scripts']:
            args += ['--install-scripts', self.tempdir]
        if args_manager['install']['no_data']:
            args += ['--install-data', self.tempdir]
        if args_manager['install']['user']:
            args += ['--user']
        run_setup(self.path, self.name, args=args, exc=InstallationError)
Beispiel #5
0
Datei: pack.py Projekt: Malex/pyg
    def _gen_eggs(self, source_dir, egg_dir):
        r = re.compile(r'-py\d\.\d')
        def unzip_egg(arch_path):
            arch = os.path.basename(arch_path)
            eggname = arch[:r.search(arch).start()]
            with ZipFile(arch_path) as z:
                z.extractall(os.path.join(egg_dir, eggname))

        with TempDir() as tempdir:
            for dist in os.listdir(source_dir):
                code, output = call_setup(os.path.join(source_dir, dist), ['bdist_egg', '-d', tempdir])
                if code != 0:
                    logger.fatal('Error: cannot generate egg for {0}', dist)
                    print_output(output, 'setup.py bdist_egg')
                    raise PygError('cannot generate egg for {0}'.format(dist))
                arch = glob.glob(os.path.join(tempdir, dist) + '*.egg')[0]
                unzip_egg(arch)