Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
I
inary
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
SulinOS
inary
Commits
e6179182
Kaydet (Commit)
e6179182
authored
Mar 18, 2018
tarafından
Suleyman Poyraz
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Inary system running with two different xml parser
üst
9556b46a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
870 additions
and
380 deletions
+870
-380
ChangeLog
ChangeLog
+8
-0
inary-cli
inary-cli
+6
-0
archive.py
inary/archive.py
+1
-1
inarycli.py
inary/cli/inarycli.py
+1
-0
listavailable.py
inary/cli/listavailable.py
+1
-1
searchfile.py
inary/cli/searchfile.py
+1
-0
updaterepo.py
inary/cli/updaterepo.py
+1
-0
specfile.py
inary/data/specfile.py
+53
-25
componentdb.py
inary/db/componentdb.py
+34
-14
groupdb.py
inary/db/groupdb.py
+27
-6
installdb.py
inary/db/installdb.py
+107
-44
itembyrepo.py
inary/db/itembyrepo.py
+2
-2
packagedb.py
inary/db/packagedb.py
+0
-0
repodb.py
inary/db/repodb.py
+0
-0
sourcedb.py
inary/db/sourcedb.py
+65
-26
search.py
inary/operations/search.py
+1
-0
autoxml.py
inary/sxml/autoxml.py
+6
-3
xmlext.py
inary/sxml/xmlext.py
+5
-173
xmlext_iks.py
inary/sxml/xmlext_iks.py
+169
-0
xmlext_minidom.py
inary/sxml/xmlext_minidom.py
+185
-0
xmlfile.py
inary/sxml/xmlfile.py
+5
-85
xmlfile_iks.py
inary/sxml/xmlfile_iks.py
+95
-0
xmlfile_minidom.py
inary/sxml/xmlfile_minidom.py
+97
-0
No files found.
ChangeLog
Dosyayı görüntüle @
e6179182
2018-03-18 Suleyman Poyraz <nipalensisaquila@gmail.com>
* minidom vs ciksemek:
minidom ile tüm inary sistemi yeniden yazıldı. Ancak ciddi manada
inar yavaşlıyor. Db initializing süresi 8 sn. Yuh yani. Ama minidom
uğraşımı öylece silmek istemediğim için minidom ve ciksemeli beraber
kullanma kararı aldım.
2018-03-11 Suleyman Poyraz <nipalensisaquila@gmail.com>
* colorized help output:
Colorized command names and now help screen look well.
...
...
inary-cli
Dosyayı görüntüle @
e6179182
...
...
@@ -17,6 +17,12 @@ import signal
import
inary
import
inary.context
as
ctx
import
inary.cli.inarycli
as
inarycli
try
:
import
ciksemel
except
:
#FIXME: Görünüşü güzel olsa bile kodda anlamsızlık yaratıyor
sys
.
stdout
.
write
(
"
\033
[05;31mWARNING:
\033
[0m
\n\t\033
[02;37mCiksemel XML Parser not found!!!
\n\t
Falling back with minidom!!! :(
\033
[0m
\n\n
"
)
import
gettext
gettext
.
bindtextdomain
(
'inary'
,
"/usr/share/locale"
)
gettext
.
textdomain
(
'inary'
)
...
...
inary/archive.py
Dosyayı görüntüle @
e6179182
...
...
@@ -254,7 +254,7 @@ class ArchiveLzma(ArchiveBase):
from
backports
import
lzma
lzma_file
=
lzma
.
LZMAFile
(
self
.
file_path
,
"rb"
)
output
=
open
(
output_path
,
"w"
)
output
.
write
(
str
(
lzma_file
.
read
()
))
output
.
write
(
lzma_file
.
read
()
.
decode
(
'utf-8'
))
output
.
close
()
lzma_file
.
close
()
...
...
inary/cli/inarycli.py
Dosyayı görüntüle @
e6179182
...
...
@@ -118,6 +118,7 @@ class InaryCLI(object):
def
__init__
(
self
,
orig_args
=
None
):
# first construct a parser for common options
# this is really dummy
self
.
parser
=
PreParser
(
version
=
"
%
prog "
+
inary
.
__version__
)
try
:
opts
,
args
=
self
.
parser
.
parse_args
(
args
=
orig_args
)
...
...
inary/cli/listavailable.py
Dosyayı görüntüle @
e6179182
...
...
@@ -64,7 +64,7 @@ all repositories.
else
:
# print for all repos
for
repo
in
op_wrappers
.
list_repos
():
ctx
.
ui
.
info
(
_
(
"Repository : {}
\n
"
)
.
format
(
str
(
repo
)))
ctx
.
ui
.
info
(
util
.
colorize
(
_
(
"
\n
Repository : {}
\n
"
),
"blue
"
)
.
format
(
str
(
repo
)))
self
.
print_packages
(
repo
)
def
print_packages
(
self
,
repo
):
...
...
inary/cli/searchfile.py
Dosyayı görüntüle @
e6179182
...
...
@@ -54,6 +54,7 @@ Finds the installed package which contains the specified file.
def
run
(
self
):
self
.
init
(
database
=
True
,
write
=
False
)
print
(
34623456
)
if
not
self
.
args
:
self
.
help
()
...
...
inary/cli/updaterepo.py
Dosyayı görüntüle @
e6179182
...
...
@@ -19,6 +19,7 @@ _ = __trans.gettext
import
inary.cli.command
as
command
import
inary.context
as
ctx
import
inary.atomicoperations
import
inary.operations.op_wrappers
as
op_wrappers
class
UpdateRepo
(
command
.
Command
,
metaclass
=
command
.
autocommand
):
__doc__
=
_
(
"""Update repository databases
...
...
inary/data/specfile.py
Dosyayı görüntüle @
e6179182
...
...
@@ -23,10 +23,6 @@ _ = __trans.gettext
# standard python modules
import
os.path
#for compability cross platform package managing
import
xml.dom.minidom
as
minidom
from
xml.parsers.expat
import
ExpatError
# inary modules
import
inary.sxml.xmlfile
as
xmlfile
import
inary.sxml.autoxml
as
autoxml
...
...
@@ -39,6 +35,13 @@ import inary.data.group as group
import
inary.util
as
util
import
inary.db
try
:
import
ciksemel
parser
=
"ciksemel"
except
:
import
xml.dom.minidom
as
minidom
parser
=
"minidom"
class
Error
(
inary
.
Error
):
pass
...
...
@@ -423,36 +426,61 @@ class SpecFile(xmlfile.XmlFile, metaclass=autoxml.autoxml):
def
getSourceRelease
(
self
):
return
self
.
history
[
0
]
.
release
def
_set_i18n
(
self
,
tag
,
inst
):
try
:
for
summary
in
tag
.
getElementsByTagName
(
"Summary"
):
inst
.
summary
[
summary
.
getAttribute
(
"xml:lang"
)]
=
summary
.
childNodes
[
0
]
.
data
for
desc
in
tag
.
getElementsByTagName
(
"Description"
):
inst
.
description
[
desc
.
getAttribute
(
"xml:lang"
)]
=
desc
.
childNodes
[
0
]
.
data
except
AttributeError
:
raise
Error
(
_
(
"translations.xml file is badly formed."
))
def
_set_i18n
(
self
,
tag
,
inst
,
parser
=
"ciksemel"
):
if
parser
==
"ciksemel"
:
try
:
for
summary
in
tag
.
tags
(
"Summary"
):
inst
.
summary
[
summary
.
getAttribute
(
"xml:lang"
)]
=
summary
.
firstChild
()
.
data
()
for
desc
in
tag
.
tags
(
"Description"
):
inst
.
description
[
desc
.
getAttribute
(
"xml:lang"
)]
=
desc
.
firstChild
()
.
data
()
except
AttributeError
:
raise
Error
(
_
(
"translations.xml file is badly formed."
))
else
:
try
:
for
summary
in
tag
.
getElementsByTagName
(
"Summary"
):
inst
.
summary
[
summary
.
getAttribute
(
"xml:lang"
)]
=
summary
.
childNodes
[
0
]
.
data
for
desc
in
tag
.
getElementsByTagName
(
"Description"
):
inst
.
description
[
desc
.
getAttribute
(
"xml:lang"
)]
=
desc
.
childNodes
[
0
]
.
data
except
AttributeError
:
raise
Error
(
_
(
"translations.xml file is badly formed."
))
def
read_translations
(
self
,
path
):
if
not
os
.
path
.
exists
(
path
):
return
try
:
doc
=
minidom
.
parse
(
path
)
.
documentElement
except
ExpatError
as
err
:
raise
Error
(
_
(
"File '{0}' has invalid XML: {1}"
)
.
format
(
path
,
err
)
)
if
doc
.
getElementsByTagName
(
"Source"
)[
0
]
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
==
self
.
source
.
name
:
# Set source package translations
self
.
_set_i18n
(
doc
.
getElementsByTagName
(
"Source"
)[
0
],
self
.
source
)
#FIXME: How can we fix it
for
pak
in
doc
.
childNodes
:
if
pak
.
nodeType
==
pak
.
ELEMENT_NODE
and
pak
.
tagName
==
"Package"
:
if
parser
==
"ciksemel"
:
doc
=
ciksemel
.
parse
(
path
)
if
doc
.
getTag
(
"Source"
)
.
getTagData
(
"Name"
)
==
self
.
source
.
name
:
# Set source package translations
self
.
_set_i18n
(
doc
.
getTag
(
"Source"
),
self
.
source
)
for
pak
in
doc
.
tags
(
"Package"
):
for
inst
in
self
.
packages
:
if
inst
.
name
==
pak
.
get
ElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
:
if
inst
.
name
==
pak
.
get
TagData
(
"Name"
)
:
self
.
_set_i18n
(
pak
,
inst
)
break
else
:
try
:
doc
=
minidom
.
parse
(
path
)
.
documentElement
except
ExpatError
as
err
:
raise
Error
(
_
(
"File '{0}' has invalid XML: {1}"
)
.
format
(
path
,
err
)
)
if
doc
.
getElementsByTagName
(
"Source"
)[
0
]
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
==
self
.
source
.
name
:
# Set source package translations
self
.
_set_i18n
(
doc
.
getElementsByTagName
(
"Source"
)[
0
],
self
.
source
,
parser
=
"minidom"
)
#FIXME: How can we fix it
for
pak
in
doc
.
childNodes
:
if
pak
.
nodeType
==
pak
.
ELEMENT_NODE
and
pak
.
tagName
==
"Package"
:
for
inst
in
self
.
packages
:
if
inst
.
name
==
pak
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
:
self
.
_set_i18n
(
pak
,
inst
,
parser
=
"minidom"
)
break
def
__str__
(
self
):
s
=
_
(
'Name: {0}, version: {1}, release: {2}
\n
'
)
.
format
(
self
.
source
.
name
,
self
.
history
[
0
]
.
version
,
self
.
history
[
0
]
.
release
)
...
...
inary/db/componentdb.py
Dosyayı görüntüle @
e6179182
...
...
@@ -16,6 +16,7 @@ __trans = gettext.translation('inary', fallback=True)
_
=
__trans
.
gettext
import
inary
import
inary.context
as
ctx
import
inary.db.repodb
import
inary.db.itembyrepo
import
inary.data.component
as
Component
...
...
@@ -25,6 +26,11 @@ class ComponentDB(lazydb.LazyDB):
def
__init__
(
self
):
lazydb
.
LazyDB
.
__init__
(
self
,
cacheable
=
True
)
try
:
import
ciksemel
self
.
parser
=
"ciksemel"
except
:
self
.
parser
=
"minidom"
def
init
(
self
):
component_nodes
=
{}
...
...
@@ -43,28 +49,42 @@ class ComponentDB(lazydb.LazyDB):
self
.
cpdb
=
inary
.
db
.
itembyrepo
.
ItemByRepo
(
component_packages
)
self
.
csdb
=
inary
.
db
.
itembyrepo
.
ItemByRepo
(
component_sources
)
def
__generate_packages
(
self
,
doc
):
def
__generate_packages
(
self
,
doc
,
):
components
=
{}
for
pkg
in
doc
.
childNodes
:
if
pkg
.
nodeType
==
pkg
.
ELEMENT_NODE
and
pkg
.
tagName
==
"Package"
:
partOf
=
pkg
.
getElementsByTagName
(
"PartOf"
)[
0
]
.
firstChild
.
data
pkgName
=
pkg
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
components
.
setdefault
(
partOf
,
[])
.
append
(
pkgName
)
if
self
.
parser
==
"ciksemel"
:
for
pkg
in
doc
.
tags
(
"Package"
):
components
.
setdefault
(
pkg
.
getTagData
(
"PartOf"
),
[])
.
append
(
pkg
.
getTagData
(
"Name"
))
else
:
for
pkg
in
doc
.
childNodes
:
if
pkg
.
nodeType
==
pkg
.
ELEMENT_NODE
and
pkg
.
tagName
==
"Package"
:
partOf
=
pkg
.
getElementsByTagName
(
"PartOf"
)[
0
]
.
firstChild
.
data
pkgName
=
pkg
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
components
.
setdefault
(
partOf
,
[])
.
append
(
pkgName
)
return
components
def
__generate_sources
(
self
,
doc
):
components
=
{}
for
spec
in
doc
.
childNodes
:
if
spec
.
nodeType
==
spec
.
ELEMENT_NODE
and
spec
.
tagName
==
"SpecFile"
:
src
=
spec
.
getElementsByTagName
(
"Source"
)[
0
]
partOf
=
src
.
getElementsByTagName
(
"PartOf"
)[
0
]
.
firstChild
.
data
pkgName
=
src
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
components
.
setdefault
(
partOf
,
[])
.
append
(
pkgName
)
if
self
.
parser
==
"ciksemel"
:
for
spec
in
doc
.
tags
(
"SpecFile"
):
src
=
spec
.
getTag
(
"Source"
)
components
.
setdefault
(
src
.
getTagData
(
"PartOf"
),
[])
.
append
(
src
.
getTagData
(
"Name"
))
else
:
for
spec
in
doc
.
childNodes
:
if
spec
.
nodeType
==
spec
.
ELEMENT_NODE
and
spec
.
tagName
==
"SpecFile"
:
src
=
spec
.
getElementsByTagName
(
"Source"
)[
0
]
partOf
=
src
.
getElementsByTagName
(
"PartOf"
)[
0
]
.
firstChild
.
data
pkgName
=
src
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
components
.
setdefault
(
partOf
,
[])
.
append
(
pkgName
)
return
components
def
__generate_components
(
self
,
doc
):
#return dict([(x.getTagData("Name"), x.toString()) for x in doc.tags("Component")])
return
dict
([(
x
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
,
x
.
toxml
(
'utf-8'
))
for
x
in
doc
.
getElementsByTagName
(
"Component"
)])
if
self
.
parser
==
"ciksemel"
:
return
dict
([(
x
.
getTagData
(
"Name"
),
x
.
toString
())
for
x
in
doc
.
tags
(
"Component"
)])
else
:
return
dict
([(
x
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
,
x
.
toxml
(
'utf-8'
))
for
x
in
doc
.
getElementsByTagName
(
"Component"
)])
def
has_component
(
self
,
name
,
repo
=
None
):
return
self
.
cdb
.
has_item
(
name
,
repo
)
...
...
inary/db/groupdb.py
Dosyayı görüntüle @
e6179182
...
...
@@ -15,6 +15,7 @@ __trans = gettext.translation('inary', fallback=True)
_
=
__trans
.
gettext
import
inary
import
inary.context
as
ctx
import
inary.db.repodb
import
inary.db.itembyrepo
import
inary.data.group
as
Group
...
...
@@ -32,6 +33,12 @@ class GroupDB(lazydb.LazyDB):
group_nodes
=
{}
group_components
=
{}
try
:
import
ciksemel
self
.
parser
=
"ciksemel"
except
:
self
.
parser
=
"minidom"
repodb
=
inary
.
db
.
repodb
.
RepoDB
()
for
repo
in
repodb
.
list_repos
():
...
...
@@ -44,17 +51,31 @@ class GroupDB(lazydb.LazyDB):
def
__generate_components
(
self
,
doc
):
groups
=
{}
for
c
in
doc
.
childNodes
:
if
c
.
nodeType
==
c
.
ELEMENT_NODE
and
c
.
tagName
==
"Component"
:
group
=
c
.
getElementsByTagName
(
"Group"
)[
0
]
if
self
.
parser
==
"ciksemel"
:
for
c
in
doc
.
tags
(
"Component"
):
group
=
c
.
getTagData
(
"Group"
)
if
not
group
:
group
=
"unknown"
groups
.
setdefault
(
group
.
firstChild
.
data
,
[])
.
append
(
c
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
)
groups
.
setdefault
(
group
,
[])
.
append
(
c
.
getTagData
(
"Name"
))
else
:
for
c
in
doc
.
childNodes
:
if
c
.
nodeType
==
c
.
ELEMENT_NODE
and
c
.
tagName
==
"Component"
:
group
=
c
.
getElementsByTagName
(
"Group"
)[
0
]
if
not
group
:
group
=
"unknown"
groups
.
setdefault
(
group
.
firstChild
.
data
,
[])
.
append
(
c
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
)
return
groups
def
__generate_groups
(
self
,
doc
):
return
dict
([(
x
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
,
x
.
toxml
())
\
for
x
in
doc
.
childNodes
if
x
.
nodeType
==
x
.
ELEMENT_NODE
and
x
.
tagName
==
"Group"
])
if
self
.
parser
==
"ciksemel"
:
return
dict
([(
x
.
getTagData
(
"Name"
),
x
.
toString
())
for
x
in
doc
.
tags
(
"Group"
)])
else
:
return
dict
([(
x
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
,
x
.
toxml
())
\
for
x
in
doc
.
childNodes
if
x
.
nodeType
==
x
.
ELEMENT_NODE
and
x
.
tagName
==
"Group"
])
def
has_group
(
self
,
name
,
repo
=
None
):
return
self
.
gdb
.
has_item
(
name
,
repo
)
...
...
inary/db/installdb.py
Dosyayı görüntüle @
e6179182
...
...
@@ -19,15 +19,21 @@ import gettext
__trans
=
gettext
.
translation
(
'inary'
,
fallback
=
True
)
_
=
__trans
.
gettext
import
xml.dom.minidom
as
minidom
# INARY
import
inary
import
inary.context
as
ctx
import
inary.analyzer.dependency
import
inary.data.files
as
Files
import
inary.util
import
inary.db.lazydb
as
lazydb
import
inary.util
import
inary.context
as
ctx
try
:
import
ciksemel
parser
=
"ciksemel"
except
:
import
xml.dom.minidom
as
minidom
parser
=
"minidom"
class
InstallDBError
(
inary
.
Error
):
pass
...
...
@@ -92,31 +98,57 @@ class InstallDB(lazydb.LazyDB):
def
__add_to_revdeps
(
self
,
package
,
revdeps
):
metadata_xml
=
os
.
path
.
join
(
self
.
package_path
(
package
),
ctx
.
const
.
metadata_xml
)
try
:
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
pkg
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
except
:
pkg
=
None
if
pkg
is
None
:
# If package info is broken or not available, skip it.
ctx
.
ui
.
warning
(
_
(
"Installation info for package '{}' is broken. "
"Reinstall it to fix this problem."
)
.
format
(
package
))
del
self
.
installed_db
[
package
]
return
deps
=
pkg
.
getElementsByTagName
(
'RuntimeDependencies'
)
if
deps
:
for
dep_tag
in
deps
:
for
dep
in
dep_tag
.
childNodes
:
if
dep
.
nodeType
==
dep
.
ELEMENT_NODE
and
dep
.
tagName
==
"Dependency"
:
revdep
=
revdeps
.
setdefault
(
dep
.
childNodes
[
0
]
.
data
,
{})
revdep
[
package
]
=
dep
.
toxml
(
'utf-8'
)
for
anydep
in
dep_tag
.
childNodes
:
if
dep
.
nodeType
==
dep
.
ELEMENT_NODE
and
dep
.
tagName
==
"AnyDependency"
:
for
dep
in
anydep
.
getElementsByTagName
(
"Dependency"
):
revdep
=
revdeps
.
setdefault
(
dep
.
firstChild
.
data
,
{})
revdep
[
package
]
=
anydep
.
toxml
(
'utf-8'
)
if
parser
==
"ciksemel"
:
try
:
meta_doc
=
ciksemel
.
parse
(
metadata_xml
)
pkg
=
meta_doc
.
getTag
(
"Package"
)
except
:
pkg
=
None
if
pkg
is
None
:
# If package info is broken or not available, skip it.
ctx
.
ui
.
warning
(
_
(
"Installation info for package '{}' is broken. "
"Reinstall it to fix this problem."
)
.
format
(
package
))
del
self
.
installed_db
[
package
]
return
deps
=
pkg
.
getTag
(
'RuntimeDependencies'
)
if
deps
:
for
dep
in
deps
.
tags
(
"Dependency"
):
revdep
=
revdeps
.
setdefault
(
dep
.
firstChild
()
.
data
(),
{})
revdep
[
package
]
=
dep
.
toString
()
for
anydep
in
deps
.
tags
(
"AnyDependency"
):
for
dep
in
anydep
.
tags
(
"Dependency"
):
revdep
=
revdeps
.
setdefault
(
dep
.
firstChild
()
.
data
(),
{})
revdep
[
package
]
=
anydep
.
toString
()
else
:
try
:
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
pkg
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
except
:
pkg
=
None
if
pkg
is
None
:
# If package info is broken or not available, skip it.
ctx
.
ui
.
warning
(
_
(
"Installation info for package '{}' is broken. "
"Reinstall it to fix this problem."
)
.
format
(
package
))
del
self
.
installed_db
[
package
]
return
deps
=
pkg
.
getElementsByTagName
(
'RuntimeDependencies'
)
if
deps
:
for
dep_tag
in
deps
:
for
dep
in
dep_tag
.
childNodes
:
if
dep
.
nodeType
==
dep
.
ELEMENT_NODE
and
dep
.
tagName
==
"Dependency"
:
revdep
=
revdeps
.
setdefault
(
dep
.
childNodes
[
0
]
.
data
,
{})
revdep
[
package
]
=
dep
.
toxml
(
'utf-8'
)
for
anydep
in
dep_tag
.
childNodes
:
if
dep
.
nodeType
==
dep
.
ELEMENT_NODE
and
dep
.
tagName
==
"AnyDependency"
:
for
dep
in
anydep
.
getElementsByTagName
(
"Dependency"
):
revdep
=
revdeps
.
setdefault
(
dep
.
firstChild
.
data
,
{})
revdep
[
package
]
=
anydep
.
toxml
(
'utf-8'
)
def
__generate_revdeps
(
self
):
revdeps
=
{}
...
...
@@ -147,34 +179,56 @@ class InstallDB(lazydb.LazyDB):
return
found
def
__get_version
(
self
,
meta_doc
):
history
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"History"
)[
0
]
version
=
history
.
getElementsByTagName
(
"Update"
)[
0
]
.
getElementsByTagName
(
"Version"
)[
0
]
.
firstChild
.
data
release
=
history
.
getElementsByTagName
(
"Update"
)[
0
]
.
getAttribute
(
"release"
)[
0
]
if
parser
==
"ciksemel"
:
history
=
meta_doc
.
getTag
(
"Package"
)
.
getTag
(
"History"
)
version
=
history
.
getTag
(
"Update"
)
.
getTagData
(
"Version"
)
release
=
history
.
getTag
(
"Update"
)
.
getAttribute
(
"release"
)
else
:
history
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"History"
)[
0
]
version
=
history
.
getElementsByTagName
(
"Update"
)[
0
]
.
getElementsByTagName
(
"Version"
)[
0
]
.
firstChild
.
data
release
=
history
.
getElementsByTagName
(
"Update"
)[
0
]
.
getAttribute
(
"release"
)[
0
]
# TODO Remove None
return
version
,
release
,
None
def
__get_distro_release
(
self
,
meta_doc
):
distro
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"Distribution"
)[
0
]
.
firstChild
.
data
release
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"DistributionRelease"
)[
0
]
.
firstChild
.
data
if
parser
==
"ciksemel"
:
distro
=
meta_doc
.
getTag
(
"Package"
)
.
getTagData
(
"Distribution"
)
release
=
meta_doc
.
getTag
(
"Package"
)
.
getTagData
(
"DistributionRelease"
)
else
:
distro
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"Distribution"
)[
0
]
.
firstChild
.
data
release
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"DistributionRelease"
)[
0
]
.
firstChild
.
data
return
distro
,
release
def
__get_install_tar_hash
(
self
,
meta_doc
):
hash
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"InstallTarHash"
)[
0
]
.
firstChild
.
data
if
parser
==
"ciksemel"
:
hash
=
meta_doc
.
getTag
(
"Package"
)
.
getTagData
(
"InstallTarHash"
)
else
:
hash
=
meta_doc
.
getElementsByTagName
(
"Package"
)[
0
]
.
getElementsByTagName
(
"InstallTarHash"
)[
0
]
.
firstChild
.
data
return
hash
def
get_install_tar_hash
(
self
,
package
):
metadata_xml
=
os
.
path
.
join
(
self
.
package_path
(
package
),
ctx
.
const
.
metadata_xml
)
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
if
parser
==
"ciksemel"
:
meta_doc
=
ciksemel
.
parse
(
metadata_xml
)
else
:
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
return
self
.
__get_install_tar_hash
(
meta_doc
)
def
get_version_and_distro_release
(
self
,
package
):
metadata_xml
=
os
.
path
.
join
(
self
.
package_path
(
package
),
ctx
.
const
.
metadata_xml
)
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
if
parser
==
"ciksemel"
:
meta_doc
=
ciksemel
.
parse
(
metadata_xml
)
else
:
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
return
self
.
__get_version
(
meta_doc
)
+
self
.
__get_distro_release
(
meta_doc
)
def
get_version
(
self
,
package
):
metadata_xml
=
os
.
path
.
join
(
self
.
package_path
(
package
),
ctx
.
const
.
metadata_xml
)
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
if
parser
==
"ciksemel"
:
meta_doc
=
ciksemel
.
parse
(
metadata_xml
)
else
:
meta_doc
=
minidom
.
parse
(
metadata_xml
)
.
documentElement
return
self
.
__get_version
(
meta_doc
)
def
get_files
(
self
,
package
):
...
...
@@ -240,13 +294,22 @@ class InstallDB(lazydb.LazyDB):
return
info
def
__make_dependency
(
self
,
depStr
):
node
=
minidom
.
parseString
(
depStr
)
.
documentElement
dependency
=
inary
.
analyzer
.
dependency
.
Dependency
()
dependency
.
package
=
node
.
childNodes
[
0
]
.
data
#FIXME: Bir sakatlık çıkacak
if
node
.
attributes
:
attr
=
node
.
attributes
[
0
]
dependency
.
__dict__
[
str
(
attr
)]
=
node
.
getAttribute
(
str
(
attr
))
if
parser
==
"ciksemel"
:
node
=
ciksemel
.
parseString
(
depStr
)
dependency
=
inary
.
analyzer
.
dependency
.
Dependency
()
dependency
.
package
=
node
.
firstChild
()
.
data
()
if
node
.
attributes
():
attr
=
node
.
attributes
()[
0
]
dependency
.
__dict__
[
str
(
attr
)]
=
node
.
getAttribute
(
str
(
attr
))
else
:
node
=
minidom
.
parseString
(
depStr
)
.
documentElement
dependency
=
inary
.
analyzer
.
dependency
.
Dependency
()
dependency
.
package
=
node
.
childNodes
[
0
]
.
data
if
node
.
attributes
:
attr
=
node
.
attributes
[
0
]
dependency
.
__dict__
[
str
(
attr
)]
=
node
.
getAttribute
(
str
(
attr
))
return
dependency
def
__create_dependency
(
self
,
depStr
):
...
...
inary/db/itembyrepo.py
Dosyayı görüntüle @
e6179182
...
...
@@ -43,7 +43,7 @@ class ItemByRepo:
for
r
in
self
.
item_repos
(
repo
):
if
r
in
self
.
dbobj
and
item
in
self
.
dbobj
[
r
]:
if
self
.
compressed
:
return
gzip
.
zlib
.
decompress
(
self
.
dbobj
[
r
][
item
]),
r
return
gzip
.
zlib
.
decompress
(
self
.
dbobj
[
r
][
item
])
.
decode
(
'utf-8'
)
,
r
else
:
return
self
.
dbobj
[
r
][
item
],
r
...
...
@@ -82,7 +82,7 @@ class ItemByRepo:
if
self
.
compressed
:
for
item
in
list
(
self
.
dbobj
[
r
]
.
keys
()):
yield
str
(
item
),
str
(
gzip
.
zlib
.
decompress
(
self
.
dbobj
[
r
][
item
])
)
yield
str
(
item
),
gzip
.
zlib
.
decompress
(
self
.
dbobj
[
r
][
item
])
.
decode
(
'utf-8'
)
else
:
for
item
in
list
(
self
.
dbobj
[
r
]
.
keys
()):
yield
str
(
item
),
str
(
self
.
dbobj
[
r
][
item
])
...
...
inary/db/packagedb.py
Dosyayı görüntüle @
e6179182
This diff is collapsed.
Click to expand it.
inary/db/repodb.py
Dosyayı görüntüle @
e6179182
This diff is collapsed.
Click to expand it.
inary/db/sourcedb.py
Dosyayı görüntüle @
e6179182
...
...
@@ -13,12 +13,22 @@
import
re
import
gzip
import
xml.dom.minidom
as
minidom
import
inary
import
inary.context
as
ctx
import
inary.data.specfile
as
Specfile
import
inary.db.lazydb
as
lazydb
import
gettext
__trans
=
gettext
.
translation
(
'inary'
,
fallback
=
True
)
_
=
__trans
.
gettext
try
:
import
ciksemel
parser
=
"ciksemel"
except
:
import
xml.dom.minidom
as
minidom
parser
=
"minidom"
class
SourceDB
(
lazydb
.
LazyDB
):
def
__init__
(
self
):
...
...
@@ -44,28 +54,45 @@ class SourceDB(lazydb.LazyDB):
sources
=
{}
pkgstosrc
=
{}
for
spec
in
doc
.
childNodes
:
if
spec
.
nodeType
==
spec
.
ELEMENT_NODE
and
spec
.
tagName
==
"SpecFile"
:
src_name
=
spec
.
getElementsByTagName
(
"Source"
)[
0
]
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
sources
[
src_name
]
=
gzip
.
zlib
.
compress
(
spec
.
toxml
(
'utf-8'
))
for
package
in
spec
.
childNodes
:
if
package
.
nodeType
==
package
.
ELEMENT_NODE
and
package
.
tagName
==
"Package"
:
pkgstosrc
[
package
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
]
=
src_name
if
parser
==
"ciksemel"
:
for
spec
in
doc
.
tags
(
"SpecFile"
):
src_name
=
spec
.
getTag
(
"Source"
)
.
getTagData
(
"Name"
)
sources
[
src_name
]
=
gzip
.
zlib
.
compress
(
spec
.
toString
()
.
encode
(
'utf-8'
))
for
package
in
spec
.
tags
(
"Package"
):
pkgstosrc
[
package
.
getTagData
(
"Name"
)]
=
src_name
else
:
for
spec
in
doc
.
childNodes
:
if
spec
.
nodeType
==
spec
.
ELEMENT_NODE
and
spec
.
tagName
==
"SpecFile"
:
src_name
=
spec
.
getElementsByTagName
(
"Source"
)[
0
]
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
sources
[
src_name
]
=
gzip
.
zlib
.
compress
(
spec
.
toxml
(
'utf-8'
))
for
package
in
spec
.
childNodes
:
if
package
.
nodeType
==
package
.
ELEMENT_NODE
and
package
.
tagName
==
"Package"
:
pkgstosrc
[
package
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
]
=
src_name
return
sources
,
pkgstosrc
def
__generate_revdeps
(
self
,
doc
):
revdeps
=
{}
for
spec
in
doc
.
childNodes
:
if
spec
.
nodeType
==
spec
.
ELEMENT_NODE
and
spec
.
tagName
==
"SpecFile
"
:
source
=
spec
.
getElementsByTagName
(
"Source"
)[
0
]
name
=
s
ource
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
deps
=
s
ource
.
getElementsByTagName
(
"BuildDependencies"
)
if
parser
==
"ciksemel
"
:
for
spec
in
doc
.
tags
(
"SpecFile"
):
name
=
s
pec
.
getTag
(
"Source"
)
.
getTagData
(
"Name"
)
deps
=
s
pec
.
getTag
(
"Source"
)
.
getTag
(
"BuildDependencies"
)
if
deps
:
for
sdep
in
deps
:
for
dep
in
sdep
.
childNodes
:
if
dep
.
nodeType
==
dep
.
ELEMENT_NODE
and
dep
.
tagName
==
"Dependency"
:
revdeps
.
setdefault
(
dep
.
childNodes
[
0
]
.
data
,
set
())
.
add
((
name
,
dep
.
toxml
()))
for
dep
in
deps
.
tags
(
"Dependency"
):
revdeps
.
setdefault
(
dep
.
firstChild
()
.
data
(),
set
())
.
add
((
name
,
dep
.
toString
()))
else
:
for
spec
in
doc
.
childNodes
:
if
spec
.
nodeType
==
spec
.
ELEMENT_NODE
and
spec
.
tagName
==
"SpecFile"
:
source
=
spec
.
getElementsByTagName
(
"Source"
)[
0
]
name
=
source
.
getElementsByTagName
(
"Name"
)[
0
]
.
firstChild
.
data
deps
=
source
.
getElementsByTagName
(
"BuildDependencies"
)
if
deps
:
for
sdep
in
deps
:
for
dep
in
sdep
.
childNodes
:
if
dep
.
nodeType
==
dep
.
ELEMENT_NODE
and
dep
.
tagName
==
"Dependency"
:
revdeps
.
setdefault
(
dep
.
childNodes
[
0
]
.
data
,
set
())
.
add
((
name
,
dep
.
toxml
()))
return
revdeps
def
list_sources
(
self
,
repo
=
None
):
...
...
@@ -128,12 +155,24 @@ class SourceDB(lazydb.LazyDB):
return
[]
rev_deps
=
[]
for
pkg
,
dep
in
rvdb
:
node
=
minidom
.
parseString
(
dep
)
.
documentElement
dependency
=
inary
.
analyzer
.
dependency
.
Dependency
()
dependency
.
package
=
node
.
childNodes
[
0
]
.
data
if
node
.
attributes
():
attr
=
node
.
attributes
()[
0
]
dependency
.
__dict__
[
attr
]
=
node
.
getAttribute
(
attr
)
rev_deps
.
append
((
pkg
,
dependency
))
if
parser
==
"ciksemel"
:
for
pkg
,
dep
in
rvdb
:
node
=
ciksemel
.
parseString
(
dep
)
dependency
=
inary
.
analyzer
.
dependency
.
Dependency
()
dependency
.
package
=
node
.
firstChild
()
.
data
()
if
node
.
attributes
():
attr
=
node
.
attributes
()[
0
]
dependency
.
__dict__
[
attr
]
=
node
.
getAttribute
(
attr
)
rev_deps
.
append
((
pkg
,
dependency
))
else
:
for
pkg
,
dep
in
rvdb
:
node
=
minidom
.
parseString
(
dep
)
.
documentElement
dependency
=
inary
.
analyzer
.
dependency
.
Dependency
()
dependency
.
package
=
node
.
childNodes
[
0
]
.
data
if
node
.
attributes
():
attr
=
node
.
attributes
()[
0
]
dependency
.
__dict__
[
attr
]
=
node
.
getAttribute
(
attr
)
rev_deps
.
append
((
pkg
,
dependency
))
return
rev_deps
inary/operations/search.py
Dosyayı görüntüle @
e6179182
...
...
@@ -10,6 +10,7 @@
# Please read the COPYING file.
#
import
inary
import
inary.context
as
ctx
import
inary.db
def
search_package
(
terms
,
lang
=
None
,
repo
=
None
):
...
...
inary/sxml/autoxml.py
Dosyayı görüntüle @
e6179182
...
...
@@ -21,13 +21,11 @@
# System
import
locale
import
types
import
formatter
import
sys
import
io
import
inspect
import
re
import
codecs
import
gettext
__trans
=
gettext
.
translation
(
'inary'
,
fallback
=
True
)
...
...
@@ -528,7 +526,10 @@ class autoxml(oo.autosuper, oo.autoprop):
tag_type
=
spec
[
0
]
assert
type
(
tag_type
)
==
type
(
type
)
def
readtext
(
node
,
blah
):
node
.
normalize
()
# minidom have this :D
try
:
node
.
normalize
()
# ciksemel doesn't have this
except
:
pass