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
-
-
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, 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
-
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.
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 -
Phil, thanks for the review! I just uploaded new version which should fix this issue