|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#!/usr/bin/env python
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
import re
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
import os
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
import sys
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
import exceptions
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
import rpm
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
import select
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
import subprocess
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#------------------------------------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
debug = False
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
verbose = False
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
exclude_rpms = ['glibc']
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
root = '/var/tmp/freeradius-2.0.2-1.fc8-root-jdennis/usr/lib/freeradius'
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
modules = [
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_acctlog.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_acct_unique.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_always.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_attr_filter.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_attr_rewrite.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_chap.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_checkval.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_copy_packet.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_counter.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_dbm.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_detail.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_digest.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_gtc.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_leap.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_md5.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_mschapv2.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_peap.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_sim.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_tls.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_tnc.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_eap_ttls.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_exec.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_expiration.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_expr.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_fastusers.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_files.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_ippool.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_krb5.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_ldap.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_logintime.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_mschap.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_otp.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_pam.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_pap.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_passwd.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_perl.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_policy.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_preprocess.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_python.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_radutmp.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_realm.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_sqlcounter.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_sqlippool.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_sql_log.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_sql_mysql.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_sql_postgresql.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_sql.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_sql_unixodbc.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'rlm_unix.so',
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
]
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
module_paths = [os.path.join(root,x) for x in modules]
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#------------------------------------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_rpm_nvr_from_header(hdr):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
'Given an RPM header return the package NVR as a string'
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
name = hdr['name']
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
version = hdr['version']
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
release = hdr['release']
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return "%s-%s-%s" % (name, version, release)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_rpm_hdr_by_file_path(path):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if path is None:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
hdr = None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
try:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
ts = rpm.ts()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
mi = ts.dbMatch(rpm.RPMTAG_BASENAMES, path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for hdr in mi: break
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
except Exception, e:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
print >> sys.stderr, "failed to retrieve rpm hdr for %s, %s" %(path, e)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
hdr = None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return hdr
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_rpm_nvr_by_file_path(path):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if path is None:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
hdr = get_rpm_hdr_by_file_path(path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if not hdr:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
print >> sys.stderr, "failed to retrieve rpm info for %s" %(path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
nvr = get_rpm_nvr_from_header(hdr)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return nvr
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_rpm_name_by_file_path(path):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if path is None:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
hdr = get_rpm_hdr_by_file_path(path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if not hdr:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
print >> sys.stderr, "failed to retrieve rpm info for %s" %(path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
name = hdr['name']
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return name
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#------------------------------------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
class CmdError(exceptions.Exception):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __init__(self, errno, msg):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.errno = errno
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.msg = msg
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
class Command:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __init__(self, cmd):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.cmd = cmd
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.sub_process = None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.bufsize = 1024
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stdout_buf = ''
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stderr_buf = ''
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stdout_lines = []
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stderr_lines = []
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def run(self, stdout_callback=None, stderr_callback=None):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.sub_process = subprocess.Popen(self.cmd, \
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, \
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
close_fds=True, shell=True)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stdout = self.sub_process.stdout
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stderr = self.sub_process.stderr
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
read_watch = [self.stdout, self.stderr]
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
while read_watch:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
readable = select.select(read_watch, [], [])[0]
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for fd in readable:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if fd == self.stdout:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
data = os.read(fd.fileno(), self.bufsize)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if not data:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
read_watch.remove(fd)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stdout_buf += data
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for line in self.burst_lines('stdout_buf'):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if stdout_callback: stdout_callback(line)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stdout_lines.append(line)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if fd == self.stderr:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
data = os.read(fd.fileno(), self.bufsize)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if not data:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
read_watch.remove(fd)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stderr_buf += data
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for line in self.burst_lines('stderr_buf'):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if stdout_callback: stderr_callback(line)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.stderr_lines.append(line)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.returncode = self.sub_process.wait()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if self.returncode:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
raise CmdError(self.returncode, "cmd \"%s\"\nreturned status %d\n%s" % (self.cmd, self.returncode, ''.join(self.stderr_lines)))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return self.returncode
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def burst_lines(self, what):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
buf = getattr(self, what)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
start = 0
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
end = buf.find('\n', start)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
while end >= 0:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
end += 1 # include newline
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
line = buf[start:end]
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
yield line
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
start = end
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
end = buf.find('\n', start)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
buf = buf[start:]
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
setattr(self, what, buf)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#------------------------------------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
class RPM_Prop:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __init__(self, path=None, name=None):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.name = name
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.paths = {}
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if path:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.register_path(path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if not self.name:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.name = get_rpm_name_by_file_path(path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __str__(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return "name=%s paths=%s" % (self.name, ','.join(self.paths.keys()))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def register_path(self, path, name=None):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if debug: print "%s.register_path: path=%s" % (self.__class__.__name__, path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return self.paths.setdefault(path, path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
class RPM_Collection:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __init__(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.names = {}
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.paths = {}
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __str__(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
text = ''
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
names = self.get_names()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for name in names:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
text += "%s: %s\n" % (name, self.names[name])
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return text
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def register_path(self, path):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if debug: print "%s.register_path: path=%s" % (self.__class__.__name__, path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
rpm_prop = self.paths.setdefault(path, RPM_Prop(path=path))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.names.setdefault(rpm_prop.name, rpm_prop)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return rpm_prop
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_names(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
names = self.names.keys()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
names.sort()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return names
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
class SO_File:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __init__(self, name=None, path=None):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.name = name
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.path = path
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.rpm = None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __str__(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if self.rpm:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
rpm_name = self.rpm.name
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
rpm_name = None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return "name=%s rpm=%s" % (self.name, rpm_name)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
class SO_Collection:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __init__(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.names = {}
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.paths = {}
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __str__(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
text = ''
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
names = self.get_names()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for name in names:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
text += "%s: %s\n" % (name, self.names[name])
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return text
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def register_path(self, path, name=None):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if debug: print "%s.register_path: path=%s" % (self.__class__.__name__, path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_prop = self.paths.setdefault(path, SO_File(name, path=path))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.names.setdefault(name, so_prop)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return so_prop
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_names(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
names = self.names.keys()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
names.sort()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return names
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
class LoadableModule:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __init__(self, path, name=None):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if name is None:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
name = os.path.basename(path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.name = name
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.path = path
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.rpms = RPM_Collection()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.sos = SO_Collection()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.get_so_libs()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def __str__(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
text = '%s\n' % (self.name)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
text += " RPM's: %s\n" % (','.join(self.rpms.get_names()))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
text += " SO's: %s\n" % (','.join(self.sos.get_names()))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return text
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_so_libs(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
cmd = 'ldd %s' % (self.path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_re = re.compile(r'^\s*(\S+)\s+=>\s+(\S+)')
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
c = Command(cmd)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
status = c.run()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for line in c.stdout_lines:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
line = line.strip()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#print line
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
match = so_re.search(line)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if match:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_name = match.group(1)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if match.group(2).startswith('/'):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_path = match.group(2)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_path = None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if so_path:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_props = self.sos.register_path(so_path, so_name)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
rpm_props = self.rpms.register_path(so_props.path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_props.rpm = rpm_props
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
so_props = None
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if verbose: print "found so='%s' %s" % (so_name, so_props)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def register_so(self, so):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if debug: print "%s.register_so: so=%s" % (self.__class__.__name__, so)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.sos.setdefault(so, so)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
self.names.setdefault(so.name, so)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return so
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
def get_sos(self):
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
sos = self.sos.keys()
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
sos.sort(lambda a,b: cmp(a.name, b.name))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
return sos
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#------------------------------------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
#------------------------------------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
lms = []
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for module_path in module_paths[:]:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
lm = LoadableModule(module_path)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
lms.append(lm)
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for lm in lms:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
rpms = [x for x in lm.rpms.get_names() if x not in exclude_rpms]
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
if rpms:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
print lm.name
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
print ' %s' % (','.join(rpms))
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
print "--------------"
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
for lm in lms:
|
|
![](https://seccdn.libravatar.org/avatar/2a8383942cc48ebef36e44dd7300ead1d3d45bec27eae3b6391e681bf8b3502a?s=16&d=retro) |
ccd23a4 |
print lm
|