Changeset 3258


Ignore:
Timestamp:
Nov 26, 2010 4:13:56 PM (10 years ago)
Author:
wehart
Message:

Updates due to recent changes in pyutilib.virtualenv that capture
installation failures more gracefully. This includes a test to
see if the subversion command is available.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • coopr.misc/trunk/util/coopr_install

    r3227 r3258  
    27402740    print "WARNING: ignoring the value of the PYTHONHOME environment variable!  This value can corrupt the virtual python installation."
    27412741
    2742 
    27432742#
    27442743# The following taken from PyUtilib
     
    27482747else:                            #pragma:nocover
    27492748   executable_extension=""
     2749
    27502750
    27512751def search_file(filename, search_path=None, implicitExt=executable_extension, executable=False,         isfile=True):
     
    28092809#
    28102810# Use pkg_resources to guess version.
     2811# This allows for parsing version with the syntax:
     2812#   9.3.2
     2813#   8.28.rc1
     2814#
     2815def guess_release(svndir):
     2816    if using_subversion:
     2817        output = commands.getoutput('svn ls '+svndir)
     2818        if output=="":
     2819            return None
     2820        #print output
     2821        versions = []
    28112822# This allows for parsing version with the syntax:
    28122823#   9.3.2
     
    31173128            print "     No checkout required"
    31183129            print "-----------------------------------------------------------------"
     3130        elif not using_subversion:
     3131                print ""
     3132                print "Error: Cannot checkout software %s with subversion." % self.name
     3133                print "A problem was detected executing subversion commands."
     3134                sys.exit(1)
    31193135        else:
    31203136            print "-----------------------------------------------------------------"
    3121             self.run([self.svn]+self.svn_username+[Repository.svn_get,'-q',self.pkgdir+self.rev, dir])
     3137            try:
     3138                self.run([self.svn]+self.svn_username+[Repository.svn_get,'-q',self.pkgdir+self.rev, dir])
     3139            except OSError, err:
     3140                print ""
     3141                print "Error checkout software %s with subversion at %s" % (self.name,self.pkgdir+self.rev)
     3142                print str(err)
     3143                sys.exit(1)
    31223144        if install:
    3123             if self.dev:
    3124                 self.run([self.python, 'setup.py', 'develop'], dir=dir)
    3125             else:
    3126                 self.run([self.python, 'setup.py', 'install'], dir=dir)
     3145            try:
     3146                if self.dev:
     3147                    if offline:
     3148                        self.run([self.python, 'setup.py', 'develop', '--no-deps'], dir=dir)
     3149                    else:
     3150                        self.run([self.python, 'setup.py', 'develop'], dir=dir)
     3151                else:
     3152                    self.run([self.python, 'setup.py', 'install'], dir=dir)
     3153            except OSError, err:
     3154                print ""
     3155                print "Error installing software %s from source using the setup.py file." % self.name
     3156                print "This is probably due to a syntax or configuration error in this package."
     3157                print str(err)
     3158                sys.exit(1)
    31273159
    31283160    def update_trunk(self, dir=None):
     
    31543186            self.run([self.python, 'setup.py', 'install'], dir=dir)
    31553187
    3156     def Xsdist_trunk(self, format='zip'):
    3157         if self.trunk is None:
    3158             if not self.pypi is None:
    3159                 self.easy_install()
    3160             elif not self.stable is None:
    3161                 self.sdist_stable(format=format)
    3162             else:
    3163                 self.sdist_release(format=format)
    3164         else:
    3165             self.pkgdir=self.trunk
    3166             self.pkgroot=self.trunk_root
    3167             print "-----------------------------------------------------------------"
    3168             print "  Checking out source for package",self.name
    3169             print "     Subversion dir: "+self.trunk
    3170             print "-----------------------------------------------------------------"
    3171             self.run([self.svn]+self.svn_username+[Repository.svn_get,'-q',self.trunk, 'pkg'+self.name+self.rev])
    3172             self.run([self.python, 'setup.py', 'sdist','-q','--dist-dir=..', '--formats='+format], dir='pkg'+self.name)
    3173             os.chdir('..')
    3174             rmtree('pkg'+self.name)
    3175 
    3176     def Xsdist_stable(self, format='zip'):
    3177         if self.stable is None:
    3178             if not self.pypi is None:
    3179                 self.easy_install()
    3180             elif not self.release is None:
    3181                 self.install_release()
    3182             elif not self.trunk is None:
    3183                 self.install_trunk()
    3184         else:
    3185             self.pkgdir=self.stable
    3186             self.pkgroot=self.stable_root
    3187             print "-----------------------------------------------------------------"
    3188             print "  Checking out source for package",self.name
    3189             print "     Subversion dir: "+self.stable
    3190             print "     Source dir:     "+dir
    3191             print "-----------------------------------------------------------------"
    3192             self.run([self.svn]+self.svn_username+[Repository.svn_get,'-q',self.stable, dir])
    3193             self.run([self.python, 'setup.py', 'develop'], dir=dir)
    3194 
    3195     def Xsdist_release(self, dir=None):
    3196         if self.release is None:
    3197             if not self.pypi is None:
    3198                 self.easy_install()
    3199             elif not self.stable is None:
    3200                 self.install_stable()
    3201             elif not self.trunk is None:
    3202                 self.install_trunk()
    3203         else:
    3204             self.pkgdir=self.release
    3205             self.pkgroot=self.release_root
    3206             print "-----------------------------------------------------------------"
    3207             print "  Checking out source for package",self.name
    3208             print "     Subversion dir: "+self.release
    3209             print "     Source dir:     "+dir
    3210             print "-----------------------------------------------------------------"
    3211             self.run([self.svn]+self.svn_username+[Repository.svn_get]+self.rev+['-q',self.release, dir])
    3212             self.run([self.python, 'setup.py', 'install'], dir=dir)
    3213 
    32143188    def easy_install(self, install, preinstall, dir, offline):
    32153189        try:
    32163190            if install:
    3217                 #self.run([self.easy_install_path, '-q', self.pypi])
    32183191                if offline:
    32193192                    self.run([self.python, 'setup.py', 'install'], dir=dir)
     
    32243197                    self.run(self.easy_install_path + ['-q', '--editable', '--build-directory', '.', self.pypi], dir=os.path.dirname(dir))
    32253198        except OSError, err:
    3226             print "-----------------------------------------------------------------"
    3227             print "Warning!!! Ignoring easy_install error '%s'" % str(err)
    3228             print "-----------------------------------------------------------------"
     3199            print ""
     3200            print "Error installing package %s with easy_install" % self.name
     3201            print str(err)
     3202            sys.exit(1)
    32293203
    32303204    def easy_upgrade(self):
     
    34473421        logger = self.logger
    34483422        #
     3423        # Determine if the subversion command is available
     3424        #
     3425        global using_subversion
     3426        try:
     3427            call_subprocess(['svn'+executable_extension,'help'], show_stdout=False)
     3428        except OSError, err:
     3429            print ""
     3430            print "------------------------------------------------"
     3431            print "WARNING: problems executing subversion commands."
     3432            print "Subversion is disabled."
     3433            print "------------------------------------------------"
     3434            print ""
     3435            using_subversion = False
     3436        #
    34493437        if options.update and (options.stable or options.trunk):
    34503438            self.logger.fatal("ERROR: cannot specify --stable or --trunk when specifying the --update option.")
     
    38833871        get_installer.installer = configure( create_installer() )
    38843872        return get_installer.installer
    3885    
    38863873
    38873874#
     
    39403927            print "WARNING: you may need to set your HTTP_PROXY environment variable!"
    39413928        print "-----------------------------------------------------------------"
    3942         sys.exit(0)
     3929        sys.exit(1)
    39433930
    39443931install_setuptools.use_default=True
     
    39623949            print "WARNING: you may need to set your HTTP_PROXY environment variable!"
    39633950        print "-----------------------------------------------------------------"
    3964         sys.exit(0)
     3951        sys.exit(1)
    39653952
    39663953install_pip.use_default=True
    39673954
     3955
     3956#
     3957# This is a monkey patch, to catch errors when a directory cannot be created
     3958# by virtualenv.
     3959#
     3960def mkdir(path):
     3961    if not os.path.exists(path):
     3962        logger.info('Creating %s', path)
     3963        try:
     3964            os.makedirs(path)
     3965        except Exception, e:
     3966            print "Cannot create directory '%s'!" % path
     3967            print "Verify that you have write permissions to this directory."
     3968            sys.exit(1)
     3969    else:
     3970        logger.info('Directory %s already exists', path)
    39683971
    39693972#
Note: See TracChangeset for help on using the changeset viewer.