ossa-scanner 0.1.32__py3-none-any.whl → 0.1.34__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ossa_scanner/__init__.py +1 -1
- ossa_scanner/utils/package_manager.py +21 -5
- {ossa_scanner-0.1.32.dist-info → ossa_scanner-0.1.34.dist-info}/METADATA +1 -1
- {ossa_scanner-0.1.32.dist-info → ossa_scanner-0.1.34.dist-info}/RECORD +8 -8
- {ossa_scanner-0.1.32.dist-info → ossa_scanner-0.1.34.dist-info}/LICENSE +0 -0
- {ossa_scanner-0.1.32.dist-info → ossa_scanner-0.1.34.dist-info}/WHEEL +0 -0
- {ossa_scanner-0.1.32.dist-info → ossa_scanner-0.1.34.dist-info}/entry_points.txt +0 -0
- {ossa_scanner-0.1.32.dist-info → ossa_scanner-0.1.34.dist-info}/top_level.txt +0 -0
ossa_scanner/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.1.
|
1
|
+
__version__ = "0.1.34"
|
@@ -142,12 +142,13 @@ def parse_apt_info(output, package_name, output_dir):
|
|
142
142
|
|
143
143
|
if "licenses" not in info:
|
144
144
|
info["licenses"] = apt_get_license_from_source(package_name, output_dir)
|
145
|
-
|
145
|
+
print(package_name, info["licenses"])
|
146
|
+
if "licenses" in info:
|
146
147
|
info["licenses"] = extract_spdx_ids(info["licenses"])
|
147
148
|
info["severity"] = license_classificaton(info["licenses"])
|
148
|
-
|
149
|
-
info["severity"] = "Informational"
|
149
|
+
|
150
150
|
print(package_name, output_dir, info)
|
151
|
+
|
151
152
|
# Ensure all keys are present even if data is missing
|
152
153
|
return {
|
153
154
|
"licenses": info.get("licenses", "NOASSERTION"),
|
@@ -157,21 +158,36 @@ def parse_apt_info(output, package_name, output_dir):
|
|
157
158
|
}
|
158
159
|
|
159
160
|
def apt_get_license_from_source(package_name, output_dir):
|
161
|
+
"""Fetches source package and extracts license from debian/copyright."""
|
162
|
+
|
160
163
|
try:
|
161
|
-
|
162
|
-
|
164
|
+
# Ensure output directory exists
|
165
|
+
os.makedirs(output_dir, exist_ok=True)
|
166
|
+
|
167
|
+
# Run apt-get source inside output_dir
|
168
|
+
subprocess.run(["apt-get", "source", package_name], check=True, capture_output=True, text=True, cwd=output_dir)
|
169
|
+
|
170
|
+
# Find the extracted source directory (since apt-get source doesn't always use package_name directly)
|
171
|
+
source_dirs = glob.glob(os.path.join(output_dir, f"{package_name}-*")) # Wildcard match for versioned package dirs
|
163
172
|
if not source_dirs:
|
164
173
|
return "NOASSERTION"
|
174
|
+
|
165
175
|
package_dir = source_dirs[0]
|
166
176
|
copyright_file = os.path.join(package_dir, "debian", "copyright")
|
177
|
+
|
178
|
+
# Extract license information
|
167
179
|
licenses = []
|
168
180
|
if os.path.exists(copyright_file):
|
169
181
|
with open(copyright_file, "r", encoding="utf-8") as f:
|
170
182
|
for line in f:
|
171
183
|
if re.search(r"(?i)license:", line):
|
172
184
|
licenses.append(line.split(":", 1)[1].strip())
|
185
|
+
|
186
|
+
# Cleanup
|
173
187
|
shutil.rmtree(output_dir, ignore_errors=True)
|
188
|
+
|
174
189
|
return ", ".join(set(licenses)) if licenses else "NOASSERTION"
|
190
|
+
|
175
191
|
except subprocess.CalledProcessError as e:
|
176
192
|
print(f"Error fetching source package: {e}")
|
177
193
|
return "NOASSERTION"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ossa_scanner/__init__.py,sha256=
|
1
|
+
ossa_scanner/__init__.py,sha256=79r5jd-MqbhXLbIBDVBqUJvhvcucjkaId96r46KF18I,23
|
2
2
|
ossa_scanner/cli.py,sha256=sgr8NFpf_Ut84KYFQjOKRxv8CfAMaTPhMo7DbR53lT4,2311
|
3
3
|
ossa_scanner/scanner.py,sha256=P_pouAPLMWUq_tjiwDyBYvs6cnXDs5VHB8305ui2VHI,4802
|
4
4
|
ossa_scanner/uploader.py,sha256=dPbhSLlQcDyHP-6Ugn6BzYGn_VQ1Ik6TWt2138k3REo,1837
|
@@ -6,11 +6,11 @@ ossa_scanner/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
6
6
|
ossa_scanner/utils/downloader.py,sha256=AGRhJU9YducTe6mY5-7mZ4fRTFg2tcfz1DS0Nee-wM0,5693
|
7
7
|
ossa_scanner/utils/hash_calculator.py,sha256=LrDKngWOPbizYJWab2sDJDLB4pD_RrI51L0cZt3VjJY,960
|
8
8
|
ossa_scanner/utils/os_detection.py,sha256=35VbUbFklzd7aojgltKf2PxbnVFcpREA7Tri2YI5nfY,417
|
9
|
-
ossa_scanner/utils/package_manager.py,sha256=
|
9
|
+
ossa_scanner/utils/package_manager.py,sha256=4Nk51B7IpLuJQnM4wQD_UTJBovI07KpDU0VcZM9jBBI,8959
|
10
10
|
ossa_scanner/utils/swhid_calculator.py,sha256=7-bO4RglJr-kt5SjUfnlcPZD0k0-s_dveHEjRo-zEMc,1317
|
11
|
-
ossa_scanner-0.1.
|
12
|
-
ossa_scanner-0.1.
|
13
|
-
ossa_scanner-0.1.
|
14
|
-
ossa_scanner-0.1.
|
15
|
-
ossa_scanner-0.1.
|
16
|
-
ossa_scanner-0.1.
|
11
|
+
ossa_scanner-0.1.34.dist-info/LICENSE,sha256=9slQ_XNiEkio28l90NwihP7a90fCL2GQ6YhcVXTBls4,1064
|
12
|
+
ossa_scanner-0.1.34.dist-info/METADATA,sha256=7xU188NKa9NHaFeAfXfrdKC6VgyjIOgQv-rfTi4boK0,1938
|
13
|
+
ossa_scanner-0.1.34.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
14
|
+
ossa_scanner-0.1.34.dist-info/entry_points.txt,sha256=UVoAo-wTPxT82g3cfqTs2CmQnazd57TAwhd9VwEKD1c,55
|
15
|
+
ossa_scanner-0.1.34.dist-info/top_level.txt,sha256=uUp5CvhZfJLapXn9DyUXvgH7QK3uzF2ibH943lWN5Bs,13
|
16
|
+
ossa_scanner-0.1.34.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|