Setup sys.path properly this time (I'll update the hacking guide to
authorEli Bendersky <eliben@gmail.com>
Mon, 8 Apr 2013 13:38:57 +0000 (06:38 -0700)
committerEli Bendersky <eliben@gmail.com>
Mon, 8 Apr 2013 13:38:57 +0000 (06:38 -0700)
explain what's been done)

21 files changed:
elftools/__init__.py
examples/dwarf_decode_address.py
examples/dwarf_die_tree.py
examples/dwarf_location_lists.py
examples/dwarf_range_lists.py
examples/elf_low_high_api.py
examples/elf_relocations.py
examples/elf_show_debug_sections.py
examples/elfclass_address_size.py
examples/examine_dwarf_info.py
scripts/readelf.py
test/run_all_unittests.py
test/run_examples_test.py
test/run_readelf_tests.py
test/test_arm_support.py
test/test_callframe.py
test/test_dwarf_expr.py
test/test_dwarf_lineprogram.py
test/test_dwarf_structs.py
test/test_utils.py
test/utils.py

index 4bec3848b052e75473b73b4384afe68606bdc17f..90be2eb959d1730e2547a0999204756e1b6e53fe 100644 (file)
@@ -6,4 +6,3 @@
 #-------------------------------------------------------------------------------
 __version__ = '0.21'
 
-
index 831b4fc3110c78bf8c04c936396abb93c16ebd5b..4b9ecdc3f5b8679a146270b65e21401721681ba2 100644 (file)
@@ -15,7 +15,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import maxint, bytes2str
 from elftools.elf.elffile import ELFFile
@@ -45,7 +45,7 @@ def process_file(filename, address):
 def decode_funcname(dwarfinfo, address):
     # Go over all DIEs in the DWARF information, looking for a subprogram
     # entry with an address range that includes the given address. Note that
-    # this simplifies things by disregarding subprograms that may have 
+    # this simplifies things by disregarding subprograms that may have
     # split address ranges.
     for CU in dwarfinfo.iter_CUs():
         for DIE in CU.iter_DIEs():
index 7eb07ff3a3b687436cbbeb3a7deaefa96405e6ca..66280e66cc7b7fa4a0231b2bed0214edfa9089b0 100644 (file)
@@ -15,7 +15,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import bytes2str
 from elftools.elf.elffile import ELFFile
index 62896189c1e717f7c3fa645e04dc50f175fe2553..308dbe6e3575bc7bdd5e8e21c61b729c3787ddf3 100644 (file)
@@ -15,7 +15,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import itervalues
 from elftools.elf.elffile import ELFFile
@@ -86,7 +86,7 @@ def show_loclist(loclist, dwarfinfo, indent):
         else:
             d.append(str(loc_entity))
     return '\n'.join(indent + s for s in d)
-    
+
 
 def attribute_has_location_list(attr):
     """ Only some attributes can have location list values, if they have the
index c310e584f125d50c392d6a973bc8f276a59e3865..63fd6c7e6c42a962cb902a23c9dd79786eddcb66 100644 (file)
@@ -1,7 +1,7 @@
 #-------------------------------------------------------------------------------
 # elftools example: dwarf_range_lists.py
 #
-# Examine DIE entries which have range list values, and decode these range 
+# Examine DIE entries which have range list values, and decode these range
 # lists.
 #
 # Eli Bendersky (eliben@gmail.com)
@@ -15,7 +15,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import itervalues
 from elftools.elf.elffile import ELFFile
index 05d75642ac88fbc51600909441c012a86537ec0b..b06b9e629f5429d9c6c2ae27ca57db6f1e60e2ab 100644 (file)
@@ -16,7 +16,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import bytes2str
 from elftools.elf.elffile import ELFFile
index fd65541954c70119a2621a11f3bf244d61ea5e1b..540f4774a9b371c9140783ddc5b008526c4d4835 100644 (file)
@@ -15,7 +15,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import bytes2str
 from elftools.elf.elffile import ELFFile
index 96e1dd9df88b87e160d31a3e857b5f507a45684d..8ffe8adf8c6ee2c13c5d8a8ab2aa4145f18f8381 100644 (file)
@@ -14,7 +14,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import bytes2str
 from elftools.elf.elffile import ELFFile
index d6b19d3d40e706a4417396c716eaf22f64aa879a..e6448a60816e64160147ca89420cc9fd0f770133 100644 (file)
@@ -15,7 +15,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.elf.elffile import ELFFile
 
index 35ce35bbc40f4567c4f59de1fe4e8176c475ad90..45cdc67ef77953aa419b3e4bf20afd89d4bd9e39 100644 (file)
@@ -14,7 +14,7 @@ import sys
 try:
     import elftools
 except ImportError:
-    sys.path.extend(['.', '..'])
+    sys.path[0:0] = ['.', '..']
 
 from elftools.common.py3compat import bytes2str
 from elftools.elf.elffile import ELFFile
index 64d0174e9e75316d191fc24fb38044d120d4cde5..56b78e3d32a4a51d55c10fc0649de656c1eba4d5 100755 (executable)
@@ -11,10 +11,10 @@ import os, sys
 from optparse import OptionParser
 import string
 
-# If we're running from the root of the development directory, elftools should
-# be loaded from there.
+# For running from development directory.
 sys.path.insert(0, '.')
 
+
 from elftools import __version__
 from elftools.common.exceptions import ELFError
 from elftools.common.py3compat import (
index 1130251a486936ece75f8a478b47086b61d11521..f7291bc4dfdc5dec092949911a3b1349e52c3a56 100755 (executable)
@@ -16,11 +16,9 @@ except ImportError:
 
 
 if __name__ == '__main__':
-    try:
+    import os
+    if not os.path.isdir('test'):
+        print('!! Please execute from the root directory of pyelftools')
+    else:
         tests = unittest.TestLoader().discover('test', 'test*.py', 'test')
         unittest.TextTestRunner().run(tests)
-    except ImportError as err:
-        print(err)
-        print('!! Please execute from the root directory of pyelftools')
-
-
index 10f8c1e38e0b1c3fa13028cdff52f600908d9616..0ac58596f00b3ddf44ec498aa1db398a4006fb18 100755 (executable)
@@ -9,8 +9,8 @@
 #-------------------------------------------------------------------------------
 import os, sys
 import logging
-
-from test.utils import run_exe, is_in_rootdir, dump_output_to_temp_files
+from utils import setup_syspath; setup_syspath()
+from utils import run_exe, is_in_rootdir, dump_output_to_temp_files
 
 
 # Create a global logger object
index fc64dbc1a9cd924c2375ae520f71e0ed48e40dbf..0c542d88ba4f1d21a54e62a1ecf7673068862ab8 100755 (executable)
@@ -13,7 +13,8 @@ from difflib import SequenceMatcher
 from optparse import OptionParser
 import logging
 import platform
-from test.utils import run_exe, is_in_rootdir, dump_output_to_temp_files
+from utils import setup_syspath; setup_syspath()
+from utils import run_exe, is_in_rootdir, dump_output_to_temp_files
 
 
 # Create a global logger object
@@ -202,6 +203,3 @@ def main():
 if __name__ == '__main__':
     sys.exit(main())
 
-
-
-
index fe35051d5068c83bd495c237b263509b8fc667ef..b2b0ab290236b8b47b4f17ebbdbabbc9bcf82a5c 100644 (file)
@@ -10,7 +10,7 @@ except ImportError:
     import unittest
 import os
 
-from test.utils import setup_syspath; setup_syspath()
+from utils import setup_syspath; setup_syspath()
 from elftools.elf.elffile import ELFFile
 
 class TestARMSupport(unittest.TestCase):
index 546ce29529f96e3f796b1a9bbe8b2215bbbf7074..79317d6b50be104757a26037a8d5b7ff919d909f 100644 (file)
@@ -9,7 +9,7 @@ try:
 except ImportError:
     import unittest
 
-from test.utils import setup_syspath; setup_syspath()
+from utils import setup_syspath; setup_syspath()
 from elftools.common.py3compat import BytesIO
 from elftools.dwarf.callframe import (
     CallFrameInfo, CIE, FDE, instruction_name, CallFrameInstruction,
index 031480438e8e4e65c8da72d66f76c5dcb5183089..22a250fe2b8795abf4a5b566f114a6fa79a42888 100644 (file)
@@ -9,7 +9,7 @@ try:
 except ImportError:
     import unittest
 
-from test.utils import setup_syspath; setup_syspath()
+from utils import setup_syspath; setup_syspath()
 from elftools.dwarf.descriptions import ExprDumper, set_global_machine_arch
 from elftools.dwarf.structs import DWARFStructs
 
index 8d1b4ab730f323c93a731d138eb4f0c44e5735b0..3a10932c96e93c51fb903722bdab4fd6a987e5ff 100644 (file)
@@ -9,7 +9,7 @@ try:
 except ImportError:
     import unittest
 
-from test.utils import setup_syspath; setup_syspath()
+from utils import setup_syspath; setup_syspath()
 from elftools.common.py3compat import BytesIO, iteritems
 from elftools.dwarf.lineprogram import LineProgram, LineState, LineProgramEntry
 from elftools.dwarf.structs import DWARFStructs
index 9ca575b12277223770aeaaa39ca5065e49b7084b..94f77c1c15e214537b4e65fd914d3afbfc68dcb6 100644 (file)
@@ -9,7 +9,7 @@ try:
 except ImportError:
     import unittest
 
-from test.utils import setup_syspath; setup_syspath()
+from utils import setup_syspath; setup_syspath()
 from elftools.dwarf.structs import DWARFStructs
 
 
index 00e6137e5ab3a63572741d7edea8a1dbf1ff8fc5..314b6b53a877cc660aad53d30ea658ecb9ce9a03 100644 (file)
@@ -10,7 +10,7 @@ except ImportError:
     import unittest
 from random import randint
 
-from test.utils import setup_syspath; setup_syspath()
+from utils import setup_syspath; setup_syspath()
 from elftools.common.py3compat import int2byte, BytesIO
 from elftools.common.utils import (parse_cstring_from_stream,
         preserve_stream_pos)
index 57ae62cc778a5edec003864efa9ea59778c0ece0..7a3b83f313fb745482de06ac273e1bda030d2a5f 100644 (file)
@@ -7,8 +7,9 @@
 # This code is in the public domain
 #-------------------------------------------------------------------------------
 import os, sys, subprocess, tempfile
-from elftools.common.py3compat import bytes2str
 
+# This module should not import elftools before setup_syspath() is called!
+# See the Hacking Guide in the documentation for more details.
 
 def setup_syspath():
     """ Setup sys.path so that tests pick up local pyelftools before the
@@ -28,6 +29,7 @@ def run_exe(exe_path, args):
         popen_cmd.insert(0, sys.executable)
     proc = subprocess.Popen(popen_cmd, stdout=subprocess.PIPE)
     proc_stdout = proc.communicate()[0]
+    from elftools.common.py3compat import bytes2str
     return proc.returncode, bytes2str(proc_stdout)