for envkey, envval in app.env.iteritems():
envval = app._replace_paths(envval)
node.env[envkey].append(envval)
+
+ if app.rpmFusion:
+ node.rpmFusion = True
def connect_node_netpipe(testbed_instance, node_guid, netpipe_guid):
node = testbed_instance._elements[node_guid]
"flags": Attribute.DesignOnly,
"validation_function": validation.is_string
}),
+ "rpm-fusion": dict({
+ "name": "rpmFusion",
+ "help": "True if required packages can be found in the RpmFusion repository",
+ "type": Attribute.BOOL,
+ "flags": Attribute.DesignOnly,
+ "value": False,
+ "validation_function": validation.is_bool
+ }),
"sources": dict({
"name": "sources",
"help": "Space-separated list of regular files to be deployed in the working path prior to building. "
"configure_function": configure_application,
"box_attributes": ["command", "sudo", "stdin",
"depends", "build-depends", "build", "install",
- "sources" ],
+ "sources", "rpm-fusion" ],
"connector_types": ["node"],
"traces": ["stdout", "stderr", "buildlog"]
}),
"create_function": create_dependency,
"preconfigure_function": configure_dependency,
"box_attributes": ["depends", "build-depends", "build", "install",
- "sources" ],
+ "sources", "rpm-fusion" ],
"connector_types": ["node"],
"traces": ["buildlog"]
}),
DEPENDS_PIDFILE = '/tmp/nepi-depends.pid'
DEPENDS_LOGFILE = '/tmp/nepi-depends.log'
+ RPM_FUSION_URL = 'http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm'
+ RPM_FUSION_URL_F12 = 'http://download1.rpmfusion.org/free/fedora/releases/12/Everything/x86_64/os/rpmfusion-free-release-12-1.noarch.rpm'
def __init__(self, api=None):
if not api:
self.required_packages = set()
self.required_vsys = set()
self.pythonpath = []
+ self.rpmFusion = False
self.env = collections.defaultdict(list)
# Testbed-derived attributes
pidfile = self.DEPENDS_PIDFILE
logfile = self.DEPENDS_LOGFILE
+ # If we need rpmfusion, we must install the repo definition and the gpg keys
+ if self.rpmFusion:
+ if self.operatingSystem == 'f12':
+ # Fedora 12 requires a different rpmfusion package
+ RPM_FUSION_URL = self.RPM_FUSION_URL_F12
+ else:
+ # This one works for f13+
+ RPM_FUSION_URL = self.RPM_FUSION_URL
+
+ rpmFusion = (
+ '( rpm -q $(rpm -q -p %(RPM_FUSION_URL)s) || rpm -i %(RPM_FUSION_URL)s ) &&'
+ ) % {
+ 'RPM_FUSION_URL' : RPM_FUSION_URL
+ }
+ else:
+ rpmFusion = ''
+
# Start process in a "daemonized" way, using nohup and heavy
# stdin/out redirection to avoid connection issues
(out,err),proc = rspawn.remote_spawn(
- "( yum -y install %(packages)s && echo SUCCESS || echo FAILURE )" % {
+ "( %(rpmfusion)s yum -y install %(packages)s && echo SUCCESS || echo FAILURE )" % {
'packages' : ' '.join(self.required_packages),
+ 'rpmfusion' : rpmFusion,
},
pidfile = pidfile,
stdout = logfile,