Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
喜羊羊3508
Dak
提交
e33a5a49
D
Dak
项目概览
喜羊羊3508
/
Dak
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
e33a5a49
编写于
6月 12, 2015
作者:
N
Niels Thykier
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto-decruft: Merge groups with same name
Signed-off-by:
N
Niels Thykier
<
niels@thykier.net
>
上级
fdbef587
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
65 addition
and
11 deletion
+65
-11
dak/auto_decruft.py
dak/auto_decruft.py
+65
-11
未找到文件。
dak/auto_decruft.py
浏览文件 @
e33a5a49
...
...
@@ -143,6 +143,52 @@ def remove_groups(groups, suite_id, suite_name, session):
remove
(
session
,
message
,
[
suite_name
],
list
(
q
),
partial
=
True
,
whoami
=
"DAK's auto-decrufter"
)
def
dedup
(
*
args
):
seen
=
set
()
for
iterable
in
args
:
for
value
in
iterable
:
if
value
not
in
seen
:
seen
.
add
(
value
)
yield
value
def
merge_group
(
groupA
,
groupB
):
"""Merges two removal groups into one
Note that some values are taken entirely from groupA (e.g. name and message)
@type groupA: dict
@param groupA: A removal group
@type groupB: dict
@param groupB: Another removal group
@rtype: dict
@returns: A merged group
"""
pkg_list
=
sorted
(
dedup
(
groupA
[
"packages"
],
groupB
[
"packages"
]))
arch_list
=
sorted
(
dedup
(
groupA
[
"architectures"
],
groupB
[
"architectures"
]),
cmp
=
utils
.
arch_compare_sw
)
arch_list_id
=
dedup
(
groupA
[
"architecture_ids"
],
groupB
[
"architecture_ids"
])
removalA
=
groupA
[
"removal_request"
]
removalB
=
groupB
[
"removal_request"
]
new_removal
=
{}
for
pkg
in
dedup
(
removalA
,
removalB
):
listA
=
removalA
[
pkg
]
if
pkg
in
removalA
else
[]
listB
=
removalB
[
pkg
]
if
pkg
in
removalB
else
[]
new_removal
[
pkg
]
=
sorted
(
dedup
(
listA
,
listB
),
cmp
=
utils
.
arch_compare_sw
)
merged_group
=
{
"name"
:
groupA
[
"name"
],
"packages"
:
tuple
(
pkg_list
),
"architectures"
:
arch_list
,
"architecture_ids"
:
tuple
(
arch_list_id
),
"message"
:
groupA
[
"message"
],
"removal_request"
:
new_removal
,
}
return
merged_group
def
auto_decruft_suite
(
suite_name
,
suite_id
,
session
,
dryrun
,
debug
):
"""Run the auto-decrufter on a given suite
...
...
@@ -172,9 +218,9 @@ def auto_decruft_suite(suite_name, suite_id, session, dryrun, debug):
)
for
group
in
group_generator
:
group_name
=
group
[
"name"
]
if
group_name
not
in
groups
:
pkgs
=
group
[
"packages"
]
affected_archs
=
group
[
"architectures"
]
removal_request
=
group
[
"removal_request"
]
# If we remove an arch:all package, then the breakage can occur on any
# of the architectures.
if
"all"
in
affected_archs
:
...
...
@@ -183,13 +229,21 @@ def auto_decruft_suite(suite_name, suite_id, session, dryrun, debug):
pkg_arch2groups
[
pkg_arch
].
add
(
group_name
)
groups
[
group_name
]
=
group
group_order
.
append
(
group_name
)
else
:
# This case usually happens when versions differ between architectures...
if
debug
:
print
"N: Merging group %s"
%
(
group_name
)
groups
[
group_name
]
=
merge_group
(
groups
[
group_name
],
group
)
for
group_name
in
group_order
:
removal_request
=
groups
[
group_name
][
"removal_request"
]
full_removal_request
.
extend
(
removal_request
.
iteritems
())
if
not
groups
:
if
debug
:
print
"N: Found no candidates"
return
if
debug
:
print
"N: Considering to remove the following packages:"
for
group_name
in
sorted
(
groups
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录