|
65 | 65 | from easybuild.tools.config import install_path, log_path, package_path, source_paths |
66 | 66 | from easybuild.tools.environment import restore_env, sanitize_env |
67 | 67 | from easybuild.tools.filetools import DEFAULT_CHECKSUM |
68 | | -from easybuild.tools.filetools import adjust_permissions, apply_patch, convert_name, derive_alt_pypi_url |
| 68 | +from easybuild.tools.filetools import adjust_permissions, apply_patch, change_dir, convert_name, derive_alt_pypi_url |
69 | 69 | from easybuild.tools.filetools import compute_checksum, download_file, encode_class_name, extract_file |
70 | 70 | from easybuild.tools.filetools import is_alt_pypi_url, mkdir, move_logs, read_file, remove_file, rmtree2, write_file |
71 | 71 | from easybuild.tools.filetools import verify_checksum, weld_paths |
@@ -1130,10 +1130,7 @@ def make_module_req(self): |
1130 | 1130 |
|
1131 | 1131 | lines = [] |
1132 | 1132 | if os.path.isdir(self.installdir): |
1133 | | - try: |
1134 | | - os.chdir(self.installdir) |
1135 | | - except OSError, err: |
1136 | | - raise EasyBuildError("Failed to change to %s: %s", self.installdir, err) |
| 1133 | + change_dir(self.installdir) |
1137 | 1134 |
|
1138 | 1135 | lines.append('\n') |
1139 | 1136 |
|
@@ -1162,10 +1159,7 @@ def make_module_req(self): |
1162 | 1159 | lines.append(self.module_generator.prepend_paths(key, paths)) |
1163 | 1160 | if self.dry_run: |
1164 | 1161 | self.dry_run_msg('') |
1165 | | - try: |
1166 | | - os.chdir(self.orig_workdir) |
1167 | | - except OSError, err: |
1168 | | - raise EasyBuildError("Failed to change back to %s: %s", self.orig_workdir, err) |
| 1162 | + change_dir(self.orig_workdir) |
1169 | 1163 |
|
1170 | 1164 | return ''.join(lines) |
1171 | 1165 |
|
@@ -1351,11 +1345,8 @@ def guess_start_dir(self): |
1351 | 1345 |
|
1352 | 1346 | self.log.info("Using %s as start dir", self.cfg['start_dir']) |
1353 | 1347 |
|
1354 | | - try: |
1355 | | - os.chdir(self.cfg['start_dir']) |
1356 | | - self.log.debug("Changed to real build directory %s (start_dir)" % self.cfg['start_dir']) |
1357 | | - except OSError, err: |
1358 | | - raise EasyBuildError("Can't change to real build directory %s: %s", self.cfg['start_dir'], err) |
| 1348 | + change_dir(self.cfg['start_dir']) |
| 1349 | + self.log.debug("Changed to real build directory %s (start_dir)", self.cfg['start_dir']) |
1359 | 1350 |
|
1360 | 1351 | def handle_iterate_opts(self): |
1361 | 1352 | """Handle options relevant during iterated part of build/install procedure.""" |
@@ -1726,7 +1717,7 @@ def extensions_step(self, fetch=False): |
1726 | 1717 | print_msg("installing extension %s %s (%d/%d)..." % tup, silent=self.silent) |
1727 | 1718 |
|
1728 | 1719 | # always go back to original work dir to avoid running stuff from a dir that no longer exists |
1729 | | - os.chdir(self.orig_workdir) |
| 1720 | + change_dir(self.orig_workdir) |
1730 | 1721 |
|
1731 | 1722 | cls, inst = None, None |
1732 | 1723 | class_name = encode_class_name(ext['name']) |
@@ -2052,10 +2043,7 @@ def _sanity_check_step(self, custom_paths=None, custom_commands=None, extension= |
2052 | 2043 |
|
2053 | 2044 | # chdir to installdir (better environment for running tests) |
2054 | 2045 | if os.path.isdir(self.installdir): |
2055 | | - try: |
2056 | | - os.chdir(self.installdir) |
2057 | | - except OSError, err: |
2058 | | - raise EasyBuildError("Failed to move to installdir %s: %s", self.installdir, err) |
| 2046 | + change_dir(self.installdir) |
2059 | 2047 |
|
2060 | 2048 | # run sanity check commands |
2061 | 2049 | for command in commands: |
@@ -2101,11 +2089,12 @@ def cleanup_step(self): |
2101 | 2089 | cleanup_builddir is False, otherwise we remove the installation |
2102 | 2090 | """ |
2103 | 2091 | if not self.build_in_installdir and build_option('cleanup_builddir'): |
2104 | | - try: |
2105 | | - os.chdir(self.orig_workdir) # make sure we're out of the dir we're removing |
2106 | 2092 |
|
2107 | | - self.log.info("Cleaning up builddir %s (in %s)" % (self.builddir, os.getcwd())) |
| 2093 | + # make sure we're out of the dir we're removing |
| 2094 | + change_dir(self.orig_workdir) |
| 2095 | + self.log.info("Cleaning up builddir %s (in %s)", self.builddir, os.getcwd()) |
2108 | 2096 |
|
| 2097 | + try: |
2109 | 2098 | rmtree2(self.builddir) |
2110 | 2099 | base = os.path.dirname(self.builddir) |
2111 | 2100 |
|
@@ -2237,7 +2226,7 @@ def test_cases_step(self): |
2237 | 2226 | Run provided test cases. |
2238 | 2227 | """ |
2239 | 2228 | for test in self.cfg['tests']: |
2240 | | - os.chdir(self.orig_workdir) |
| 2229 | + change_dir(self.orig_workdir) |
2241 | 2230 | if os.path.isabs(test): |
2242 | 2231 | path = test |
2243 | 2232 | else: |
@@ -2533,7 +2522,7 @@ def build_and_install_one(ecdict, init_env): |
2533 | 2522 | ended = 'ended' |
2534 | 2523 |
|
2535 | 2524 | # make sure we're back in original directory before we finish up |
2536 | | - os.chdir(cwd) |
| 2525 | + change_dir(cwd) |
2537 | 2526 |
|
2538 | 2527 | application_log = None |
2539 | 2528 |
|
@@ -2728,7 +2717,7 @@ def perform_step(step, obj, method, logfile): |
2728 | 2717 | start_time = time.time() |
2729 | 2718 |
|
2730 | 2719 | # start with a clean slate |
2731 | | - os.chdir(base_dir) |
| 2720 | + change_dir(base_dir) |
2732 | 2721 | restore_env(base_env) |
2733 | 2722 | sanitize_env() |
2734 | 2723 |
|
|
0 commit comments