Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
喜羊羊3508
Dak
提交
16c6fc6b
D
Dak
项目概览
喜羊羊3508
/
Dak
10 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dak
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
16c6fc6b
编写于
8月 08, 2008
作者:
M
Mark Hymers
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
an attempt to move the functionaliity into a module
Signed-off-by:
N
Mark Hymers
<
mhy@debian.org
>
上级
6244fb61
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
109 addition
and
89 deletion
+109
-89
dak/process_unchecked.py
dak/process_unchecked.py
+6
-89
daklib/utils.py
daklib/utils.py
+103
-0
未找到文件。
dak/process_unchecked.py
浏览文件 @
16c6fc6b
...
...
@@ -926,96 +926,13 @@ def check_hashes ():
else
:
format
=
int
(
float
(
format
[
0
])),
0
check_hash
(
".changes"
,
files
,
"md5sum"
,
apt_pkg
.
md5sum
)
check_hash
(
".dsc"
,
dsc_files
,
"md5sum"
,
apt_pkg
.
md5sum
)
for
x
in
changes
:
if
x
.
startswith
(
"checksum-"
):
h
=
x
.
split
(
"-"
,
1
)[
1
]
if
h
not
in
dict
(
utils
.
known_hashes
):
reject
(
"Unsupported checksum field in .changes"
%
(
h
))
for
x
in
dsc
:
if
x
.
startswith
(
"checksum-"
):
h
=
x
.
split
(
"-"
,
1
)[
1
]
if
h
not
in
dict
(
utils
.
known_hashes
):
reject
(
"Unsupported checksum field in .dsc"
%
(
h
))
# We have to calculate the hash if we have an earlier changes version than
# the hash appears in rather than require it exist in the changes file
# I hate backwards compatibility
for
h
,
f
,
v
in
utils
.
known_hashes
:
try
:
fs
=
utils
.
build_file_list
(
changes
,
0
,
"checksums-%s"
%
h
,
h
)
if
format
<
v
:
create_hash
(
fs
,
h
,
f
,
files
)
else
:
check_hash
(
".changes %s"
%
(
h
),
fs
,
h
,
f
,
files
)
except
NoFilesFieldError
:
reject
(
"No Checksums-%s: field in .changes"
%
(
h
))
except
UnknownFormatError
,
format
:
reject
(
"%s: unknown format of .changes"
%
(
format
))
except
ParseChangesError
,
line
:
reject
(
"parse error for Checksums-%s in .changes, can't grok: %s."
%
(
h
,
line
))
if
"source"
not
in
changes
[
"architecture"
]:
continue
try
:
fs
=
utils
.
build_file_list
(
dsc
,
1
,
"checksums-%s"
%
h
,
h
)
if
format
<
v
:
create_hash
(
fs
,
h
,
f
,
dsc_files
)
else
:
check_hash
(
".dsc %s"
%
(
h
),
fs
,
h
,
f
,
dsc_files
)
except
UnknownFormatError
,
format
:
reject
(
"%s: unknown format of .dsc"
%
(
format
))
except
NoFilesFieldError
:
reject
(
"No Checksums-%s: field in .dsc"
%
(
h
))
except
ParseChangesError
,
line
:
reject
(
"parse error for Checksums-%s in .dsc, can't grok: %s."
%
(
h
,
line
))
################################################################################
def
create_hash
(
lfiles
,
key
,
testfn
,
basedict
=
None
):
for
f
in
lfiles
.
keys
():
try
:
file_handle
=
utils
.
open_file
(
f
)
except
CantOpenError
:
continue
# Check hash
basedict
[
f
][
'%ssum'
%
key
]
=
testfn
(
file_handle
)
file_handle
.
close
()
################################################################################
def
check_hash
(
where
,
lfiles
,
key
,
testfn
,
basedict
=
None
):
if
basedict
:
for
f
in
basedict
.
keys
():
if
f
not
in
lfiles
:
reject
(
"%s: no %s checksum"
%
(
f
,
key
))
for
f
in
lfiles
.
keys
():
if
basedict
and
f
not
in
basedict
:
reject
(
"%s: extraneous entry in %s checksums"
%
(
f
,
key
))
try
:
file_handle
=
utils
.
open_file
(
f
)
except
CantOpenError
:
continue
utils
.
check_hash
(
".changes"
,
files
,
"md5sum"
,
apt_pkg
.
md5sum
)
utils
.
check_hash
(
".dsc"
,
dsc_files
,
"md5sum"
,
apt_pkg
.
md5sum
)
# Check hash
if
testfn
(
file_handle
)
!=
lfiles
[
f
][
key
]:
reject
(
"%s: %s check failed."
%
(
f
,
key
))
file_handle
.
close
()
# Store the hashes for later use
basedict
[
f
][
'%ssum'
%
key
]
=
lfiles
[
f
][
key
]
# Check size
actual_size
=
os
.
stat
(
f
)[
stat
.
ST_SIZE
]
size
=
int
(
lfiles
[
f
][
"size"
])
if
size
!=
actual_size
:
reject
(
"%s: actual file size (%s) does not match size (%s) in %s"
%
(
f
,
actual_size
,
size
,
where
))
# This is stupid API, but it'll have to do for now until
# we actually have proper abstraction
for
m
in
utils
.
ensure_hashes
(
Upload
):
reject
(
m
)
################################################################################
...
...
daklib/utils.py
浏览文件 @
16c6fc6b
...
...
@@ -211,6 +211,109 @@ The rules for (signing_rules == 1)-mode are:
################################################################################
def
create_hash
(
lfiles
,
key
,
testfn
,
basedict
=
None
):
rejmsg
=
[]
for
f
in
lfiles
.
keys
():
try
:
file_handle
=
open_file
(
f
)
except
CantOpenError
:
rejmsg
.
append
(
"Could not open file %s for checksumming"
%
(
f
))
# Check hash
basedict
[
f
][
'%ssum'
%
key
]
=
testfn
(
file_handle
)
file_handle
.
close
()
return
rejmsg
################################################################################
def
check_hash
(
where
,
lfiles
,
key
,
testfn
,
basedict
=
None
):
rejmsg
=
[]
if
basedict
:
for
f
in
basedict
.
keys
():
if
f
not
in
lfiles
:
rejmsg
.
append
(
"%s: no %s checksum"
%
(
f
,
key
))
for
f
in
lfiles
.
keys
():
if
basedict
and
f
not
in
basedict
:
rejmsg
.
append
(
"%s: extraneous entry in %s checksums"
%
(
f
,
key
))
try
:
file_handle
=
open_file
(
f
)
except
CantOpenError
:
continue
# Check hash
if
testfn
(
file_handle
)
!=
lfiles
[
f
][
key
]:
rejmsg
.
append
(
"%s: %s check failed."
%
(
f
,
key
))
file_handle
.
close
()
# Store the hashes for later use
basedict
[
f
][
'%ssum'
%
key
]
=
lfiles
[
f
][
key
]
# Check size
actual_size
=
os
.
stat
(
f
)[
stat
.
ST_SIZE
]
size
=
int
(
lfiles
[
f
][
"size"
])
if
size
!=
actual_size
:
rejmsg
.
append
(
"%s: actual file size (%s) does not match size (%s) in %s"
%
(
f
,
actual_size
,
size
,
where
))
return
rejmsg
################################################################################
def
ensure_hashes
(
Upload
):
rejmsg
=
[]
for
x
in
Upload
.
changes
:
if
x
.
startswith
(
"checksum-"
):
h
=
x
.
split
(
"-"
,
1
)[
1
]
if
h
not
in
dict
(
known_hashes
):
rejmsg
.
append
(
"Unsupported checksum field in .changes"
%
(
h
))
for
x
in
Upload
.
dsc
:
if
x
.
startswith
(
"checksum-"
):
h
=
x
.
split
(
"-"
,
1
)[
1
]
if
h
not
in
dict
(
known_hashes
):
rejmsg
.
append
(
"Unsupported checksum field in .dsc"
%
(
h
))
# We have to calculate the hash if we have an earlier changes version than
# the hash appears in rather than require it exist in the changes file
# I hate backwards compatibility
for
h
,
f
,
v
in
known_hashes
:
try
:
fs
=
build_file_list
(
Upload
.
changes
,
0
,
"checksums-%s"
%
h
,
h
)
if
format
<
v
:
for
m
in
create_hash
(
fs
,
h
,
f
,
Upload
.
files
):
rejmsg
.
append
(
m
)
else
:
for
m
in
check_hash
(
".changes %s"
%
(
h
),
fs
,
h
,
f
,
Upload
.
files
):
rejmsg
.
append
(
m
)
except
NoFilesFieldError
:
rejmsg
.
append
(
"No Checksums-%s: field in .changes"
%
(
h
))
except
UnknownFormatError
,
format
:
rejmsg
.
append
(
"%s: unknown format of .changes"
%
(
format
))
except
ParseChangesError
,
line
:
rejmsg
.
append
(
"parse error for Checksums-%s in .changes, can't grok: %s."
%
(
h
,
line
))
if
"source"
not
in
Upload
.
changes
[
"architecture"
]:
continue
try
:
fs
=
build_file_list
(
Upload
.
dsc
,
1
,
"checksums-%s"
%
h
,
h
)
if
format
<
v
:
for
m
in
create_hash
(
fs
,
h
,
f
,
Upload
.
dsc_files
):
rejmsg
.
append
(
m
)
else
:
for
m
in
check_hash
(
".dsc %s"
%
(
h
),
fs
,
h
,
f
,
Upload
.
dsc_files
):
rejmsg
.
append
(
m
)
except
UnknownFormatError
,
format
:
rejmsg
.
append
(
"%s: unknown format of .dsc"
%
(
format
))
except
NoFilesFieldError
:
rejmsg
.
append
(
"No Checksums-%s: field in .dsc"
%
(
h
))
except
ParseChangesError
,
line
:
rejmsg
.
append
(
"parse error for Checksums-%s in .dsc, can't grok: %s."
%
(
h
,
line
))
return
rejmsg
################################################################################
# Dropped support for 1.4 and ``buggy dchanges 3.4'' (?!) compared to di.pl
def
build_file_list
(
changes
,
is_a_dsc
=
0
,
field
=
"files"
,
hashname
=
"md5sum"
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录