Details about package apt-mirror2
Name: | apt-mirror2 (PTS) |
---|---|
Uploader: | Yuri Konotopov <ykonotopov@gnome.org> (Debian QA page) |
Description: | python3-apt-mirror2 - Python3 bindings for the apt-mirror2 apt-mirror2 - Python/asyncio reimplementation of the apt-mirror |
Package uploads
Upload #3
Information
Version: | 14-1 |
---|---|
Uploaded: | 2025-07-13 11:57 |
Source package: | apt-mirror2_14-1.dsc |
Distribution: | unstable |
Section: | net |
Priority: | optional |
Homepage: | https://gitlab.com/apt-mirror2/apt-mirror2 |
Vcs-Browser: | https://gitlab.com/apt-mirror2/debian-packaging |
Vcs-Git: | https://gitlab.com/apt-mirror2/debian-packaging.git [apt-mirror2] |
Closes bugs: | #1107259 |
Changelog
apt-mirror2 (14-1) unstable; urgency=medium . [ Yuri Konotopov ] * Added python3-pytest to Build-Depends to match upstream * New upstream version 14: - removed applied upstream d/p/0001-tests-fix-tests-on-non-amd64-hosts.patch - added gpgpv build dependency to pass tests - New option `append_logs` is now available. Closes: #1107259 . [ Evgeniy Rogov ] * Fix sed substitution in debian/rules
QA information
-
–
Package uses debhelper-compatDebhelper compatibility level 13
-
–
Package is the latest upstream version
Local: 14 Upstream: 14 Url: https://gitlab.com/apt-mirror2/apt-mirror2/-/archive/v14/apt-mirror2-v14.tar.bz2 -
–
Package is not native
Format: 3.0 (quilt) -
–
"Maintainer" email is the same as the uploader
-
–
Package has lintian informational tagsapt-mirror2
-
P
odd-mark-in-description
- comma not followed by whitespace (line 14)
apt-mirror2 source-
X
debian-watch-does-not-check-openpgp-signature
- [debian/watch]
-
X
very-long-line-length-in-source-file
- 4268 > 512 [tests/data/DebianBookworm/repo/dists/bookworm/main/source/Sources:125]
- 4268 > 512 [tests/data/MaliciousRepository/repo/dists/test/main/source/Sources:125]
- 6339 > 512 [tests/data/DebianBookworm/repo/dists/bookworm/main/binary-amd64/Packages:302]
- 6339 > 512 [tests/data/MaliciousRepository/repo/dists/test/main/binary-amd64/Packages:302]
python3-apt-mirror2-
I
package-contains-documentation-outside-usr-share-doc
- [usr/lib/python3/dist-packages/apt_mirror-14.dist-info/top_level.txt]
-
P
odd-mark-in-description
-
–
Package closes bug
-
apt-mirror2:
- #1107259 (Minor): /etc/cron.d/apt-mirror2 can't append log
-
apt-mirror2:
-
–
Package is already in Debian
- The package uploader is currently maintaining apt-mirror2 in Debian
- Last upload was on the 2025-04-13
-
–
d/copyright is in DEP5 format
Upstream Contact: https://gitlab.com/apt-mirror2/apt-mirror2/-/issues Licenses: GPL-3+, MIT or Apache-2.0
Comments
No comments
Upload #2
Information
Version: | 14-1 |
---|---|
Uploaded: | 2025-07-13 07:57 |
Source package: | apt-mirror2_14-1.dsc |
Distribution: | unstable |
Section: | net |
Priority: | optional |
Homepage: | https://gitlab.com/apt-mirror2/apt-mirror2 |
Vcs-Browser: | https://gitlab.com/apt-mirror2/debian-packaging |
Vcs-Git: | https://gitlab.com/apt-mirror2/debian-packaging.git [apt-mirror2] |
Changelog
apt-mirror2 (14-1) unstable; urgency=medium . [ Yuri Konotopov ] * Added python3-pytest to Build-Depends to match upstream * New upstream version 14: - removed applied upstream d/p/0001-tests-fix-tests-on-non-amd64-hosts.patch - added gpgpv build dependency to pass tests . [ Evgeniy Rogov ] * Fix sed substitution in debian/rules
QA information
-
–
Package uses debhelper-compatDebhelper compatibility level 13
-
–
Package is the latest upstream version
Local: 14 Upstream: 14 Url: https://gitlab.com/apt-mirror2/apt-mirror2/-/archive/v14/apt-mirror2-v14.tar.bz2 -
–
Package is not native
Format: 3.0 (quilt) -
–
"Maintainer" email is the same as the uploader
-
–
Package has lintian informational tagsapt-mirror2
-
P
odd-mark-in-description
- comma not followed by whitespace (line 14)
apt-mirror2 source-
X
debian-watch-does-not-check-openpgp-signature
- [debian/watch]
-
X
very-long-line-length-in-source-file
- 4268 > 512 [tests/data/DebianBookworm/repo/dists/bookworm/main/source/Sources:125]
- 4268 > 512 [tests/data/MaliciousRepository/repo/dists/test/main/source/Sources:125]
- 6339 > 512 [tests/data/DebianBookworm/repo/dists/bookworm/main/binary-amd64/Packages:302]
- 6339 > 512 [tests/data/MaliciousRepository/repo/dists/test/main/binary-amd64/Packages:302]
python3-apt-mirror2-
I
package-contains-documentation-outside-usr-share-doc
- [usr/lib/python3/dist-packages/apt_mirror-14.dist-info/top_level.txt]
-
P
odd-mark-in-description
-
–
Package is already in Debian
- The package uploader is currently maintaining apt-mirror2 in Debian
- Last upload was on the 2025-04-13
-
–
d/copyright is in DEP5 format
Upstream Contact: https://gitlab.com/apt-mirror2/apt-mirror2/-/issues Licenses: GPL-3+, MIT or Apache-2.0
Comments
-
Sunday mornin gso we will go with my usual Yorkshire friendly greetings. :-) Ay up Yuri, Looks really good. Two things. * Lintian: P: apt-mirror2: odd-mark-in-description comma not followed by whitespace (line 14) N: N: A punction mark was placed oddly in the description. N: N: This tag is currently only issued for a comma that is not followed by a N: whitespace character or a number (eg. for "300,000"). N: N: Please refer to Bug#591665 and Bug#591664 for details. N: N: Visibility: pedantic N: Show-Always: no N: Check: fields/description It is the lack of a space after the comma and the second argument in the description bit below. - Standard source.list [ arch=arch1,arch2 ] can be used to specify multiple repository architectures for mirroring Just need a space before 'arch2' to fix. * Copyright: philwyett@ks-tarkin:~/Builder/apt-mirror2-14$ lrc en: Versions: licenserecon '6.0' licensecheck '3.3.9-1' Parsing Source Tree .... Reading d/copyright .... Running licensecheck .... d/copyright | licensecheck MIT and Apache-2.0| Expat apt_mirror/uvloop.py Should be 'and' not 'or'. It still flags when scanned, certainly one I would report against 'licenserecon' to see if it is an issue. If you correct these and do not have a sponsor, you can as you know, file an RFS. :-) Regards Phil
Needs work Phil Wyett at July 13, 2025, 8:27 a.m. -
Phil, thanks for review! > It is the lack of a space after the comma and the second argument in the description bit The lack of a space is intentional, as it's part of the configuration syntax. > Should be 'and' not 'or'. According to [1]: "In case of multi-licensing, the license short names are separated by or when the user can chose between different licenses, and by and when use of the work must simultaneously comply with the terms of multiple licenses". Because uvloop is dual-licensed under MIT and Apache 2.0 we should use `or` here. [1] https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Yuri Konotopov at July 13, 2025, 11:17 a.m. -
Yuri, OK, I would ignore that lintian error for now as it is not major. Not seen that warning before, so I do not have a quck fix for it. :-) With regard that files dual licensing, we should go with what is in the file and the project it was derived from. In the file: # uvloop is dual-licensed under MIT and Apache 2.0 licenses. Upstream at: https://github.com/MagicStack/uvloop/blob/master/README.rst These both say 'and' so I would go with it unless upstream says otherwise. You may wish to email them for clarification, ask in #debian-mentors or email the legal list. I am very pragmatic on these things and would always go with what is in the files first. Regards Phil
Phil Wyett at July 13, 2025, 11:31 a.m. -
Got it, thanks! I will consult xiao sheng wen, who is sponsoring this package (the `or` statement was added on his advice). I will also upload a new version now, with the added Debian bug ID.
Yuri Konotopov at July 13, 2025, 11:52 a.m.
Upload #1
Information
Version: | 14-1 |
---|---|
Uploaded: | 2025-07-12 16:57 |
Source package: | apt-mirror2_14-1.dsc |
Distribution: | unstable |
Section: | net |
Priority: | optional |
Homepage: | https://gitlab.com/apt-mirror2/apt-mirror2 |
Vcs-Browser: | https://gitlab.com/apt-mirror2/debian-packaging |
Vcs-Git: | https://gitlab.com/apt-mirror2/debian-packaging.git [apt-mirror2] |
Changelog
apt-mirror2 (14-1) unstable; urgency=medium . [ Yuri Konotopov ] * Added python3-pytest to Build-Depends to match upstream * New upstream version 14: - removed applied upstream d/p/0001-tests-fix-tests-on-non-amd64-hosts.patch . [ Evgeniy Rogov ] * Fix sed substitution in debian/rules
QA information
-
–
Package uses debhelper-compatDebhelper compatibility level 13
-
–
Package is the latest upstream version
Local: 14 Upstream: 14 Url: https://gitlab.com/apt-mirror2/apt-mirror2/-/archive/v14/apt-mirror2-v14.tar.bz2 -
–
Package is not native
Format: 3.0 (quilt) -
–
"Maintainer" email is the same as the uploader
-
–
Package has lintian informational tagsapt-mirror2
-
P
odd-mark-in-description
- comma not followed by whitespace (line 14)
apt-mirror2 source-
X
debian-watch-does-not-check-openpgp-signature
- [debian/watch]
-
X
very-long-line-length-in-source-file
- 4268 > 512 [tests/data/DebianBookworm/repo/dists/bookworm/main/source/Sources:125]
- 4268 > 512 [tests/data/MaliciousRepository/repo/dists/test/main/source/Sources:125]
- 6339 > 512 [tests/data/DebianBookworm/repo/dists/bookworm/main/binary-amd64/Packages:302]
- 6339 > 512 [tests/data/MaliciousRepository/repo/dists/test/main/binary-amd64/Packages:302]
python3-apt-mirror2-
I
package-contains-documentation-outside-usr-share-doc
- [usr/lib/python3/dist-packages/apt_mirror-14.dist-info/top_level.txt]
-
P
odd-mark-in-description
-
–
Package is already in Debian
- The package uploader is currently maintaining apt-mirror2 in Debian
- Last upload was on the 2025-04-13
-
–
d/copyright is in DEP5 format
Upstream Contact: https://gitlab.com/apt-mirror2/apt-mirror2/-/issues Licenses: GPL-3+, MIT or Apache-2.0
Comments
-
Yuri, Builds for unstable are pushing error as below. ============================= test session starts ============================== platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0 rootdir: /build/reproducible-path/apt-mirror2-14/.pybuild/cpython3_3.13/build configfile: pyproject.toml plugins: anyio-4.8.0, typeguard-4.4.2 collected 56 items tests/test_clean.py . [ 1%] tests/test_config.py ................... [ 35%] tests/test_dependencies.py .. [ 39%] tests/test_download.py .. [ 42%] tests/test_main.py ... [ 48%] tests/test_repository.py ......................FF..... [100%] =================================== FAILURES =================================== ___________________ TestRepository.test_signature_inrelease ____________________ self = <tests.test_repository.TestRepository testMethod=test_signature_inrelease> def test_signature_inrelease(self): repository = self.get_repository( codename="bookworm", components=["main"], arches=["amd64"], mirror_source=True, ) test_data_folder = self.TEST_DATA / "DebianBookworm" repository.gpg_verify = GPGVerify.OFF repository.validate_release_files( test_data_folder, encode_tilde=False, etc_trusted=Path("/tmp/a/b/c/unknown"), etc_trusted_parts=Path("/tmp/a/b/c/unknown"), ) repository.gpg_verify = GPGVerify.ON with self.assertRaisesRegex( InvalidSignatureError, "Unable to verify release file signature:.+/InRelease", ): > repository.validate_release_files( test_data_folder, encode_tilde=False, etc_trusted=Path("/tmp/a/b/c/unknown"), etc_trusted_parts=Path("/tmp/a/b/c/unknown"), ) tests/test_repository.py:737: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ apt_mirror/repository.py:820: in validate_release_files self._validate_release_file_signature(release_file, keyring) apt_mirror/repository.py:769: in _validate_release_file_signature gpg_info = GpgInfoExtended.from_file( apt_mirror/repository.py:408: in from_file return super().from_file(target, *args, keyrings=keyrings, **kwargs) /usr/lib/python3/dist-packages/debian/deb822.py:1394: in from_file return cls.from_sequence(target_file, *args, **kwargs) /usr/lib/python3/dist-packages/debian/deb822.py:1352: in from_sequence with subprocess.Popen( /usr/lib/python3.13/subprocess.py:1039: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, /usr/lib/python3.13/subprocess.py:1857: in _execute_child self._posix_spawn(args, executable, env, restore_signals, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def _posix_spawn(self, args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite): """Execute program using os.posix_spawn().""" kwargs = {} if restore_signals: # See _Py_RestoreSignals() in Python/pylifecycle.c sigset = [] for signame in ('SIGPIPE', 'SIGXFZ', 'SIGXFSZ'): signum = getattr(signal, signame, None) if signum is not None: sigset.append(signum) kwargs['setsigdef'] = sigset file_actions = [] for fd in (p2cwrite, c2pread, errread): if fd != -1: file_actions.append((os.POSIX_SPAWN_CLOSE, fd)) for fd, fd2 in ( (p2cread, 0), (c2pwrite, 1), (errwrite, 2), ): if fd != -1: file_actions.append((os.POSIX_SPAWN_DUP2, fd, fd2)) if close_fds: file_actions.append((os.POSIX_SPAWN_CLOSEFROM, 3)) if file_actions: kwargs['file_actions'] = file_actions > self.pid = os.posix_spawn(executable, args, env, **kwargs) E FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/gpgv' /usr/lib/python3.13/subprocess.py:1801: FileNotFoundError ____________________ TestRepository.test_signature_release _____________________ self = <tests.test_repository.TestRepository testMethod=test_signature_release> def test_signature_release(self): repository = self.get_repository( codename="bookworm", components=["main"], arches=["amd64"], mirror_source=True, mirror_path=Path("repo1"), ) test_data_folder = self.TEST_DATA / "DebianBookworm" repository.gpg_verify = GPGVerify.OFF repository.validate_release_files( test_data_folder, encode_tilde=False, etc_trusted=Path("/tmp/a/b/c/unknown"), etc_trusted_parts=Path("/tmp/a/b/c/unknown"), ) repository.gpg_verify = GPGVerify.ON with self.assertRaisesRegex( InvalidSignatureError, "Unable to verify release file signature:.+/Release", ): > repository.validate_release_files( test_data_folder, encode_tilde=False, etc_trusted=Path("/tmp/a/b/c/unknown"), etc_trusted_parts=Path("/tmp/a/b/c/unknown"), ) tests/test_repository.py:657: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ apt_mirror/repository.py:820: in validate_release_files self._validate_release_file_signature(release_file, keyring) apt_mirror/repository.py:769: in _validate_release_file_signature gpg_info = GpgInfoExtended.from_file( apt_mirror/repository.py:423: in from_file with subprocess.Popen( /usr/lib/python3.13/subprocess.py:1039: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, /usr/lib/python3.13/subprocess.py:1857: in _execute_child self._posix_spawn(args, executable, env, restore_signals, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def _posix_spawn(self, args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite): """Execute program using os.posix_spawn().""" kwargs = {} if restore_signals: # See _Py_RestoreSignals() in Python/pylifecycle.c sigset = [] for signame in ('SIGPIPE', 'SIGXFZ', 'SIGXFSZ'): signum = getattr(signal, signame, None) if signum is not None: sigset.append(signum) kwargs['setsigdef'] = sigset file_actions = [] for fd in (p2cwrite, c2pread, errread): if fd != -1: file_actions.append((os.POSIX_SPAWN_CLOSE, fd)) for fd, fd2 in ( (p2cread, 0), (c2pwrite, 1), (errwrite, 2), ): if fd != -1: file_actions.append((os.POSIX_SPAWN_DUP2, fd, fd2)) if close_fds: file_actions.append((os.POSIX_SPAWN_CLOSEFROM, 3)) if file_actions: kwargs['file_actions'] = file_actions > self.pid = os.posix_spawn(executable, args, env, **kwargs) E FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/gpgv' /usr/lib/python3.13/subprocess.py:1801: FileNotFoundError =============================== warnings summary =============================== ../../../../../../usr/lib/python3/dist-packages/aiofile/version.py:11 /usr/lib/python3/dist-packages/aiofile/version.py:11: DeprecationWarning: Implicit None on return values is deprecated and will raise KeyErrors. project_home = package_metadata["Home-page"] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_repository.py::TestRepository::test_signature_inrelease - F... FAILED tests/test_repository.py::TestRepository::test_signature_release - Fil... =================== 2 failed, 54 passed, 1 warning in 1.51s ==================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/apt-mirror2-14/.pybuild/cpython3_3.13/build; python3.13 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make: *** [debian/rules:7: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- Regards Phil
Needs work Phil Wyett at July 12, 2025, 9:23 p.m. -
Phil, thanks for the review! I just uploaded new version which should fix this issue
Yuri Konotopov at July 13, 2025, 7:43 a.m.