mercurial/util.py
changeset 6499 479847ccabe0
parent 5659 3da652f2039c
child 6500 a3175cd7dbec
equal deleted inserted replaced
5666:9d6ad26fab10 6499:479847ccabe0
    13 """
    13 """
    14 
    14 
    15 from i18n import _
    15 from i18n import _
    16 import cStringIO, errno, getpass, popen2, re, shutil, sys, tempfile, strutil
    16 import cStringIO, errno, getpass, popen2, re, shutil, sys, tempfile, strutil
    17 import os, stat, threading, time, calendar, ConfigParser, locale, glob, osutil
    17 import os, stat, threading, time, calendar, ConfigParser, locale, glob, osutil
    18 import re, urlparse
    18 import re, urlparse, imp
    19 
    19 
    20 try:
    20 try:
    21     set = set
    21     set = set
    22     frozenset = frozenset
    22     frozenset = frozenset
    23 except NameError:
    23 except NameError:
   551 
   551 
   552     return (roots, match, (inc or exc or anypats) and True)
   552     return (roots, match, (inc or exc or anypats) and True)
   553 
   553 
   554 _hgexecutable = None
   554 _hgexecutable = None
   555 
   555 
       
   556 def main_is_frozen():
       
   557     """return True if we are a frozen executable.
       
   558 
       
   559     The code supports py2exe (most common, Windows only) and tools/freeze
       
   560     (portable, not much used).
       
   561     """
       
   562     return (hasattr(sys, "frozen") or # new py2exe
       
   563             hasattr(sys, "importers") or # old py2exe
       
   564             imp.is_frozen("__main__")) # tools/freeze
       
   565 
   556 def hgexecutable():
   566 def hgexecutable():
   557     """return location of the 'hg' executable.
   567     """return location of the 'hg' executable.
   558 
   568 
   559     Defaults to $HG or 'hg' in the search path.
   569     Defaults to $HG or 'hg' in the search path.
   560     """
   570     """
   561     if _hgexecutable is None:
   571     if _hgexecutable is None:
   562         set_hgexecutable(os.environ.get('HG') or find_exe('hg', 'hg'))
   572         if os.environ.has_key('HG'):
       
   573             set_hgexecutable(os.environ.get('HG'))
       
   574         elif main_is_frozen():
       
   575             set_hgexecutable(sys.executable)
       
   576         else:
       
   577             sel_hgexecutable(find_exe('hg', 'hg'))
   563     return _hgexecutable
   578     return _hgexecutable
   564 
   579 
   565 def set_hgexecutable(path):
   580 def set_hgexecutable(path):
   566     """set location of the 'hg' executable"""
   581     """set location of the 'hg' executable"""
   567     global _hgexecutable
   582     global _hgexecutable