mercurial/util.py
changeset 6501 4f7feeb6d6ee
parent 6470 ac0bcd951c2c
parent 6500 a3175cd7dbec
child 6507 9699864de219
equal deleted inserted replaced
6498:315548fcc76b 6501:4f7feeb6d6ee
    13 """
    13 """
    14 
    14 
    15 from i18n import _
    15 from i18n import _
    16 import cStringIO, errno, getpass, re, shutil, sys, tempfile
    16 import cStringIO, errno, getpass, re, shutil, sys, tempfile
    17 import os, stat, threading, time, calendar, ConfigParser, locale, glob, osutil
    17 import os, stat, threading, time, calendar, ConfigParser, locale, glob, osutil
    18 import urlparse
    18 import imp, urlparse
    19 
    19 
    20 # Python compatibility
    20 # Python compatibility
    21 
    21 
    22 try:
    22 try:
    23     set = set
    23     set = set
   561 
   561 
   562     return (roots, match, (inc or exc or anypats) and True)
   562     return (roots, match, (inc or exc or anypats) and True)
   563 
   563 
   564 _hgexecutable = None
   564 _hgexecutable = None
   565 
   565 
       
   566 def main_is_frozen():
       
   567     """return True if we are a frozen executable.
       
   568 
       
   569     The code supports py2exe (most common, Windows only) and tools/freeze
       
   570     (portable, not much used).
       
   571     """
       
   572     return (hasattr(sys, "frozen") or # new py2exe
       
   573             hasattr(sys, "importers") or # old py2exe
       
   574             imp.is_frozen("__main__")) # tools/freeze
       
   575 
   566 def hgexecutable():
   576 def hgexecutable():
   567     """return location of the 'hg' executable.
   577     """return location of the 'hg' executable.
   568 
   578 
   569     Defaults to $HG or 'hg' in the search path.
   579     Defaults to $HG or 'hg' in the search path.
   570     """
   580     """
   571     if _hgexecutable is None:
   581     if _hgexecutable is None:
   572         set_hgexecutable(os.environ.get('HG') or find_exe('hg', 'hg'))
   582         hg = os.environ.get('HG')
       
   583         if hg:
       
   584             set_hgexecutable(hg)
       
   585         elif main_is_frozen():
       
   586             set_hgexecutable(sys.executable)
       
   587         else:
       
   588             set_hgexecutable(find_exe('hg', 'hg'))
   573     return _hgexecutable
   589     return _hgexecutable
   574 
   590 
   575 def set_hgexecutable(path):
   591 def set_hgexecutable(path):
   576     """set location of the 'hg' executable"""
   592     """set location of the 'hg' executable"""
   577     global _hgexecutable
   593     global _hgexecutable