Add debug logging to dependency handling
Stuart Prescott authored 1 year, 7 months ago
Stefano Rivera committed 1 year, 7 months ago
202 | 202 | name = req_d['name'] |
203 | 203 | details = data.get(name.lower()) |
204 | 204 | if details: |
205 | log.debug("dependency: module seems to be installed") | |
205 | 206 | for item in details: |
206 | 207 | if version and version not in item.get('versions', version): |
207 | 208 | # rule doesn't match version, try next one |
208 | 209 | continue |
209 | 210 | if not item['dependency']: |
211 | log.debug("dependency: requirement ignored") | |
210 | 212 | return # this requirement should be ignored |
211 | 213 | if item['dependency'].endswith(')'): |
212 | 214 | # no need to translate versions if version is hardcoded in |
213 | 215 | # Debian dependency |
216 | log.debug("dependency: requirement already has hardcoded version") | |
214 | 217 | return item['dependency'] + env_marker_alts |
215 | 218 | if req_d['operator'] == '==' and req_d['version'].endswith('*'): |
216 | 219 | # Translate "== 1.*" to "~= 1.0" |
217 | 220 | req_d['operator'] = '~=' |
218 | 221 | req_d['version'] = req_d['version'].replace('*', '0') |
222 | log.debug("dependency: translated wildcard version to semver limit") | |
219 | 223 | if req_d['version'] and (item['standard'] or item['rules']) and\ |
220 | 224 | req_d['operator'] not in (None, '!='): |
221 | 225 | o = _translate_op(req_d['operator']) |
232 | 236 | v2 = _translate(_max_compatible(req_d['version']), item['rules'], item['standard']) |
233 | 237 | d += ", %s (%s %s)%s" % ( |
234 | 238 | item['dependency'], o2, v2, env_marker_alts) |
239 | log.debug("dependency: constructed version") | |
235 | 240 | return d |
236 | 241 | elif accept_upstream_versions and req_d['version'] and \ |
237 | 242 | req_d['operator'] not in (None,'!='): |
248 | 253 | d += ", %s (%s %s)%s" % ( |
249 | 254 | item['dependency'], o2, |
250 | 255 | _max_compatible(req_d['version']), env_marker_alts) |
256 | log.debug("dependency: constructed upstream version") | |
251 | 257 | return d |
252 | 258 | else: |
253 | 259 | if item['dependency'] in bdep: |
254 | 260 | if None in bdep[item['dependency']] and bdep[item['dependency']][None]: |
261 | log.debug("dependency: included in build-deps with limits ") | |
255 | 262 | return "{} ({}){}".format( |
256 | 263 | item['dependency'], bdep[item['dependency']][None], |
257 | 264 | env_marker_alts) |
258 | 265 | # if arch in bdep[item['dependency']]: |
259 | 266 | # TODO: handle architecture specific dependencies from build depends |
260 | 267 | # (current architecture is needed here) |
268 | log.debug("dependency: included in build-deps") | |
261 | 269 | return item['dependency'] + env_marker_alts |
262 | 270 | |
263 | 271 | # search for Egg metadata file or directory (using dpkg -S) |
283 | 291 | elif not result: |
284 | 292 | log.debug('dpkg -S did not find package for %s', name) |
285 | 293 | else: |
294 | log.debug('dependency: found a result with dpkg -S') | |
286 | 295 | return result.pop() + env_marker_alts |
287 | 296 | else: |
288 | 297 | log.debug('dpkg -S did not find package for %s: %s', name, stderr) |