Guest User

Untitled

a guest
Mar 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.49 KB | None | 0 0
  1. Fri Mar 9 16:38:07 2018 +0300 996fd38a Patched "delete-runtime-dependency-ciksemel" [Suleyman Poyraz]
  2. diff --git a/inary/analyzer/urgent-packages.py b/inary/analyzer/urgent-packages.py
  3. index 02712542..0e772ddc 100644
  4. --- a/inary/analyzer/urgent-packages.py
  5. +++ b/inary/analyzer/urgent-packages.py
  6. @@ -10,7 +10,7 @@
  7. # Please read the COPYING file.
  8. #
  9.  
  10. -import ciksemel
  11. +import xml.dom.minidom as minidom
  12. import bz2
  13. import sys
  14. import os
  15. @@ -28,22 +28,22 @@ def loadFile(_file):
  16.  
  17. def getXmlData(_file):
  18. if os.path.exists(_file):
  19. - return ciksemel.parse(_file)
  20. + return minidom.parse(_file).documentElement
  21. elif os.path.exists("{}.bz2".format(_file)):
  22. indexdata = bz2.decompress(open("{}.bz2".format(_file)).read())
  23. - return ciksemel.parseString(indexdata)
  24. + return minidom.parseString(indexdata)
  25. else:
  26. print("{} not found".format(indexfile))
  27. sys.exit(1)
  28.  
  29. def fillPackageDict(tag, _hasSpecFile, packageOf):
  30. - PackagePartOf = tag.getTagData("PartOf")
  31. - PackageName = tag.getTagData("Name")
  32. + PackagePartOf = tag.getElementsByTagName("PartOf")[0]
  33. + PackageName = tag.getElementsByTagName("Name")[0]
  34.  
  35. if _hasSpecFile:
  36. - PackagePackagerName = tag.getTag("Packager").getTagData("Name")
  37. + PackagePackagerName = tag.getElementsByTagName("Packager")[0].getElementsByTagName("Name")[0].firstChild.data
  38. else:
  39. - PackagePackagerName = tag.getTag("Source").getTag("Packager").getTagData("Name")
  40. + PackagePackagerName = tag.getElementsByTagName("Source")[0].getElementsByTagName("Packager")[0].getElementsByTagName("Name")[0].firstChild.data
  41.  
  42. fullpath = "{0}/{1}".format(PackagePartOf.replace(".", "/"), PackageName)
  43.  
  44. @@ -53,13 +53,13 @@ def fillPackageDict(tag, _hasSpecFile, packageOf):
  45.  
  46. def parseXmlData(_index):
  47. packageOf = {}
  48. - hasSpecFile = _index.getTag("SpecFile")
  49. + hasSpecFile = _index.getElementsByTagName("SpecFile")
  50. if hasSpecFile:
  51. - for i in _index.tags("SpecFile"):
  52. - parent = i.getTag("Source")
  53. + for i in hasSpecFile:
  54. + parent = i.getElementsByTagName("Source")[0]
  55. fillPackageDict(parent, hasSpecFile, packageOf)
  56. else:
  57. - for parent in _index.tags("Package"):
  58. + for parent in _index.getElementsByTagName("Package"):
  59. fillPackageDict(parent, hasSpecFile, packageOf)
  60.  
  61. return packageOf
  62. @@ -93,4 +93,3 @@ def urgent_packages(index, packages):
  63. # print("-> %s" % i)
  64. # for k in requiredPackages[i]:
  65. # print("\t%s" % k)
  66. -
  67. diff --git a/inary/data/specfile.py b/inary/data/specfile.py
  68. index 84bfdffa..91edfc00 100644
  69. --- a/inary/data/specfile.py
  70. +++ b/inary/data/specfile.py
  71. @@ -22,7 +22,10 @@ _ = __trans.gettext
  72.  
  73. # standard python modules
  74. import os.path
  75. -import ciksemel
  76. +
  77. +#for compability cross platform package managing
  78. +import xml.dom.minidom as minidom
  79. +from xml.parsers.expat import ExpatError
  80.  
  81. # inary modules
  82. import inary.sxml.xmlfile as xmlfile
  83. @@ -171,8 +174,8 @@ class Source(metaclass= autoxml.autoxml):
  84. t_License = [ [autoxml.String], autoxml.mandatory]
  85. t_IsA = [ [autoxml.String], autoxml.optional]
  86. t_PartOf = [autoxml.String, autoxml.optional]
  87. - t_Summary = [autoxml.LocalText, autoxml.mandatory] ## FIXME autoxml.LocalText should be typed with bytes
  88. - t_Description = [autoxml.LocalText, autoxml.mandatory]
  89. + t_Summary = [autoxml.LocalText, autoxml.mandatory]
  90. + t_Description = [autoxml.LocalText, autoxml.mandatory]
  91. t_Icon = [ autoxml.String, autoxml.optional]
  92. t_Archive = [ [Archive], autoxml.mandatory, "Archive" ]
  93. t_AdditionalFiles = [ [AdditionalFile], autoxml.optional]
  94. @@ -422,10 +425,10 @@ class SpecFile(xmlfile.XmlFile, metaclass=autoxml.autoxml):
  95.  
  96. def _set_i18n(self, tag, inst):
  97. try:
  98. - for summary in tag.tags("Summary"):
  99. - inst.summary[summary.getAttribute("xml:lang")] = summary.firstChild().data()
  100. - for desc in tag.tags("Description"):
  101. - inst.description[desc.getAttribute("xml:lang")] = desc.firstChild().data()
  102. + for summary in tag.getElementsByTagName("Summary"):
  103. + inst.summary[summary.getAttribute("xml:lang")] = summary.childNodes[0].data
  104. + for desc in tag.getElementsByTagName("Description"):
  105. + inst.description[desc.getAttribute("xml:lang")] = desc.childNodes[0].data
  106. except AttributeError:
  107. raise Error(_("translations.xml file is badly formed."))
  108.  
  109. @@ -434,19 +437,21 @@ class SpecFile(xmlfile.XmlFile, metaclass=autoxml.autoxml):
  110. if not os.path.exists(path):
  111. return
  112. try:
  113. - doc = ciksemel.parse(path)
  114. - except Exception as e:
  115. - raise Error(_("File '{}' has invalid XML").format(path) )
  116. + doc = minidom.parse(path).documentElement
  117. + except ExpatError as err:
  118. + raise Error(_("File '{0}' has invalid XML: {1}").format(path, err) )
  119.  
  120. - if doc.getTag("Source").getTagData("Name") == self.source.name:
  121. + if doc.getElementsByTagName("Source")[0].getElementsByTagName("Name")[0].firstChild.data == self.source.name:
  122. # Set source package translations
  123. - self._set_i18n(doc.getTag("Source"), self.source)
  124. + self._set_i18n(doc.getElementsByTagName("Source")[0], self.source)
  125.  
  126. - for pak in doc.tags("Package"):
  127. - for inst in self.packages:
  128. - if inst.name == pak.getTagData("Name"):
  129. - self._set_i18n(pak, inst)
  130. - break
  131. + #FIXME: How can we fix it
  132. + for pak in doc.childNodes:
  133. + if pak.nodeType == pak.ELEMENT_NODE and pak.tagName == "Package"
  134. + for inst in self.packages:
  135. + if inst.name == pak.getElementsByTagName("Name")[0].firstChild.data:
  136. + self._set_i18n(pak, inst)
  137. + break
  138.  
  139. def __str__(self):
  140. s = _('Name: {0}, version: {1}, release: {2}\n').format(
  141. diff --git a/inary/db/componentdb.py b/inary/db/componentdb.py
  142. index 370cafe9..28e6a10d 100644
  143. --- a/inary/db/componentdb.py
  144. +++ b/inary/db/componentdb.py
  145. @@ -45,19 +45,19 @@ class ComponentDB(lazydb.LazyDB):
  146.  
  147. def __generate_packages(self, doc):
  148. components = {}
  149. - for pkg in doc.tags("Package"):
  150. - components.setdefault(pkg.getTagData("PartOf"), []).append(pkg.getTagData("Name"))
  151. + for pkg in doc.getElementsByTagName("Package"):
  152. + components.setdefault(pkg.getElementsByTagName("PartOf")[0].firstChild.data, []).append(pkg.getElementsByTagName("Name")[0].firstChild.data)
  153. return components
  154.  
  155. def __generate_sources(self, doc):
  156. components = {}
  157. - for spec in doc.tags("SpecFile"):
  158. - src = spec.getTag("Source")
  159. - components.setdefault(src.getTagData("PartOf"), []).append(src.getTagData("Name"))
  160. + for spec in doc.getElementsByTagName("SpecFile"):
  161. + src = spec.getElementsByTagName("Source")[0]
  162. + components.setdefault(src.getElementsByTagName("PartOf")[0].firstChild.data, []).append(src.getElementsByTagName("Name")[0].firstChild.data)
  163. return components
  164.  
  165. def __generate_components(self, doc):
  166. - return dict([(x.getTagData("Name"), x.toString()) for x in doc.tags("Component")])
  167. + return dict([(x.getElementsByTagName("Name")[0].firstChild.data, x.toxml()) for x in doc.getElementsByTagName("Component")])
  168.  
  169. def has_component(self, name, repo = None):
  170. return self.cdb.has_item(name, repo)
  171. @@ -106,7 +106,7 @@ class ComponentDB(lazydb.LazyDB):
  172.  
  173. component = Component.Component()
  174. component.parse(self.cdb.get_item(component_name))
  175. -
  176. +
  177. for repo in inary.db.repodb.RepoDB().list_repos():
  178. try:
  179. component.packages.extend(self.cpdb.get_item(component_name, repo))
  180. @@ -117,11 +117,11 @@ class ComponentDB(lazydb.LazyDB):
  181. component.sources.extend(self.csdb.get_item(component_name, repo))
  182. except Exception: #FIXME: what exception could we catch here, replace with that.
  183. pass
  184. -
  185. +
  186. return component
  187.  
  188. # Returns packages of given component from given repo or first found component's packages in repo
  189. - # order if repo is None.
  190. + # order if repo is None.
  191. # If walk is True than also the sub components' packages are returned
  192. def get_packages(self, component_name, repo=None, walk=False):
  193.  
  194. @@ -162,7 +162,7 @@ class ComponentDB(lazydb.LazyDB):
  195. return packages
  196.  
  197. # Returns sources of given component from given repo or first found component's packages in repo
  198. - # order if repo is None.
  199. + # order if repo is None.
  200. # If walk is True than also the sub components' packages are returned
  201. def get_sources(self, component_name, repo=None, walk=False):
  202.  
  203. @@ -201,4 +201,3 @@ class ComponentDB(lazydb.LazyDB):
  204. pass
  205.  
  206. return sources
  207. -
  208. diff --git a/inary/db/groupdb.py b/inary/db/groupdb.py
  209. index 97beaf8c..252133a3 100644
  210. --- a/inary/db/groupdb.py
  211. +++ b/inary/db/groupdb.py
  212. @@ -44,15 +44,15 @@ class GroupDB(lazydb.LazyDB):
  213.  
  214. def __generate_components(self, doc):
  215. groups = {}
  216. - for c in doc.tags("Component"):
  217. - group = c.getTagData("Group")
  218. + for c in doc.getElementsByTagName("Component"):
  219. + group = c.getElementsByTagName("Group")[0]
  220. if not group:
  221. group = "unknown"
  222. - groups.setdefault(group, []).append(c.getTagData("Name"))
  223. + groups.setdefault(group.firstChild.data, []).append(c.getElementsByTagName("Name")[0].firstChild.data)
  224. return groups
  225.  
  226. def __generate_groups(self, doc):
  227. - return dict([(x.getTagData("Name"), x.toString()) for x in doc.tags("Group")])
  228. + return dict([(x.getElementsByTagName("Name")[0].firstChild.data, x.toxml()) for x in doc.getElementsByTagName("Group")])
  229.  
  230. def has_group(self, name, repo = None):
  231. return self.gdb.has_item(name, repo)
  232. diff --git a/inary/db/installdb.py b/inary/db/installdb.py
  233. index 25d0c698..b09ccaed 100644
  234. --- a/inary/db/installdb.py
  235. +++ b/inary/db/installdb.py
  236. @@ -19,7 +19,8 @@ import gettext
  237. __trans = gettext.translation('inary', fallback=True)
  238. _ = __trans.gettext
  239.  
  240. -import ciksemel
  241. +import xml.dom.minidom as minidom
  242. +from xml.parsers.expat import ExpatError
  243.  
  244. # INARY
  245. import inary
  246. @@ -67,7 +68,7 @@ class InstallDB(lazydb.LazyDB):
  247. def init(self):
  248. self.installed_db = self.__generate_installed_pkgs()
  249. self.rev_deps_db = self.__generate_revdeps()
  250. - self.installed_extra = self.__generate_installed_extra()
  251. + self.installed_extra = self.__generate_installed_extra()
  252.  
  253. def __generate_installed_extra(self):
  254. ie = []
  255. @@ -93,8 +94,8 @@ class InstallDB(lazydb.LazyDB):
  256. def __add_to_revdeps(self, package, revdeps):
  257. metadata_xml = os.path.join(self.package_path(package), ctx.const.metadata_xml)
  258. try:
  259. - meta_doc = ciksemel.parse(metadata_xml)
  260. - pkg = meta_doc.getTag("Package")
  261. + meta_doc = minidom.parse(metadata_xml).documentElement
  262. + pkg = meta_doc.getElementsByTagName("Package")[0]
  263. except:
  264. pkg = None
  265.  
  266. @@ -105,15 +106,15 @@ class InstallDB(lazydb.LazyDB):
  267. del self.installed_db[package]
  268. return
  269.  
  270. - deps = pkg.getTag('RuntimeDependencies')
  271. + deps = pkg.getElementsByTagName('RuntimeDependencies')
  272. if deps:
  273. - for dep in deps.tags("Dependency"):
  274. - revdep = revdeps.setdefault(dep.firstChild().data(), {})
  275. - revdep[package] = dep.toString()
  276. - for anydep in deps.tags("AnyDependency"):
  277. - for dep in anydep.tags("Dependency"):
  278. - revdep = revdeps.setdefault(dep.firstChild().data(), {})
  279. - revdep[package] = anydep.toString()
  280. + for dep in deps.getElementsByTagName("Dependency"):
  281. + revdep = revdeps.setdefault(dep.childNodes[0].data, {})
  282. + revdep[package] = dep.toxml('utf-8')
  283. + for anydep in deps.getElementsByTagName("AnyDependency"):
  284. + for dep in anydep.getElementsByTagName ("Dependency"):
  285. + revdep = revdeps.setdefault(dep.firstChild.data, {})
  286. + revdep[package] = anydep.toxml('utf-8')
  287.  
  288. def __generate_revdeps(self):
  289. revdeps = {}
  290. @@ -144,37 +145,34 @@ class InstallDB(lazydb.LazyDB):
  291. return found
  292.  
  293. def __get_version(self, meta_doc):
  294. - history = meta_doc.getTag("Package").getTag("History")
  295. - version = history.getTag("Update").getTagData("Version")
  296. - release = history.getTag("Update").getAttribute("release")
  297. -
  298. + history = meta_doc.getElementsByTagName("Package")[0].getElementsByTagName("History")[0].firstChild.data
  299. + version = history.getElementsByTagName("Update")[0].getElementsByTagName("Version")[0].firstChild.data
  300. + release = history.getElementsByTagName("Update")[0].getAttribute("release")[0].firstChild.data
  301. # TODO Remove None
  302. return version, release, None
  303.  
  304. def __get_distro_release(self, meta_doc):
  305. - distro = meta_doc.getTag("Package").getTagData("Distribution")
  306. - release = meta_doc.getTag("Package").getTagData("DistributionRelease")
  307. -
  308. + distro = meta_doc.getElementsByTagName("Package")[0].getElementsByTagName("Distribution")[0].firstChild.data
  309. + release = meta_doc.getElementsByTagName("Package")[0].getElementsByTagName("DistributionRelease")[0].firstChild.data
  310. return distro, release
  311.  
  312. def __get_install_tar_hash(self, meta_doc):
  313. - hash = meta_doc.getTag("Package").getTagData("InstallTarHash")
  314. -
  315. + hash = meta_doc.getElementsByTagName("Package")[0].getElementsByTagName("InstallTarHash")[0].firstChild.data
  316. return hash
  317.  
  318. def get_install_tar_hash(self, package):
  319. metadata_xml = os.path.join(self.package_path(package), ctx.const.metadata_xml)
  320. - meta_doc = ciksemel.parse(metadata_xml)
  321. + meta_doc = minidom.parse(metadata_xml).documentElement
  322. return self.__get_install_tar_hash(meta_doc)
  323.  
  324. def get_version_and_distro_release(self, package):
  325. metadata_xml = os.path.join(self.package_path(package), ctx.const.metadata_xml)
  326. - meta_doc = ciksemel.parse(metadata_xml)
  327. + meta_doc = minidom.parse(metadata_xml).documentElement
  328. return self.__get_version(meta_doc) + self.__get_distro_release(meta_doc)
  329.  
  330. def get_version(self, package):
  331. metadata_xml = os.path.join(self.package_path(package), ctx.const.metadata_xml)
  332. - meta_doc = ciksemel.parse(metadata_xml)
  333. + meta_doc = minidom.parse(metadata_xml).documentElement
  334. return self.__get_version(meta_doc)
  335.  
  336. def get_files(self, package):
  337. @@ -240,11 +238,12 @@ class InstallDB(lazydb.LazyDB):
  338. return info
  339.  
  340. def __make_dependency(self, depStr):
  341. - node = ciksemel.parseString(depStr)
  342. + node = minidom.parseString(depStr).documentElement
  343. dependency = inary.analyzer.dependency.Dependency()
  344. - dependency.package = node.firstChild().data()
  345. + dependency.package = node.childNodes[0]
  346. + #FIXME: Bir sakatlık çıkacak
  347. if node.attributes():
  348. - attr = node.attributes()[0]
  349. + attr = node.attributes)()[0]
  350. dependency.__dict__[str(attr)] = node.getAttribute(str(attr))
  351. return dependency
  352.  
  353. diff --git a/inary/db/packagedb.py b/inary/db/packagedb.py
  354. index 388ea201..62febd63 100644
  355. --- a/inary/db/packagedb.py
  356. +++ b/inary/db/packagedb.py
  357. @@ -18,7 +18,8 @@ import datetime
  358. __trans = gettext.translation('inary', fallback=True)
  359. _ = __trans.gettext
  360.  
  361. -import ciksemel
  362. +import xml.dom.minidom as minidom
  363. +from xml.parsers.expat import ExpatError
  364.  
  365. import inary.db
  366. import inary.data.metadata as Metadata
  367. @@ -53,32 +54,36 @@ class PackageDB(lazydb.LazyDB):
  368. self.rpdb = inary.db.itembyrepo.ItemByRepo(self.__replaces)
  369.  
  370. def __generate_replaces(self, doc):
  371. - return [x.getTagData("Name") for x in doc.tags("Package") if x.getTagData("Replaces")]
  372. + for x in doc.getElementsByTagName("Package"):
  373. + if x.getElementsByTagName("Replaces")[0]]:
  374. + return x.getElementsByTagName("Name")[0].firstChild.data
  375.  
  376. def __generate_obsoletes(self, doc):
  377. - distribution = doc.getTag("Distribution")
  378. - obsoletes = distribution and distribution.getTag("Obsoletes")
  379. - src_repo = doc.getTag("SpecFile") is not None
  380. + distribution = doc.getElementsByTagName("Distribution")[0]
  381. + obsoletes = distribution and distribution.getElementsByTagName("Obsoletes")[0].firstChild.data
  382. + src_repo = doc.getElementsByTagName("SpecFile")[0].firstChild.data is not None
  383.  
  384. if not obsoletes or src_repo:
  385. return []
  386.  
  387. - return [x.firstChild().data() for x in obsoletes.tags("Package")]
  388. + return [x.childNodes[0].data for x in obsoletes.getElementsByTagName("Package")]
  389.  
  390. def __generate_packages(self, doc):
  391. pdict={}
  392. - for x in doc.tags("Package"):
  393. - pdict[x.getTagData("Name")]= gzip.zlib.compress(x.toString().encode('utf-8'))
  394. + for x in doc.getElementsByTagName("Package"):
  395. + pdict[x.getElementsByTagName("Name")[0].firstChild.data]= gzip.zlib.compress(x.toxml('utf-8'))
  396. return pdict
  397.  
  398. def __generate_revdeps(self, doc):
  399. revdeps = {}
  400. - for node in doc.tags("Package"):
  401. - name = node.getTagData('Name')
  402. - deps = node.getTag('RuntimeDependencies')
  403. - if deps:
  404. - for dep in deps.tags("Dependency"):
  405. - revdeps.setdefault(dep.firstChild().data(), set()).add((name, dep.toString()))
  406. + for node in doc.childNodes:
  407. + if node.nodeType == node.ELEMENT_NODE and node.tagName == "Package"
  408. + name = node.getElementsByTagName('Name')[0].firstChild.data
  409. + deps = node.getElementsByTagName('RuntimeDependencies')
  410. + if deps:
  411. + for dep in deps.getElementsByTagName("Dependency"):
  412. + revdeps.setdefault(dep.childNodes[0].data, set()).add((name, dep.toString()))
  413. +
  414. return revdeps
  415.  
  416. def has_package(self, name, repo=None):
  417. @@ -130,16 +135,16 @@ class PackageDB(lazydb.LazyDB):
  418. return found
  419.  
  420. def __get_version(self, meta_doc):
  421. - history = meta_doc.getTag("History")
  422. - version = history.getTag("Update").getTagData("Version")
  423. - release = history.getTag("Update").getAttribute("release")
  424. + history = meta_doc.getElementsByTagName("History")[0]
  425. + version = history.getElementsByTagName("Update")[0].getElementsByTagName("Version")[0].firstChild.data
  426. + release = history.getElementsByTagName("Update")[0].getAttribute["release"]
  427.  
  428. # TODO Remove None
  429. return version, release, None
  430.  
  431. def __get_distro_release(self, meta_doc):
  432. - distro = meta_doc.getTagData("Distribution")
  433. - release = meta_doc.getTagData("DistributionRelease")
  434. + distro = meta_doc.getElementsByTagName("Distribution")[0].firstChild.data
  435. + release = meta_doc.getElementsByTagName("DistributionRelease")[0].firstChild.data
  436.  
  437. return distro, release
  438.  
  439. @@ -147,14 +152,14 @@ class PackageDB(lazydb.LazyDB):
  440. if not self.has_package(name, repo):
  441. raise Exception(_('Package {} not found.').format(name))
  442.  
  443. - pkg_doc = ciksemel.parseString(self.pdb.get_item(name, repo))
  444. + pkg_doc = minidom.parseString(self.pdb.get_item(name, repo))
  445. return self.__get_version(pkg_doc) + self.__get_distro_release(pkg_doc)
  446.  
  447. def get_version(self, name, repo):
  448. if not self.has_package(name, repo):
  449. raise Exception(_('Package {} not found.').format(name))
  450.  
  451. - pkg_doc = ciksemel.parseString(self.pdb.get_item(name, repo))
  452. + pkg_doc = minidom.parseString(self.pdb.get_item(name, repo)).documentElement
  453. return self.__get_version(pkg_doc)
  454.  
  455. def get_package_repo(self, name, repo=None):
  456. @@ -175,11 +180,11 @@ class PackageDB(lazydb.LazyDB):
  457. packages = set()
  458. for repo in repodb.list_repos():
  459. doc = repodb.get_repo_doc(repo)
  460. - for package in doc.tags("Package"):
  461. - if package.getTagData("IsA"):
  462. - for node in package.tags("IsA"):
  463. - if node.firstChild().data() == isa:
  464. - packages.add(package.getTagData("Name"))
  465. + for package in doc.getElementsByTagName("Package"):
  466. + if package.getElementsByTagName("IsA"):
  467. + for node in package.getElementsByTagName("IsA"):
  468. + if node.childNodes[0].data == isa:
  469. + packages.add(package.getElementsByTagName("Name")[0].firstChild.data)
  470. return list(packages)
  471.  
  472. def get_rev_deps(self, name, repo=None):
  473. @@ -190,9 +195,10 @@ class PackageDB(lazydb.LazyDB):
  474.  
  475. rev_deps = []
  476. for pkg, dep in rvdb:
  477. - node = ciksemel.parseString(dep)
  478. + node = minidom.parseString(dep).documentElement
  479. dependency = inary.analyzer.dependency.Dependency()
  480. - dependency.package = node.firstChild().data()
  481. + dependency.package = node.firstChild.data
  482. + #FIXME
  483. if node.attributes():
  484. attr = node.attributes()[0]
  485. dependency.__dict__[attr] = node.getAttribute(attr)
  486. @@ -205,10 +211,10 @@ class PackageDB(lazydb.LazyDB):
  487.  
  488. for pkg_name in self.rpdb.get_list_item():
  489. xml = self.pdb.get_item(pkg_name, repo)
  490. - package = ciksemel.parseString(xml)
  491. - replaces_tag = package.getTag("Replaces")
  492. + package = minidom.parseString(xml).documentElement
  493. + replaces_tag = package.getElementsByTagName("Replaces")
  494. if replaces_tag:
  495. - for node in replaces_tag.tags("Package"):
  496. + for node in replaces_tag.getElementsByTagName("Package"):
  497. r = inary.relation.Relation()
  498. # XXX Is there a better way to do this?
  499. r.decode(node, [])
  500. diff --git a/inary/db/repodb.py b/inary/db/repodb.py
  501. index 1ed56b04..5aa219a9 100644
  502. --- a/inary/db/repodb.py
  503. +++ b/inary/db/repodb.py
  504. @@ -16,7 +16,8 @@ _ = __trans.gettext
  505.  
  506. import os
  507.  
  508. -import ciksemel
  509. +import xml.dom.minidom as minidom
  510. +from xml.parsers.expat import ExpatError
  511.  
  512. import inary
  513. import inary.uri
  514. @@ -47,33 +48,39 @@ class RepoOrder:
  515. repo_doc = self._get_doc()
  516.  
  517. try:
  518. - node = [x for x in repo_doc.tags("Repo")][-1]
  519. - repo_node = node.appendTag("Repo")
  520. - except IndexError:
  521. - repo_node = repo_doc.insertTag("Repo")
  522. + #FIXME:Burada bir sakatlık çıkacak
  523. + node = [x for x in repo_doc.getElementsByTagName("Repo")][-1]
  524. + repo_node = node.createElement("Repo")
  525. + except ExpatError as err:
  526. + raise("Can not created Repo tag: {}".format(err))
  527.  
  528. - name_node = repo_node.insertTag("Name")
  529. - name_node.insertData(repo_name)
  530. + name_node = repo_node.createElement("Name")
  531. + name_node.appendChild(node.createTextNode(repo_name))
  532. + repo_node.appendChild(name_node)
  533.  
  534. - url_node = repo_node.insertTag("Url")
  535. - url_node.insertData(repo_url)
  536. + url_node = repo_node.createElement("Url")
  537. + url_node.appendChild(node.createTextNode(repo_url))
  538. + repo_node.appendChild(url_node)
  539.  
  540. - name_node = repo_node.insertTag("Status")
  541. - name_node.insertData("active")
  542. + status_node = repo_node.createElement("Status")
  543. + status_node.appendChild(node.createTextNode("active"))
  544. + repo_node.appendChild(status_node)
  545.  
  546. - media_node = repo_node.insertTag("Media")
  547. - media_node.insertData(repo_type)
  548. + media_node = repo_node.createElement("Media")
  549. + media_node.appendChild(node.createTextNode(repo_type))
  550. + repo_node.appendChild(media_node)
  551.  
  552. self._update(repo_doc)
  553.  
  554. def set_status(self, repo_name, status):
  555. repo_doc = self._get_doc()
  556.  
  557. - for r in repo_doc.tags("Repo"):
  558. - if r.getTagData("Name") == repo_name:
  559. - status_node = r.getTag("Status")
  560. + for r in repo_doc.getElementsByTagName("Repo"):
  561. + if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
  562. + status_node = r.getElementsByTagName("Status")[0].firstChild.data
  563. + #FIXME: Program burda göt olacak
  564. if status_node:
  565. - status_node.firstChild().hide()
  566. + status_node.childNodes[0].hide()
  567. status_node.insertData(status)
  568. else:
  569. status_node = r.insertTag("Status")
  570. @@ -83,11 +90,11 @@ class RepoOrder:
  571.  
  572. def get_status(self, repo_name):
  573. repo_doc = self._get_doc()
  574. - for r in repo_doc.tags("Repo"):
  575. - if r.getTagData("Name") == repo_name:
  576. - status_node = r.getTag("Status")
  577. + for r in repo_doc.getElementsByTagName("Repo"):
  578. + if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
  579. + status_node = r.getElementsByTagName("Status").firstChild.data
  580. if status_node:
  581. - status = status_node.firstChild().data()
  582. + status = status_node.childNodes[0].data
  583. if status in ["active", "inactive"]:
  584. return status
  585. return "inactive"
  586. @@ -95,8 +102,8 @@ class RepoOrder:
  587. def remove(self, repo_name):
  588. repo_doc = self._get_doc()
  589.  
  590. - for r in repo_doc.tags("Repo"):
  591. - if r.getTagData("Name") == repo_name:
  592. + for r in repo_doc.getElementsByTagName("Repo"):
  593. + if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
  594. r.hide()
  595.  
  596. self._update(repo_doc)
  597. @@ -113,7 +120,7 @@ class RepoOrder:
  598.  
  599. def _update(self, doc):
  600. repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
  601. - open(repos_file, "w").write("{}\n".format(doc.toPrettyString()))
  602. + open(repos_file, "w").write("{}\n".format(doc.toprettyxml()))
  603. self._doc = None
  604. self.repos = self._get_repos()
  605.  
  606. @@ -121,9 +128,11 @@ class RepoOrder:
  607. if self._doc is None:
  608. repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
  609. if os.path.exists(repos_file):
  610. - self._doc = ciksemel.parse(repos_file)
  611. + self._doc = minidom.parse(repos_file).documentElement
  612. else:
  613. - self._doc = ciksemel.newDocument("REPOS")
  614. + impl = minidom.getDOMImplementation()
  615. + dom = impl.createDocument(None, "REPOS", None)
  616. + self._doc = dom.documentElement
  617.  
  618. return self._doc
  619.  
  620. @@ -131,10 +140,10 @@ class RepoOrder:
  621. repo_doc = self._get_doc()
  622. order = {}
  623.  
  624. - for r in repo_doc.tags("Repo"):
  625. - media = r.getTagData("Media")
  626. - name = r.getTagData("Name")
  627. - status = r.getTagData("Status")
  628. + for r in repo_doc.getElementsByTagName("Repo"):
  629. + media = r.getElementsByTagName("Media")[0].firstChild.data
  630. + name = r.getElementsByTagName("Name")[0].firstChild.data
  631. + status = r.getElementsByTagName("Status")[0].firstChild.data
  632. order.setdefault(media, []).append(name)
  633.  
  634. return order
  635. @@ -166,11 +175,13 @@ class RepoDB(lazydb.LazyDB):
  636.  
  637. if not os.path.exists(index_path):
  638. ctx.ui.warning(_("{} repository needs to be updated").format(repo_name))
  639. - return ciksemel.newDocument("INARY")
  640. + impl = minidom.getDOMImplementation()
  641. + dom = impl.createDocument(None, "INARY", None)
  642. + return dom.documentElement
  643.  
  644. try:
  645. - return ciksemel.parse(index_path)
  646. - except Exception as e:
  647. + return minidom.parse(index_path)
  648. + except ExpatError as e:
  649. raise RepoError(_("Error parsing repository index information. Index file does not exist or is malformed."))
  650.  
  651. def get_repo(self, repo):
  652. @@ -196,25 +207,25 @@ class RepoDB(lazydb.LazyDB):
  653. def get_source_repos(self, only_active=True):
  654. repos = []
  655. for r in self.list_repos(only_active):
  656. - if self.get_repo_doc(r).getTag("SpecFile"):
  657. + if self.get_repo_doc(r).getElementsByTagName("SpecFile")[0]:
  658. repos.append(r)
  659. return repos
  660.  
  661. def get_binary_repos(self, only_active=True):
  662. repos = []
  663. for r in self.list_repos(only_active):
  664. - if not self.get_repo_doc(r).getTag("SpecFile"):
  665. + if not self.get_repo_doc(r).getElementsByTagName("SpecFile")[0]:
  666. repos.append(r)
  667. return repos
  668.  
  669. - def list_repos(self, only_active=True):
  670. + def list_repos(self, only_active=True):
  671. temp = []
  672. for x in self.repoorder.get_order():
  673. if not only_active:
  674. temp.append(x)
  675. elif self.repo_active(x) == True:
  676. temp.append(x)
  677. - return temp
  678. + return temp
  679.  
  680. def list_repo_urls(self, only_active=True):
  681. repos = []
  682. @@ -241,13 +252,13 @@ class RepoDB(lazydb.LazyDB):
  683.  
  684. def get_distribution(self, name):
  685. doc = self.get_repo_doc(name)
  686. - distro = doc.getTag("Distribution")
  687. - return distro and distro.getTagData("SourceName")
  688. + distro = doc.getElementsByTagName("Distribution")[0]
  689. + return distro.firstChild.data and distro.getElementsByTagName("SourceName")[0].firstChild.data
  690.  
  691. def get_distribution_release(self, name):
  692. doc = self.get_repo_doc(name)
  693. - distro = doc.getTag("Distribution")
  694. - return distro and distro.getTagData("Version")
  695. + distro = doc.getElementsByTagName("Distribution")[0]
  696. + return distro.firstChild.data and distro.getElementsByTagName("Version")[0].firstChild.data
  697.  
  698. def check_distribution(self, name):
  699. if ctx.get_option('ignore_check'):
  700. @@ -268,4 +279,3 @@ class RepoDB(lazydb.LazyDB):
  701. self.deactivate_repo(name)
  702. raise IncompatibleRepoError(
  703. _("Repository '{}' is not compatible with your distribution. Repository is disabled.").format(name))
  704. -
  705. diff --git a/inary/db/sourcedb.py b/inary/db/sourcedb.py
  706. index 15eb1657..42f14fd6 100644
  707. --- a/inary/db/sourcedb.py
  708. +++ b/inary/db/sourcedb.py
  709. @@ -13,7 +13,7 @@
  710. import re
  711. import gzip
  712.  
  713. -import ciksemel
  714. +import xml.dom.minidom as minidom
  715.  
  716. import inary
  717. import inary.data.specfile as Specfile
  718. @@ -44,22 +44,23 @@ class SourceDB(lazydb.LazyDB):
  719. sources = {}
  720. pkgstosrc = {}
  721.  
  722. - for spec in doc.tags("SpecFile"):
  723. - src_name = spec.getTag("Source").getTagData("Name")
  724. - sources[src_name] = gzip.zlib.compress(spec.toString().encode('utf-8'))
  725. - for package in spec.tags("Package"):
  726. - pkgstosrc[package.getTagData("Name")] = src_name
  727. + for spec in doc.getElementsByTagName("SpecFile"):
  728. + src_name = spec.getElementsByTagName("Source")[0].getElementsByTagName("Name").firstChild.data
  729. + sources[src_name] = gzip.zlib.compress(spec.toxml('utf-8'))
  730. + for package in spec.getElementsByTagName("Package"):
  731. + pkgstosrc[package.getElementsByTagName("Name")[0].firstChild.data] = src_name
  732.  
  733. return sources, pkgstosrc
  734.  
  735. def __generate_revdeps(self, doc):
  736. revdeps = {}
  737. - for spec in doc.tags("SpecFile"):
  738. - name = spec.getTag("Source").getTagData("Name")
  739. - deps = spec.getTag("Source").getTag("BuildDependencies")
  740. + for spec in doc.getElementsByTagName("SpecFile"):
  741. + source = spec.getElementsByTagName("Source")[0]
  742. + name = source.getElementsByTagName("Name")[0].firstChild.data
  743. + deps = source.getElementsByTagName("BuildDependencies")[0].firstChild.data
  744. if deps:
  745. - for dep in deps.tags("Dependency"):
  746. - revdeps.setdefault(dep.firstChild().data(), set()).add((name, dep.toString()))
  747. + for dep in deps.getElementsByTagName("Dependency"):
  748. + revdeps.setdefault(dep.childNodes[0].data, set()).add((name, dep.toxml()))
  749. return revdeps
  750.  
  751. def list_sources(self, repo=None):
  752. @@ -123,9 +124,9 @@ class SourceDB(lazydb.LazyDB):
  753.  
  754. rev_deps = []
  755. for pkg, dep in rvdb:
  756. - node = ciksemel.parseString(dep)
  757. + node = minidom.parseString(dep)
  758. dependency = inary.analyzer.dependency.Dependency()
  759. - dependency.package = node.firstChild().data()
  760. + dependency.package = node.childNodes[0].data
  761. if node.attributes():
  762. attr = node.attributes()[0]
  763. dependency.__dict__[attr] = node.getAttribute(attr)
  764. diff --git a/inary/sxml/autoxml.py b/inary/sxml/autoxml.py
  765. index 05022695..9101a9d9 100644
  766. --- a/inary/sxml/autoxml.py
  767. +++ b/inary/sxml/autoxml.py
  768. @@ -528,7 +528,7 @@ class autoxml(oo.autosuper, oo.autoprop):
  769. tag_type = spec[0]
  770. assert type(tag_type) == type(type)
  771. def readtext(node, blah):
  772. - #node.normalize() # ciksemel doesn't have this
  773. + node.normalize() # minidom have this :D
  774. return xmlext.getNodeText(node)
  775. def writetext(node, blah, text):
  776. xmlext.addText(node, "", text)
  777. @@ -704,7 +704,6 @@ class autoxml(oo.autosuper, oo.autoprop):
  778. def encode(node, obj, errs):
  779. if node and obj:
  780. try:
  781. - #FIXME: this doesn't look pretty
  782. classnode = xmlext.newNode(node, tag)
  783. obj.encode(classnode, errs)
  784. xmlext.addNode(node, '', classnode)
  785. @@ -824,7 +823,6 @@ class autoxml(oo.autosuper, oo.autoprop):
  786. def encode(node, obj, errs):
  787. if node and obj:
  788. try:
  789. - #FIXME: this doesn't look pretty
  790. obj.encode(node, errs)
  791. except Error:
  792. if req == mandatory:
  793. diff --git a/inary/sxml/xmlext.py b/inary/sxml/xmlext.py
  794. index 24295bd1..657895d1 100644
  795. --- a/inary/sxml/xmlext.py
  796. +++ b/inary/sxml/xmlext.py
  797. @@ -27,10 +27,23 @@ __trans = gettext.translation('inary', fallback=True)
  798. _ = __trans.gettext
  799.  
  800. import inary
  801. -import ciksemel as iks
  802.  
  803. -parse = iks.parse
  804. -newDocument = iks.newDocument
  805. +import xml.dom.minidom as minidom
  806. +from xml.parsers.expat import ExpatError
  807. +
  808. +
  809. +def newDocument(tag):
  810. + impl = minidom.getDOMImplementation()
  811. + dom = impl.createDocument(None, tag, None)
  812. + return dom.documentElement
  813. +
  814. +def parse(fileName):
  815. + try:
  816. + dom = minidom.parse(fileName)
  817. + return dom.documentElement
  818. + except ExpatError, inst:
  819. + raise Error(_("File '%s' has invalid XML: %s\n") % (fileName,
  820. + str(inst)))
  821.  
  822. def getAllNodes(node, tagPath):
  823. """retrieve all nodes that match a given tag path."""
  824. @@ -50,6 +63,8 @@ def getAllNodes(node, tagPath):
  825.  
  826. def getNodeAttribute(node, attrname):
  827. """get named attribute from DOM node"""
  828. + if not node.hasAttribute(attrname):
  829. + return None
  830. return node.getAttribute(attrname)
  831.  
  832. def setNodeAttribute(node, attrname, value):
  833. @@ -58,25 +73,25 @@ def setNodeAttribute(node, attrname, value):
  834.  
  835. def getChildElts(parent):
  836. """get only child elements"""
  837. - return [x for x in parent.tags()]
  838. + return [x if x.nodeType == x.ELEMENT_NODE: for x in parent.childNodes]
  839.  
  840. def getTagByName(parent, childName):
  841. - return [x for x in parent.tags(childName)]
  842. + return [x for x in parent.childNodes
  843. + if x.nodeType == x.ELEMENT_NODE and x.tagName == childName]
  844.  
  845. def getNodeText(node, tagpath = ""):
  846. """get the first child and expect it to be text!"""
  847. if tagpath!="":
  848. node = getNode(node, tagpath)
  849. - if not node:
  850. - return None
  851. - child = node.firstChild()
  852. - if not child:
  853. + try:
  854. + child = node.childNodes[0]
  855. + except IndexError:
  856. return None
  857. - if child.type() == iks.DATA:
  858. - # KLUDGE: FIXME: python 2.x bug: force decoding as UTF-8
  859. - child_data = str(child.data())
  860. + except AttributeError: # no node by that name
  861. + return None
  862. + if child.nodeType == child.TEXT_NODE:
  863. #print('child_data=', child_data.strip())
  864. - return str(child_data.strip()) # in any case, strip whitespaces...
  865. + return child.data.strip() # in any case, strip whitespaces...
  866. else:
  867. raise XmlError(_("getNodeText: Expected text node, got something else!"))
  868.  
  869. @@ -92,7 +107,7 @@ def getNode(node, tagpath):
  870.  
  871. if tagpath == "":
  872. return node
  873. -
  874. +
  875. assert type(tagpath)==str
  876. tags = tagpath.split('/')
  877. assert len(tags)>0
  878. @@ -100,8 +115,8 @@ def getNode(node, tagpath):
  879. # iterative code to search for the path
  880. for tag in tags:
  881. currentNode = None
  882. - for child in node.tags():
  883. - if child.name() == tag:
  884. + for child in node.childNodes:
  885. + if child.nodeType == node.ELEMENT_NODE and child.tagName == tag:
  886. currentNode = child
  887. break
  888. if not currentNode:
  889. @@ -115,15 +130,16 @@ def createTagPath(node, tags):
  890. no matter what"""
  891. if len(tags)==0:
  892. return node
  893. + dom = node.ownerDocument
  894. for tag in tags:
  895. - node = node.insertTag(tag)
  896. + node = node.appendChild(dom.createElement(tag))
  897. return node
  898.  
  899. def addTagPath(node, tags, newnode=None):
  900. """add newnode at the end of a tag chain, smart one"""
  901. node = createTagPath(node, tags)
  902. if newnode: # node to add specified
  903. - node.insertNode(newnode)
  904. + node.appendChild(newnode)
  905. return node
  906.  
  907. def addNode(node, tagpath, newnode = None, branch=True):
  908. @@ -136,8 +152,8 @@ def addNode(node, tagpath, newnode = None, branch=True):
  909. tags = tagpath.split('/') # tag chain
  910. else:
  911. addTagPath(node, [], newnode)
  912. - return node #FIXME: is this correct!?!?
  913. -
  914. + return node
  915. +
  916. assert len(tags)>0 # we want a chain
  917.  
  918. # iterative code to search for the path
  919. @@ -161,9 +177,9 @@ def addNode(node, tagpath, newnode = None, branch=True):
  920.  
  921. return node
  922.  
  923. -def addText(node, tagpath, text):
  924. - node = addNode(node, tagpath)
  925. - node.insertData(text)
  926. +def addText(node, tagPath, text, branch = True):
  927. + newnode = node.ownerDocument.createTextNode(text)
  928. + return addNode(node, tagPath, newnode, branch = branch)
  929.  
  930. def newNode(node, tag):
  931. - return iks.newDocument(tag)
  932. + return node.ownerDocument.createElement(tag)
  933. diff --git a/inary/sxml/xmlfile.py b/inary/sxml/xmlfile.py
  934. index 55d25fbe..ce7e7679 100644
  935. --- a/inary/sxml/xmlfile.py
  936. +++ b/inary/sxml/xmlfile.py
  937. @@ -19,16 +19,15 @@
  938. function names are mixedCase for compatibility with minidom,
  939. an 'old library'
  940.  
  941. - this implementation uses pciksemel
  942. """
  943.  
  944. import gettext
  945. __trans = gettext.translation('inary', fallback=True)
  946. _ = __trans.gettext
  947.  
  948. -import codecs
  949. import io
  950. -import ciksemel as iks
  951. +import xml.dom.minidom as minidom
  952. +from xml.parsers.expat import ExpatError
  953.  
  954. import inary
  955. from inary.file import File
  956. @@ -45,35 +44,37 @@ class XmlFile(object):
  957.  
  958. def newDocument(self):
  959. """clear DOM"""
  960. - self.doc = iks.newDocument(self.rootTag)
  961. + impl = minidom.getDOMImplementation()
  962. + self.doc = impl.createDocument(None, self.rootTag, None).documentElement
  963.  
  964. def unlink(self):
  965. """deallocate DOM structure"""
  966. + self.doc.unlink()
  967. del self.doc
  968.  
  969. def rootNode(self):
  970. """returns root document element"""
  971. - return self.doc
  972. -
  973. + return self.doc.documentElement
  974. +
  975. def parsexml(self, file):
  976. - #try:
  977. - self.doc = iks.parseString(str(file))
  978. - return self.doc
  979. - #except Exception as e:
  980. - #raise Error(_("File '{}' has invalid XML").format(file) )
  981. + try:
  982. + self.doc = minidom.parseString(str(file))
  983. + return self.doc.documentElement
  984. + except Exception as e:
  985. + raise Error(_("File '{}' has invalid XML").format(file) )
  986.  
  987.  
  988. - def readxml(self, uri, tmpDir='/tmp', sha1sum=False,
  989. + def readxml(self, uri, tmpDir='/tmp', sha1sum=False,
  990. compress=None, sign=None, copylocal = False):
  991. uri = File.make_uri(uri)
  992. try:
  993. - localpath = File.download(uri, tmpDir, sha1sum=sha1sum,
  994. + localpath = File.download(uri, tmpDir, sha1sum=sha1sum,
  995. compress=compress,sign=sign, copylocal=copylocal)
  996. except IOError as e:
  997. raise Error(_("Cannot read URI {0}: {1}").format(uri, str(e)) )
  998. -
  999. +
  1000. st = io.StringIO()
  1001. -
  1002. +
  1003. try:
  1004. from preprocess import preprocess, PreprocessError
  1005. preprocess(infile=localpath,outfile=st,defines=inary.config.Config().values.directives)
  1006. @@ -82,15 +83,15 @@ class XmlFile(object):
  1007. st = open(localpath,'r')
  1008.  
  1009. try:
  1010. - self.doc = iks.parse(localpath)
  1011. - return self.doc
  1012. - except Exception as e:
  1013. - raise Error(_("File '{}' has invalid XML").format(localpath) )
  1014. -
  1015. + self.doc = minidom.parse(localpath)
  1016. + return self.doc.documentElement
  1017. + except ExpatError as err:
  1018. + raise Error(_("File '{}' has invalid XML: {}\n").format(localpath,
  1019. + str(err)))
  1020. def writexml(self, uri, tmpDir = '/tmp', sha1sum=False, compress=None, sign=None):
  1021. f = inary.file.File(uri, inary.file.File.write, sha1sum=sha1sum, compress=compress, sign=sign)
  1022. - f.write(self.doc.toPrettyString())
  1023. + f.write(self.doc.toprettyxml())
  1024. f.close()
  1025.  
  1026. def writexmlfile(self, f):
  1027. - f.write(self.doc.toPrettyString())
  1028. + f.write(self.doc.toprettyxml())
  1029. diff --git a/tools/inary.vim b/tools/inary.vim
  1030. index 4dcce7db..91ede472 100644
  1031. --- a/tools/inary.vim
  1032. +++ b/tools/inary.vim
  1033. @@ -238,14 +238,16 @@ python << EOF
  1034. import re
  1035. import os
  1036. import vim
  1037. -import ciksemel
  1038. +import xml.dom.minidom
  1039.  
  1040. def normal(str):
  1041. vim.command("normal "+str)
  1042.  
  1043. -pspec = ciksemel.parse("pspec.xml")
  1044. -comment_data = pspec.getTag("History").getTag("Update").getTagData("Comment")
  1045. -
  1046. +try:
  1047. + pspec = xml.dom.minidom.parse("pspec.xml")
  1048. +except:
  1049. + raise Exception("Can Not Parsed File: pspec.xml")
  1050. +comment_data = pspec.getElementsByTagName("History")[0].getElementsByTagName("Update")[0].getElementsByTagName("Comment")[0].firstChild.data
  1051. file_name = "commit-msg.tmp"
  1052. if os.path.exists(file_name):
  1053. os.unlink(file_name)
  1054. @@ -274,4 +276,3 @@ vim.command(":!svn ci --file commit-msg.tmp")
  1055. os.system("rm commit-msg.tmp")
  1056. EOF
  1057. endfunction
  1058. -
Add Comment
Please, Sign In to add comment