Skip to content

Commit 04e24e0

Browse files
authored
Merge pull request #3723 from nexB/debian-package-detection
Improve debian package detection
2 parents cafcbcf + 43dc430 commit 04e24e0

File tree

11 files changed

+772
-11
lines changed

11 files changed

+772
-11
lines changed

src/packagedcode/debian.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def assign_package_to_resources(cls, package, resource, codebase, package_adder)
127127
class DebianControlFileInExtractedDebHandler(models.DatafileHandler):
128128
datasource_id = 'debian_control_extracted_deb'
129129
default_package_type = 'deb'
130-
path_patterns = ('*/control.tar.gz-extract/control',)
130+
path_patterns = ('*/control.tar.gz-extract/control','*/control.tar.xz-extract/control')
131131
description = 'Debian control file - extracted layout'
132132
documentation_url = 'https://www.debian.org/doc/debian-policy/ch-controlfields.html'
133133

@@ -590,7 +590,7 @@ def parse_debian_files_list(location, datasource_id, package_type):
590590
else:
591591
name = None
592592
# For DebianMd5sumFilelistInPackageHandler we cannot infer name
593-
if not name == "md5sums":
593+
if not filename == "md5sums":
594594
name = filename
595595

596596
file_references = []
@@ -663,6 +663,19 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No
663663
party = models.Party(role='maintainer', name=maintainer_name, email=maintainer_email)
664664
parties.append(party)
665665

666+
uploaders = debian_data.get('uploaders')
667+
if uploaders:
668+
for uploader in uploaders.split(", "):
669+
uploader_name, uploader_email = parse_debian_maintainers(uploader)
670+
party = models.Party(role='uploader', name=uploader_name, email=uploader_email)
671+
parties.append(party)
672+
673+
vcs_url = debian_data.get('vcs-git')
674+
if vcs_url and ' ' in vcs_url:
675+
vcs_url = vcs_url.split(' ')[0]
676+
677+
code_view_url = debian_data.get('vcs-browser')
678+
666679
keywords = []
667680
keyword = debian_data.get('section')
668681
if keyword:
@@ -712,6 +725,8 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No
712725
qualifiers=qualifiers,
713726
description=description,
714727
homepage_url=homepage_url,
728+
vcs_url=vcs_url,
729+
code_view_url=code_view_url,
715730
size=size,
716731
source_packages=source_packages,
717732
keywords=keywords,

tests/packagedcode/data/debian/control.expected.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,13 @@
140140
"name": "Bdale Garbee",
141141
"email": "bdale@gag.com",
142142
"url": null
143+
},
144+
{
145+
"type": null,
146+
"role": "uploader",
147+
"name": "Carl Worth",
148+
"email": "cworth@cworth.org",
149+
"url": null
143150
}
144151
],
145152
"keywords": [
@@ -153,8 +160,8 @@
153160
"sha256": null,
154161
"sha512": null,
155162
"bug_tracking_url": null,
156-
"code_view_url": null,
157-
"vcs_url": null,
163+
"code_view_url": "https://salsa.debian.org/debian/gzip",
164+
"vcs_url": "https://salsa.debian.org/debian/gzip.git",
158165
"copyright": null,
159166
"holder": null,
160167
"declared_license_expression": null,

tests/packagedcode/data/debian/dsc_files/adduser_3.118+deb11u1.dsc.expected.json

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@
1919
"name": "Debian Adduser Developers",
2020
"email": "adduser@packages.debian.org",
2121
"url": null
22+
},
23+
{
24+
"type": null,
25+
"role": "uploader",
26+
"name": "Marc Haber",
27+
"email": "mh+debian-packages@zugschlus.de",
28+
"url": null
2229
}
2330
],
2431
"keywords": [],
@@ -30,8 +37,8 @@
3037
"sha256": null,
3138
"sha512": null,
3239
"bug_tracking_url": null,
33-
"code_view_url": null,
34-
"vcs_url": null,
40+
"code_view_url": "https://salsa.debian.org/debian/adduser",
41+
"vcs_url": "https://salsa.debian.org/debian/adduser.git",
3542
"copyright": null,
3643
"holder": null,
3744
"declared_license_expression": null,
@@ -84,6 +91,13 @@
8491
"name": "Debian Adduser Developers",
8592
"email": "adduser@packages.debian.org",
8693
"url": null
94+
},
95+
{
96+
"type": null,
97+
"role": "uploader",
98+
"name": "Marc Haber",
99+
"email": "mh+debian-packages@zugschlus.de",
100+
"url": null
87101
}
88102
],
89103
"keywords": [],
@@ -95,8 +109,8 @@
95109
"sha256": null,
96110
"sha512": null,
97111
"bug_tracking_url": null,
98-
"code_view_url": null,
99-
"vcs_url": null,
112+
"code_view_url": "https://salsa.debian.org/debian/adduser",
113+
"vcs_url": "https://salsa.debian.org/debian/adduser.git",
100114
"copyright": null,
101115
"holder": null,
102116
"declared_license_expression": null,
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
-----BEGIN PGP SIGNED MESSAGE-----
2+
Hash: SHA512
3+
4+
Format: 3.0 (quilt)
5+
Source: zsh
6+
Binary: zsh-common, zsh, zsh-doc, zsh-static, zsh-dev
7+
Architecture: any all
8+
Version: 5.7.1-1+deb10u1
9+
Maintainer: Debian Zsh Maintainers <pkg-zsh-devel@lists.alioth.debian.org>
10+
Uploaders: Michael Prokop <mika@debian.org>, Axel Beckert <abe@debian.org>, Frank Terbeck <ft@bewatermyfriend.org>, Richard Hartmann <richih@debian.org>
11+
Homepage: https://www.zsh.org/
12+
Standards-Version: 4.3.0
13+
Vcs-Browser: https://salsa.debian.org/debian/zsh
14+
Vcs-Git: https://salsa.debian.org/debian/zsh.git -b debian
15+
Testsuite: autopkgtest
16+
Testsuite-Triggers: adequate
17+
Build-Depends: bsdmainutils, cm-super-minimal, debhelper-compat (= 12), dpkg-dev (>= 1.16.2~), ghostscript, groff, groff-base, libcap-dev [linux-any], libncursesw5-dev, libpcre3-dev, texinfo (>= 5~), texlive-fonts-recommended, texlive-latex-base, texlive-latex-recommended, yodl (>= 3.08.01) | yodl (<< 3.08.00)
18+
Package-List:
19+
zsh deb shells optional arch=any
20+
zsh-common deb shells optional arch=all
21+
zsh-dev deb libdevel optional arch=any
22+
zsh-doc deb doc optional arch=all
23+
zsh-static deb shells optional arch=any
24+
Checksums-Sha1:
25+
b2fd47fdb878aa681edc974864e37baae9b0d6b7 2776796 zsh_5.7.1.orig.tar.xz
26+
14a8d38d3fae5b8eec0b124be5c943a60c4e8fec 87028 zsh_5.7.1-1+deb10u1.debian.tar.xz
27+
Checksums-Sha256:
28+
439aafb4341522c307a67a2680e95fadb1b35a5c7f332089b9cc5154496570ca 2776796 zsh_5.7.1.orig.tar.xz
29+
ecbe22ed6a2b8dcaf10eff02b6b66583ce8d108a936624fc424c72188dea1ddd 87028 zsh_5.7.1-1+deb10u1.debian.tar.xz
30+
Files:
31+
acc1a32ef5b3120ead5c6f0d011ceb76 2776796 zsh_5.7.1.orig.tar.xz
32+
d0f5fe26d9548331d9757e26b95c7aaf 87028 zsh_5.7.1-1+deb10u1.debian.tar.xz
33+
34+
-----BEGIN PGP SIGNATURE-----
35+
36+
iQIzBAEBCgAdFiEERoyJeTtCmBnp12Ema+Zjx1o1yXUFAmIMYK4ACgkQa+Zjx1o1
37+
yXWTgw//SzaiMwbl8gSiQ/mB7+KPCeqL0o44q8oVAbj0WWhlh6yVUdjIcoHk6Zr3
38+
Om4b3C5pU1l64jQ/JH5GP4i/7NnHAttobDL5zh9yvXAjUkUSfhBB6mJPeKT2QlHY
39+
3SsvWiwtZOU8hPdwW48ATFiSSiYka+hKEM5nr5f/kI++yg2Rg7d1b5svaD3BMytI
40+
Hl25comMwLgPeL4aIB7j8UL0sQT2zb/O5CK4aZr3CPUxy9OzBAwpQuukNNsJJ3Zg
41+
g+a6Y6ADLAdhkav1JeZIF6LQ4Q9sk4Cqkp+CFenvRtDv2BDdosOXwOnBUBlm1A2j
42+
yPuOcPdgSDqctMohSWVehDqGZK8dPjIOVq/sX3yKzwtNWdil9aErjGWxQVRSMyfg
43+
fqEaCHYdpRpfrE8QWk+7TqovRqv3PaAmY6wahEAd5buniRScDF2yobT95qDOMnfj
44+
fR1YDDH0cRkePHt+VHQUzM1mO4c/5Obhxfd8uExR+8KpO4SnsT8z7wa1J1O+jWGg
45+
88zuhJ2HUCDGHdVlpgksagnNkmbT1Oohml6YfTAtDO4eXXJeTPmSpOYNzRCMsN0D
46+
V1tY+awJuR0VSNjo+3X7DKyC/pKJiCzk+MBVogmFvzfBwJhYiLbVnVElNic/2J2J
47+
Rz6VMPKIYqKUTyIgsQML0IkK8D9Lpp1LHqLNbUVt2aWcYlqgPBU=
48+
=cPZC
49+
-----END PGP SIGNATURE-----
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
{
2+
"packages": [
3+
{
4+
"type": "deb",
5+
"namespace": "debian",
6+
"name": "zsh",
7+
"version": "5.7.1-1+deb10u1",
8+
"qualifiers": {
9+
"arch": "any all"
10+
},
11+
"subpath": null,
12+
"primary_language": null,
13+
"description": null,
14+
"release_date": null,
15+
"parties": [
16+
{
17+
"type": null,
18+
"role": "maintainer",
19+
"name": "Debian Zsh Maintainers",
20+
"email": "pkg-zsh-devel@lists.alioth.debian.org",
21+
"url": null
22+
},
23+
{
24+
"type": null,
25+
"role": "uploader",
26+
"name": "Michael Prokop",
27+
"email": "mika@debian.org",
28+
"url": null
29+
},
30+
{
31+
"type": null,
32+
"role": "uploader",
33+
"name": "Axel Beckert",
34+
"email": "abe@debian.org",
35+
"url": null
36+
},
37+
{
38+
"type": null,
39+
"role": "uploader",
40+
"name": "Frank Terbeck",
41+
"email": "ft@bewatermyfriend.org",
42+
"url": null
43+
},
44+
{
45+
"type": null,
46+
"role": "uploader",
47+
"name": "Richard Hartmann",
48+
"email": "richih@debian.org",
49+
"url": null
50+
}
51+
],
52+
"keywords": [],
53+
"homepage_url": "https://www.zsh.org/",
54+
"download_url": null,
55+
"size": null,
56+
"sha1": null,
57+
"md5": null,
58+
"sha256": null,
59+
"sha512": null,
60+
"bug_tracking_url": null,
61+
"code_view_url": "https://salsa.debian.org/debian/zsh",
62+
"vcs_url": "https://salsa.debian.org/debian/zsh.git",
63+
"copyright": null,
64+
"holder": null,
65+
"declared_license_expression": null,
66+
"declared_license_expression_spdx": null,
67+
"license_detections": [],
68+
"other_license_expression": null,
69+
"other_license_expression_spdx": null,
70+
"other_license_detections": [],
71+
"extracted_license_statement": null,
72+
"notice_text": null,
73+
"source_packages": [
74+
"pkg:deb/debian/zsh"
75+
],
76+
"extra_data": {},
77+
"repository_homepage_url": null,
78+
"repository_download_url": null,
79+
"api_data_url": null,
80+
"package_uid": "pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all&uuid=fixed-uid-done-for-testing-5642512d1758",
81+
"datafile_paths": [
82+
"zsh_5.7.1-1+deb10u1.dsc"
83+
],
84+
"datasource_ids": [
85+
"debian_source_control_dsc"
86+
],
87+
"purl": "pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all"
88+
}
89+
],
90+
"dependencies": [],
91+
"files": [
92+
{
93+
"path": "zsh_5.7.1-1+deb10u1.dsc",
94+
"type": "file",
95+
"package_data": [
96+
{
97+
"type": "deb",
98+
"namespace": "debian",
99+
"name": "zsh",
100+
"version": "5.7.1-1+deb10u1",
101+
"qualifiers": {
102+
"arch": "any all"
103+
},
104+
"subpath": null,
105+
"primary_language": null,
106+
"description": null,
107+
"release_date": null,
108+
"parties": [
109+
{
110+
"type": null,
111+
"role": "maintainer",
112+
"name": "Debian Zsh Maintainers",
113+
"email": "pkg-zsh-devel@lists.alioth.debian.org",
114+
"url": null
115+
},
116+
{
117+
"type": null,
118+
"role": "uploader",
119+
"name": "Michael Prokop",
120+
"email": "mika@debian.org",
121+
"url": null
122+
},
123+
{
124+
"type": null,
125+
"role": "uploader",
126+
"name": "Axel Beckert",
127+
"email": "abe@debian.org",
128+
"url": null
129+
},
130+
{
131+
"type": null,
132+
"role": "uploader",
133+
"name": "Frank Terbeck",
134+
"email": "ft@bewatermyfriend.org",
135+
"url": null
136+
},
137+
{
138+
"type": null,
139+
"role": "uploader",
140+
"name": "Richard Hartmann",
141+
"email": "richih@debian.org",
142+
"url": null
143+
}
144+
],
145+
"keywords": [],
146+
"homepage_url": "https://www.zsh.org/",
147+
"download_url": null,
148+
"size": null,
149+
"sha1": null,
150+
"md5": null,
151+
"sha256": null,
152+
"sha512": null,
153+
"bug_tracking_url": null,
154+
"code_view_url": "https://salsa.debian.org/debian/zsh",
155+
"vcs_url": "https://salsa.debian.org/debian/zsh.git",
156+
"copyright": null,
157+
"holder": null,
158+
"declared_license_expression": null,
159+
"declared_license_expression_spdx": null,
160+
"license_detections": [],
161+
"other_license_expression": null,
162+
"other_license_expression_spdx": null,
163+
"other_license_detections": [],
164+
"extracted_license_statement": null,
165+
"notice_text": null,
166+
"source_packages": [
167+
"pkg:deb/debian/zsh"
168+
],
169+
"file_references": [],
170+
"extra_data": {},
171+
"dependencies": [],
172+
"repository_homepage_url": null,
173+
"repository_download_url": null,
174+
"api_data_url": null,
175+
"datasource_id": "debian_source_control_dsc",
176+
"purl": "pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all"
177+
}
178+
],
179+
"for_packages": [
180+
"pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all&uuid=fixed-uid-done-for-testing-5642512d1758"
181+
],
182+
"scan_errors": []
183+
}
184+
]
185+
}

0 commit comments

Comments
 (0)