def find_node(node,name)
if node.find_first(name)
return node
else
if node.child?
child_node = node.child
# new_node = find_node(child_node,name)
begin
return find_node(child_node,name)
if child_node.next?
child_node=child_node.next
end
end while child_node.next?
end
end
end
def patch_scriptlet(desc_file,scriptlet_file)
puts "Patching the file #{desc_file} with #{scriptlet_file}"
xmldesc = XML::Document.file(desc_file)
xmlscript = XML::Document.file(scriptlet_file)
scriptroot = xmlscript.root
descroot = xmldesc.root
if scriptroot.child?
if_nodeset = scriptroot.find('if')
puts if_nodeset.length
if_nodeset.each do |node_item|
if node_item['distro'].chomp==Pkgvars.get_distro.chomp && node_item['version']==nil || node_item['distro'].chomp==Pkgvars.get_distro.chomp && node_item['version']==Pkgvars.get_version || node_item['distro'].chomp==nil && node_item['version']==Pkgvars.get_version
if node_item.child?
child_node = node_item.child
begin
parent_node = find_node(descroot,child_node.name)
if(parent_node!=nil)
puts parent_node.name
parent_node << child_node
end
if child_node.next?
child_node=child_node.next
end
end while child_node.next?
end
end
end
end
puts "writing to file"
format = true
xmldesc.save("#{get_homedir}/.apbd/patched.xml", format)
end