Skip to content
GitLab
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Register
Sign in
Toggle navigation
Menu
Reproducible Builds
diffoscope
Compare revisions
0cba1b1f10cf0ec68aa726cbe1d196401f49df36...a9ecfb781ae696f23d098d2b3c5502b7a438bee4
Commits (2)
Also check, for example, /usr/lib/x86_64-linux-gnu to our PATH.
· eb34fe74
Chris Lamb
authored
Dec 29, 2021
This is so we can find xb-tool.
eb34fe74
Add support for XMLb files. (Closes:
#295
)
· a9ecfb78
Chris Lamb
authored
Dec 29, 2021
a9ecfb78
Hide whitespace changes
Inline
Side-by-side
diffoscope/comparators/__init__.py
View file @
a9ecfb78
...
...
@@ -50,6 +50,7 @@ class ComparatorManager:
(
"javascript.JavaScriptFile"
,),
(
"json.JSONFile"
,),
(
"xml.XMLFile"
,),
(
"xmlb.XMLBFile"
,),
(
"openssl.Pkcs7File"
,),
(
"openssl.MobileProvisionFile"
,),
(
"text.TextFile"
,),
...
...
diffoscope/comparators/xmlb.py
0 → 100644
View file @
a9ecfb78
#
# diffoscope: in-depth comparison of files, archives, and directories
#
# Copyright © 2021 Chris Lamb <lamby@debian.org>
#
# diffoscope is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# diffoscope is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
from
diffoscope.tools
import
tool_required
from
diffoscope.difference
import
Difference
from
.utils.file
import
File
from
.utils.command
import
Command
XMLB_MAGIC
=
b
"XMLb"
class
XbTool
(
Command
):
@tool_required
(
"xb-tool"
)
def
cmdline
(
self
):
return
[
"xb-tool"
,
"dump"
,
self
.
path
]
class
XMLBFile
(
File
):
DESCRIPTION
=
"XMLB files"
FILE_EXTENSION_SUFFIX
=
{
".xb"
}
@classmethod
def
recognizes
(
cls
,
file
):
if
not
super
().
recognizes
(
file
):
return
False
return
file
.
file_header
.
startswith
(
XMLB_MAGIC
)
def
compare_details
(
self
,
other
,
source
=
None
):
return
[
Difference
.
from_operation
(
XbTool
,
self
.
path
,
other
.
path
)]
diffoscope/external_tools.py
View file @
a9ecfb78
...
...
@@ -238,6 +238,7 @@ EXTERNAL_TOOLS = {
"zipnote"
:
{
"debian"
:
"zip"
,
"guix"
:
"zip"
},
"procyon"
:
{
"debian"
:
"procyon-decompiler"
},
"dumpxsb"
:
{
"debian"
:
"xmlbeans"
},
"xb-tool"
:
{
"debian"
:
"libxmlb-dev"
},
"zstd"
:
{
"debian"
:
"zstd"
,
"guix"
:
"zstd"
},
}
...
...
diffoscope/path.py
View file @
a9ecfb78
#
# diffoscope: in-depth comparison of files, archives, and directories
#
# Copyright © 2017, 2020 Chris Lamb <lamby@debian.org>
# Copyright © 2017, 2020
, 2021
Chris Lamb <lamby@debian.org>
#
# diffoscope is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
...
...
@@ -17,12 +17,23 @@
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
import
os
import
sys
def
set_path
():
to_add
=
[
"/sbin"
,
"/usr/sbin"
,
"/usr/local/sbin"
]
pathlist
=
os
.
environ
[
"PATH"
].
split
(
os
.
pathsep
)
for
x
in
(
"/sbin"
,
"/usr/sbin"
,
"/usr/local/sbin"
):
# Check the /usr/lib/<multiarch-triplet directory as well.
try
:
arch_dir
=
os
.
path
.
join
(
"/usr/lib"
,
sys
.
implementation
.
_multiarch
)
except
AttributeError
:
pass
else
:
if
os
.
path
.
exists
(
arch_dir
):
to_add
.
append
(
arch_dir
)
for
x
in
to_add
:
if
x
not
in
pathlist
:
pathlist
.
append
(
x
)
...
...