1 |
commit: 8e0ca4b5aa041e760446d862b28007eff228be4d |
2 |
Author: Slawek <lis.slawek <AT> gmail <DOT> com> |
3 |
AuthorDate: Tue Apr 26 07:08:24 2011 +0000 |
4 |
Commit: Sławek Lis <lis.slawek <AT> gmail <DOT> com> |
5 |
CommitDate: Tue Apr 26 07:08:24 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoolkit.git;a=commit;h=8e0ca4b5 |
7 |
|
8 |
Fixed .la files parser. Some minor logging fixes. |
9 |
|
10 |
--- |
11 |
pym/gentoolkit/revdep_rebuild/analyse.py | 23 ++++++++++++++++++----- |
12 |
pym/gentoolkit/revdep_rebuild/collect.py | 6 +++--- |
13 |
pym/gentoolkit/revdep_rebuild/rebuild.py | 4 ++-- |
14 |
3 files changed, 23 insertions(+), 10 deletions(-) |
15 |
|
16 |
diff --git a/pym/gentoolkit/revdep_rebuild/analyse.py b/pym/gentoolkit/revdep_rebuild/analyse.py |
17 |
index 521d8b9..be696d1 100644 |
18 |
--- a/pym/gentoolkit/revdep_rebuild/analyse.py |
19 |
+++ b/pym/gentoolkit/revdep_rebuild/analyse.py |
20 |
@@ -40,6 +40,15 @@ def prepare_checks(files_to_check, libraries, bits, cmd_max_args): |
21 |
|
22 |
def extract_dependencies_from_la(la, libraries, to_check, logger): |
23 |
broken = [] |
24 |
+ |
25 |
+ libnames = [] |
26 |
+ for l in libraries: |
27 |
+ m = re.match('.+\/(.+)\.(so|la|a)(\..+)?', l) |
28 |
+ if m is not None: |
29 |
+ ln = m.group(1) |
30 |
+ if ln not in libnames: |
31 |
+ libnames += [ln, ] |
32 |
+ |
33 |
for f in la: |
34 |
if not os.path.exists(f): |
35 |
continue |
36 |
@@ -51,10 +60,12 @@ def extract_dependencies_from_la(la, libraries, to_check, logger): |
37 |
if m is not None: |
38 |
for el in m.group(1).split(' '): |
39 |
el = el.strip() |
40 |
- if len(el) < 1 or el.startswith('-'): |
41 |
+ if len(el) < 1 or el.startswith('-L'): |
42 |
continue |
43 |
|
44 |
- if el in la or el in libraries: |
45 |
+ if el.startswith('-l') and 'lib'+el[2:] in libnames: |
46 |
+ pass |
47 |
+ elif el in la or el in libraries: |
48 |
pass |
49 |
else: |
50 |
if to_check: |
51 |
@@ -66,7 +77,7 @@ def extract_dependencies_from_la(la, libraries, to_check, logger): |
52 |
if not _break: |
53 |
continue |
54 |
|
55 |
- logger.info(yellow(' * ') + f + ' is broken (requires: ' + bold(el)) |
56 |
+ logger.info(yellow(' * ') + f + ' is broken (requires: ' + bold(el)+')') |
57 |
broken.append(f) |
58 |
return broken |
59 |
|
60 |
@@ -178,13 +189,15 @@ def analyse(settings, logger, libraries=None, la_libraries=None, |
61 |
#call_program(['scanelf', '-M', str(bits), '-BF', '%F',] + libraries+libraries_links).strip().split('\n') |
62 |
|
63 |
found_libs, dependencies = prepare_checks(libs_and_bins, _libraries, bits, settings['CMD_MAX_ARGS']) |
64 |
- |
65 |
+ #print dependencies |
66 |
broken = find_broken(found_libs, _libraries, _libs_to_check) |
67 |
- broken_la = extract_dependencies_from_la(la_libraries, _libraries, _libs_to_check, logger) |
68 |
|
69 |
bits /= 2 |
70 |
bits = int(bits) |
71 |
|
72 |
+ broken_la = extract_dependencies_from_la(la_libraries, libraries+libraries_links, _libs_to_check, logger) |
73 |
+ |
74 |
+ |
75 |
broken_pathes = main_checks(found_libs, broken, dependencies, logger) |
76 |
broken_pathes += broken_la |
77 |
|
78 |
|
79 |
diff --git a/pym/gentoolkit/revdep_rebuild/collect.py b/pym/gentoolkit/revdep_rebuild/collect.py |
80 |
index b408edc..b7ed469 100644 |
81 |
--- a/pym/gentoolkit/revdep_rebuild/collect.py |
82 |
+++ b/pym/gentoolkit/revdep_rebuild/collect.py |
83 |
@@ -172,7 +172,7 @@ def collect_libraries_from_dir(dirs, mask, logger): |
84 |
prv & stat.S_IXOTH == stat.S_IXOTH: |
85 |
found_files.append(l) |
86 |
except Exception as ex: |
87 |
- logger.debug(yellow('Exception during collecting libraries: %s' %str(ex))) |
88 |
+ logger.debug(yellow('Exception during collecting libraries: ' + blue('%s') %str(ex))) |
89 |
|
90 |
|
91 |
if found_directories: |
92 |
@@ -219,7 +219,7 @@ def collect_binaries_from_dir(dirs, mask, logger): |
93 |
prv & stat.S_IXOTH == stat.S_IXOTH: |
94 |
found_files.append(l) |
95 |
except Exception as e: |
96 |
- logger.debug(yellow('Exception during binaries collecting: %s' %str(e))) |
97 |
+ logger.debug(yellow('Exception during binaries collecting: '+blue('%s') %str(e))) |
98 |
|
99 |
if found_directories: |
100 |
found_files += collect_binaries_from_dir(found_directories, mask, logger) |
101 |
@@ -240,7 +240,7 @@ if __name__ == '__main__': |
102 |
libraries, la_libraries, libraries_links, symlink_pairs = collect_libraries_from_dir(lib_dirs, masked_dirs, logging) |
103 |
binaries = collect_binaries_from_dir(bin_dirs, masked_dirs, logging) |
104 |
|
105 |
- print 'Found: %i binaries and %i libraries.' %(len(binaries), len(libraries)) |
106 |
+ logging.debug('Found: %i binaries and %i libraries.' %(len(binaries), len(libraries))) |
107 |
|
108 |
|
109 |
|
110 |
|
111 |
diff --git a/pym/gentoolkit/revdep_rebuild/rebuild.py b/pym/gentoolkit/revdep_rebuild/rebuild.py |
112 |
index ef3a476..f77d98c 100644 |
113 |
--- a/pym/gentoolkit/revdep_rebuild/rebuild.py |
114 |
+++ b/pym/gentoolkit/revdep_rebuild/rebuild.py |
115 |
@@ -32,7 +32,7 @@ from settings import DEFAULTS |
116 |
|
117 |
|
118 |
APP_NAME = sys.argv[0] |
119 |
-VERSION = '0.1-r6' |
120 |
+VERSION = '0.1-r7' |
121 |
|
122 |
__productname__ = "revdep-ng" |
123 |
|
124 |
@@ -232,5 +232,5 @@ def main(settings=None, logger=None): |
125 |
'again or manually emerge given packages.') |
126 |
|
127 |
success = rebuild(logger, assigned, settings) |
128 |
- logger.debug("rebuild return code =", success) |
129 |
+ logger.debug("rebuild return code = %i" %success) |
130 |
return success |