pycargoebuild 0.17.1__tar.gz → 0.17.2__tar.gz
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.
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/PKG-INFO +1 -1
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pycargoebuild/__init__.py +1 -1
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pycargoebuild/__main__.py +15 -18
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pycargoebuild/cargo.py +6 -10
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pycargoebuild/ebuild.py +11 -7
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pycargoebuild/fetch.py +6 -2
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pycargoebuild/format.py +4 -2
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pycargoebuild/license.py +8 -4
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/pyproject.toml +3 -21
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/test/test_ebuild.py +1 -1
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/tox.ini +4 -3
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/COPYING +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/README.rst +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/data/share/bash-completion/completions/pycargoebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/__init__.py +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/alass-2.0.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/attest-0.1.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/bindgen-0.63.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/blake3-0.3.3.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/cryptography-38.0.3.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/fish-shell-4.8.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/fractal-5.0.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/lemmy_server-0.18.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/license-mapping.conf +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/mdbook-linkcheck-0.7.7.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/milkshake-terminal-0.0.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/news_flash_gtk-0.0.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/qiskit-terra-0.22.3.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/ruffle_core-0.1.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/rustic-rs-0.5.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/rustls-0.20.7.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/rustworkx-0.12.1.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/setuptools-rust-1.5.2.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/synapse-0.1.0.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/test_integration.py +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/watchfiles-0.18.1.ebuild +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/test/__init__.py +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/test/conftest.py +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/test/test_cargo.py +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/test/test_fetch.py +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/test/test_format.py +0 -0
- {pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/test/test_license.py +0 -0
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
# (c) 2022-2026 Michał Górny <mgorny@gentoo.org>
|
|
3
3
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
import argparse
|
|
6
8
|
import datetime
|
|
7
9
|
import enum
|
|
@@ -90,7 +92,7 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
90
92
|
action="store_true",
|
|
91
93
|
help="Force overwriting the output file")
|
|
92
94
|
opt_g.add_argument("-i", "--input", "--inplace",
|
|
93
|
-
type=
|
|
95
|
+
type=Path,
|
|
94
96
|
metavar="INPUT",
|
|
95
97
|
help="Update the CRATES and LICENSE variables "
|
|
96
98
|
"in the specified ebuild instead of creating "
|
|
@@ -117,7 +119,7 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
117
119
|
default="auto",
|
|
118
120
|
help="Fetcher to use")
|
|
119
121
|
cfg_g.add_argument("-l", "--license-mapping",
|
|
120
|
-
type=
|
|
122
|
+
type=Path,
|
|
121
123
|
help="Path to license-mapping.conf file (default: "
|
|
122
124
|
"get from Portage)")
|
|
123
125
|
cfg_g.add_argument("--no-config",
|
|
@@ -191,10 +193,8 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
191
193
|
if default_distdir is not None:
|
|
192
194
|
args.distdir = Path(default_distdir)
|
|
193
195
|
if args.license_mapping is None:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
args.license_mapping = open(default_license_mapping, "r",
|
|
197
|
-
encoding="utf-8")
|
|
196
|
+
# may still be None
|
|
197
|
+
args.license_mapping = config_toml_paths.get("license-mapping")
|
|
198
198
|
|
|
199
199
|
if args.distdir is None or args.license_mapping is None:
|
|
200
200
|
from portage import create_trees
|
|
@@ -204,11 +204,10 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
204
204
|
args.distdir = Path(tree["porttree"].settings["DISTDIR"])
|
|
205
205
|
if args.license_mapping is None:
|
|
206
206
|
repo = Path(tree["porttree"].dbapi.repositories["gentoo"].location)
|
|
207
|
-
args.license_mapping =
|
|
208
|
-
"r", encoding="utf-8")
|
|
207
|
+
args.license_mapping = repo / "metadata/license-mapping.conf"
|
|
209
208
|
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
with open(args.license_mapping, "r", encoding="utf-8") as f:
|
|
210
|
+
load_license_mapping(f)
|
|
212
211
|
MAPPING.update(
|
|
213
212
|
(k.lower(), v) for k, v
|
|
214
213
|
in config_toml.get("license-mapping", {}).items())
|
|
@@ -348,7 +347,7 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
348
347
|
|
|
349
348
|
if args.input is not None and args.output is None:
|
|
350
349
|
# default to overwriting the input file
|
|
351
|
-
outfile =
|
|
350
|
+
outfile = args.input
|
|
352
351
|
else:
|
|
353
352
|
# This warning is only relevant when constructing a new ebuild,
|
|
354
353
|
# as otherwise we do not update other metadata.
|
|
@@ -391,17 +390,16 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
391
390
|
"overwrite it")
|
|
392
391
|
return 1
|
|
393
392
|
with tempfile.NamedTemporaryFile(mode="wb",
|
|
394
|
-
dir=
|
|
393
|
+
dir=crate_tarball.parent,
|
|
395
394
|
delete=False
|
|
396
395
|
) as cratef:
|
|
397
396
|
try:
|
|
398
|
-
# typing: https://github.com/python/typeshed/issues/11072
|
|
399
397
|
with tarfile.open(fileobj=cratef,
|
|
400
398
|
mode="w:xz",
|
|
401
399
|
format=tarfile.GNU_FORMAT,
|
|
402
400
|
encoding="UTF-8",
|
|
403
|
-
preset=9 | lzma.PRESET_EXTREME,
|
|
404
|
-
) as tar_out:
|
|
401
|
+
preset=9 | lzma.PRESET_EXTREME,
|
|
402
|
+
) as tar_out:
|
|
405
403
|
os.fchmod(cratef.fileno(), 0o666 & ~umask)
|
|
406
404
|
logging.info("Repacking crates ...")
|
|
407
405
|
repack_crates(tar_out, crates)
|
|
@@ -418,7 +416,7 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
418
416
|
try:
|
|
419
417
|
if args.input is not None:
|
|
420
418
|
ebuild = update_ebuild(
|
|
421
|
-
args.input.
|
|
419
|
+
args.input.read_text(encoding="utf-8"),
|
|
422
420
|
pkg_meta,
|
|
423
421
|
crates,
|
|
424
422
|
distdir=args.distdir,
|
|
@@ -467,10 +465,9 @@ def main(prog_name: str, *argv: str) -> int:
|
|
|
467
465
|
delete=False) as outf:
|
|
468
466
|
try:
|
|
469
467
|
if args.input is not None:
|
|
470
|
-
st =
|
|
468
|
+
st = args.input.stat()
|
|
471
469
|
os.chown(outf.fileno(), st.st_uid, st.st_gid)
|
|
472
470
|
os.chmod(outf.fileno(), stat.S_IMODE(st.st_mode))
|
|
473
|
-
args.input.close()
|
|
474
471
|
else:
|
|
475
472
|
os.fchmod(outf.fileno(), 0o666 & ~umask)
|
|
476
473
|
outf.write(ebuild)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# pycargoebuild
|
|
2
|
-
# (c) 2022-
|
|
2
|
+
# (c) 2022-2026 Michał Górny <mgorny@gentoo.org>
|
|
3
3
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
import dataclasses
|
|
6
8
|
import enum
|
|
7
9
|
import functools
|
|
@@ -131,10 +133,7 @@ class GitCrate(Crate):
|
|
|
131
133
|
raise RuntimeError(
|
|
132
134
|
f"{root_dir}/Cargo.toml not found in {filename}")
|
|
133
135
|
with tarf:
|
|
134
|
-
|
|
135
|
-
# expects BinaryIO -- but it actually is compatible
|
|
136
|
-
# https://github.com/hukkin/tomli/issues/214
|
|
137
|
-
return (tomllib.load(tarf).get("workspace", {}) # type: ignore
|
|
136
|
+
return (tomllib.load(tarf).get("workspace", {})
|
|
138
137
|
.get("package", {}))
|
|
139
138
|
|
|
140
139
|
@functools.cache
|
|
@@ -149,9 +148,6 @@ class GitCrate(Crate):
|
|
|
149
148
|
if f is None:
|
|
150
149
|
continue
|
|
151
150
|
|
|
152
|
-
# tarfile.ExFileObject() is IO[bytes] while tomli/tomllib
|
|
153
|
-
# expects BinaryIO -- but it actually is compatible
|
|
154
|
-
# https://github.com/hukkin/tomli/issues/214
|
|
155
151
|
try:
|
|
156
152
|
metadata = get_package_metadata(
|
|
157
153
|
f, workspace_toml) # type: ignore
|
|
@@ -190,7 +186,7 @@ class GitCrate(Crate):
|
|
|
190
186
|
tarf = crate_tar.extractfile(tar_info)
|
|
191
187
|
assert tarf is not None
|
|
192
188
|
with tarf:
|
|
193
|
-
if "workspace" in tomllib.load(tarf):
|
|
189
|
+
if "workspace" in tomllib.load(tarf):
|
|
194
190
|
return path.parent
|
|
195
191
|
return None
|
|
196
192
|
|
|
@@ -205,7 +201,7 @@ class PackageMetadata(typing.NamedTuple):
|
|
|
205
201
|
homepage: str | None = None
|
|
206
202
|
|
|
207
203
|
def with_replaced_license(self, new_license: str | None
|
|
208
|
-
) ->
|
|
204
|
+
) -> PackageMetadata:
|
|
209
205
|
return PackageMetadata(name=self.name,
|
|
210
206
|
version=self.version,
|
|
211
207
|
features=self.features,
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# pycargoebuild
|
|
2
|
-
# (c) 2022-
|
|
2
|
+
# (c) 2022-2026 Michał Górny <mgorny@gentoo.org>
|
|
3
3
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
import datetime
|
|
6
8
|
import logging
|
|
7
9
|
import re
|
|
@@ -10,7 +12,6 @@ import tarfile
|
|
|
10
12
|
import typing
|
|
11
13
|
import urllib.parse
|
|
12
14
|
from functools import partial
|
|
13
|
-
from pathlib import Path
|
|
14
15
|
|
|
15
16
|
import jinja2
|
|
16
17
|
import license_expression
|
|
@@ -26,6 +27,9 @@ from pycargoebuild.cargo import (
|
|
|
26
27
|
from pycargoebuild.format import format_license_var
|
|
27
28
|
from pycargoebuild.license import UnmatchedLicense, spdx_to_ebuild
|
|
28
29
|
|
|
30
|
+
if typing.TYPE_CHECKING:
|
|
31
|
+
from pathlib import Path
|
|
32
|
+
|
|
29
33
|
EBUILD_TEMPLATE = """\
|
|
30
34
|
# Copyright {{year}} Gentoo Authors
|
|
31
35
|
# Distributed under the terms of the GNU General Public License v2
|
|
@@ -72,7 +76,7 @@ src_configure() {
|
|
|
72
76
|
"""
|
|
73
77
|
|
|
74
78
|
|
|
75
|
-
def get_CRATES(crates:
|
|
79
|
+
def get_CRATES(crates: set[Crate],
|
|
76
80
|
) -> str:
|
|
77
81
|
"""
|
|
78
82
|
Return the value of CRATES for the given crate list
|
|
@@ -231,7 +235,7 @@ def url_dquote_escape(value: str) -> str:
|
|
|
231
235
|
|
|
232
236
|
|
|
233
237
|
def get_ebuild(pkg_meta: PackageMetadata,
|
|
234
|
-
crates:
|
|
238
|
+
crates: set[Crate],
|
|
235
239
|
distdir: Path,
|
|
236
240
|
*,
|
|
237
241
|
crate_license: bool = True,
|
|
@@ -251,7 +255,7 @@ def get_ebuild(pkg_meta: PackageMetadata,
|
|
|
251
255
|
compiled_template = jinja_env.from_string(template)
|
|
252
256
|
|
|
253
257
|
return compiled_template.render(
|
|
254
|
-
crates=get_CRATES(crates if crate_tarball is None else ()),
|
|
258
|
+
crates=get_CRATES(crates if crate_tarball is None else set()),
|
|
255
259
|
crate_licenses=(get_crate_LICENSE(crates, distdir, license_overrides)
|
|
256
260
|
if crate_license else None),
|
|
257
261
|
description=bash_dquote_escape(collapse_whitespace(
|
|
@@ -313,7 +317,7 @@ class GitCratesSubst(CountingSubst):
|
|
|
313
317
|
|
|
314
318
|
def update_ebuild(ebuild: str,
|
|
315
319
|
pkg_meta: PackageMetadata,
|
|
316
|
-
crates:
|
|
320
|
+
crates: set[Crate],
|
|
317
321
|
distdir: Path,
|
|
318
322
|
*,
|
|
319
323
|
crate_license: bool = True,
|
|
@@ -327,7 +331,7 @@ def update_ebuild(ebuild: str,
|
|
|
327
331
|
if license_overrides is None:
|
|
328
332
|
license_overrides = {}
|
|
329
333
|
crates_repl = CountingSubst(
|
|
330
|
-
partial(get_CRATES, crates if crate_tarball is None else ()))
|
|
334
|
+
partial(get_CRATES, crates if crate_tarball is None else set()))
|
|
331
335
|
git_crates_repl = GitCratesSubst(partial(get_GIT_CRATES, crates, distdir))
|
|
332
336
|
crate_license_repl = (
|
|
333
337
|
CountingSubst(partial(get_crate_LICENSE, crates, distdir,
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
# pycargoebuild
|
|
2
|
-
# (c) 2022-
|
|
2
|
+
# (c) 2022-2026 Michał Górny <mgorny@gentoo.org>
|
|
3
3
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
import hashlib
|
|
6
8
|
import subprocess
|
|
7
9
|
import sys
|
|
8
10
|
import tempfile
|
|
9
11
|
import typing
|
|
10
|
-
from pathlib import Path
|
|
11
12
|
|
|
12
13
|
from pycargoebuild import __version__
|
|
13
14
|
from pycargoebuild.cargo import Crate, FileCrate
|
|
14
15
|
|
|
16
|
+
if typing.TYPE_CHECKING:
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
|
|
15
19
|
|
|
16
20
|
class ChecksumMismatchError(RuntimeError):
|
|
17
21
|
def __init__(self,
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
# pycargoebuild
|
|
2
|
-
# (c) 2022-
|
|
2
|
+
# (c) 2022-2026 Michał Górny <mgorny@gentoo.org>
|
|
3
3
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
import typing
|
|
6
8
|
from textwrap import TextWrapper
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
class CompoundGroup(typing.NamedTuple):
|
|
10
12
|
prefix: list[str]
|
|
11
|
-
values: list[
|
|
13
|
+
values: list[str | CompoundGroup]
|
|
12
14
|
suffix: list[str]
|
|
13
15
|
|
|
14
16
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# pycargoebuild
|
|
2
|
-
# (c) 2022-
|
|
2
|
+
# (c) 2022-2026 Michał Górny <mgorny@gentoo.org>
|
|
3
3
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
import configparser
|
|
6
8
|
import logging
|
|
7
9
|
import typing
|
|
@@ -23,7 +25,7 @@ class UnmatchedLicense(RuntimeError):
|
|
|
23
25
|
self.crate = crate
|
|
24
26
|
|
|
25
27
|
|
|
26
|
-
def load_license_mapping(f: typing.IO[
|
|
28
|
+
def load_license_mapping(f: typing.IO[str]) -> None:
|
|
27
29
|
"""Read license mapping from the specified file"""
|
|
28
30
|
conf = configparser.ConfigParser(comment_prefixes=("#",),
|
|
29
31
|
delimiters=("=",),
|
|
@@ -33,7 +35,9 @@ def load_license_mapping(f: typing.IO["str"]) -> None:
|
|
|
33
35
|
MAPPING.update((k.lower(), v) for k, v in conf.items("spdx-to-ebuild"))
|
|
34
36
|
|
|
35
37
|
|
|
36
|
-
def symbol_to_ebuild(license_symbol: license_expression.LicenseSymbol
|
|
38
|
+
def symbol_to_ebuild(license_symbol: license_expression.LicenseSymbol |
|
|
39
|
+
license_expression.LicenseWithExceptionSymbol
|
|
40
|
+
) -> str:
|
|
37
41
|
full_key = str(license_symbol).lower()
|
|
38
42
|
full_match = MAPPING.get(full_key)
|
|
39
43
|
no_plus = MAPPING.get(full_key.replace("+", ""))
|
|
@@ -64,7 +68,7 @@ def spdx_to_ebuild(spdx: license_expression.Renderable) -> str:
|
|
|
64
68
|
"""
|
|
65
69
|
Convert SPDX license expression to ebuild license string.
|
|
66
70
|
"""
|
|
67
|
-
def sub(x: license_expression.
|
|
71
|
+
def sub(x: license_expression.Renderable, in_or: bool
|
|
68
72
|
) -> typing.Generator[str, None, None]:
|
|
69
73
|
if isinstance(x, license_expression.AND):
|
|
70
74
|
if in_or:
|
|
@@ -41,27 +41,6 @@ include = [
|
|
|
41
41
|
"tox.ini",
|
|
42
42
|
]
|
|
43
43
|
|
|
44
|
-
[tool.mypy]
|
|
45
|
-
disallow_untyped_defs = true
|
|
46
|
-
no_implicit_optional = true
|
|
47
|
-
|
|
48
|
-
[[tool.mypy.overrides]]
|
|
49
|
-
module = [
|
|
50
|
-
"integration_test.*",
|
|
51
|
-
"test.*",
|
|
52
|
-
]
|
|
53
|
-
# requiring explicit types for all test methods would be cumbersome
|
|
54
|
-
disallow_untyped_defs = false
|
|
55
|
-
check_untyped_defs = true
|
|
56
|
-
|
|
57
|
-
[[tool.mypy.overrides]]
|
|
58
|
-
module = [
|
|
59
|
-
"license_expression.*",
|
|
60
|
-
"portage.*",
|
|
61
|
-
"rich.*",
|
|
62
|
-
]
|
|
63
|
-
ignore_missing_imports = true
|
|
64
|
-
|
|
65
44
|
[tool.pytest.ini_options]
|
|
66
45
|
testpaths = [
|
|
67
46
|
"test",
|
|
@@ -115,3 +94,6 @@ ignore = [
|
|
|
115
94
|
[tool.ruff.lint.flake8-copyright]
|
|
116
95
|
min-file-size = 1
|
|
117
96
|
notice-rgx = "\\(c\\) \\d{4}(-\\d{4})?"
|
|
97
|
+
|
|
98
|
+
[tool.ty.analysis]
|
|
99
|
+
allowed-unresolved-imports = ["portage.**"]
|
|
@@ -275,7 +275,7 @@ def test_get_ebuild_no_license(real_license_mapping, crate_dir, crates):
|
|
|
275
275
|
|
|
276
276
|
|
|
277
277
|
def test_get_ebuild_no_crates(real_license_mapping, pkg_meta):
|
|
278
|
-
assert get_ebuild(pkg_meta,
|
|
278
|
+
assert get_ebuild(pkg_meta, set(), Path(".")) == textwrap.dedent(f"""\
|
|
279
279
|
# Copyright {datetime.date.today().year} Gentoo Authors
|
|
280
280
|
# Distributed under the terms of the GNU General Public License v2
|
|
281
281
|
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
[tox]
|
|
2
|
-
envlist = qa,py310,py311,py312,py313,py314
|
|
2
|
+
envlist = qa,py310,py311,py312,py313,py314,py315
|
|
3
3
|
isolated_build = True
|
|
4
4
|
|
|
5
5
|
[testenv]
|
|
6
6
|
deps =
|
|
7
|
-
|
|
7
|
+
ty
|
|
8
8
|
extras =
|
|
9
|
+
pretty-log
|
|
9
10
|
test
|
|
10
11
|
commands =
|
|
11
12
|
pytest -vv {posargs:test}
|
|
12
|
-
|
|
13
|
+
ty check --python-version={py_dot_ver} {posargs:integration_test pycargoebuild test}
|
|
13
14
|
|
|
14
15
|
[testenv:integration]
|
|
15
16
|
deps =
|
|
File without changes
|
|
File without changes
|
{pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/data/share/bash-completion/completions/pycargoebuild
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/mdbook-linkcheck-0.7.7.ebuild
RENAMED
|
File without changes
|
{pycargoebuild-0.17.1 → pycargoebuild-0.17.2}/integration_test/milkshake-terminal-0.0.0.ebuild
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|