Python remote excluding platform Linux still syncs in "musllinux" wheel packages

Problem:

Python remote excluding platform Linux still syncs in “musllinux” wheel packages
e.g. aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl

Expected outcome:
musllinux distributions do not get synced into the Python repository.

Pulpcore version:
3.75.2

Pulp plugins installed and their versions:
“deb”: “3.5.1”,
“npm”: “0.3.2”,
“rpm”: “3.29.1”,
“core”: “3.75.2”,
“file”: “3.75.2”,
“maven”: “0.10.0”,
“ostree”: “2.4.7”,
“python”: “3.14.0”,
“ansible”: “0.24.4”,
“certguard”: “3.75.2”,
“container”: “2.24.1”

Operating system - distribution and version:
Alma Linux 8 - Docker Compose - Multi-Container

Other relevant data:
Python remote excluding platform Linux still syncs in “musllinux” wheel packages

{
“pulp_href”: “/pulp/api/v3/remotes/python/python/01963a17-e440-7868-884c-04ab1e74ae1c/”,
“prn”: “prn:python.pythonremote:01963a17-e440-7868-884c-04ab1e74ae1c”,
“pulp_created”: “2025-04-15T15:36:06.465621Z”,
“pulp_last_updated”: “2025-04-15T15:36:06.465644Z”,
“name”: “TEST-PyPI”,
“url”: “https://pypi.org/”,
“ca_cert”: null,
“client_cert”: null,
“tls_validation”: false,
“proxy_url”: “http://x.x.x.x:8080/”,
“pulp_labels”: {},
“download_concurrency”: 10,
“max_retries”: null,
“policy”: “immediate”,
“total_timeout”: null,
“connect_timeout”: null,
“sock_connect_timeout”: null,
“sock_read_timeout”: null,
“headers”: null,
“rate_limit”: null,
“hidden_fields”: [
{
“name”: “client_key”,
“is_set”: false
},
{
“name”: “proxy_username”,
“is_set”: false
},
{
“name”: “proxy_password”,
“is_set”: false
},
{
“name”: “username”,
“is_set”: false
},
{
“name”: “password”,
“is_set”: false
}
],
“includes”: [
“absl-py==2.1.0”,
“addict==2.4.0”,
“aiofiles==22.1.0”,
“aiohttp-retry==2.8.3”,
“aiohttp==3.9.5”,
“aiosignal==1.3.1”,
“aiosqlite==0.20.0”,
“ajsonrpc==1.2.0”,
“alembic==1.13.2”,
“altgraph==0.17.4”,
“amqp==5.2.0”
],
“excludes”: [],
“prereleases”: true,
“package_types”: [
“sdist”,
“bdist_wheel”
],
“keep_latest_packages”: 0,
“exclude_platforms”: [
“freebsd”,
"linux",
“macos”
]
}

Example of synced packages that are not expected:

aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl
aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl
aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl
aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl
aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl
aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl
aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl
aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl
aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl
aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl
aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl
aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl
aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl
aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl
aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl
aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl

musllinux should not have been synced when exclude_platforms specifies linux.

These packages take up a lot of disk space.

Looking at the source code of bandersnatch [0] (the library we use to perform the sync), it seems that the platform filter doesn’t include musllinux in their filter. I filed an issue for it [1]

[0] https://github.com/pypa/bandersnatch/blob/main/src/bandersnatch_filter_plugins/filename_name.py#L44
[1] https://github.com/pypa/bandersnatch/issues/1929

2 Likes

Thanks.

Just checking in to see if there’s any update or ETA on this fix. I really appreciate all the help!

Thanks.

Sorry, I haven’t had any capacity to work on this. Do you need a workaround? You can make some extra api calls to remove the extraneous packages. However, you would have to do this every time you synced until we can fix it.

Thanks so much for the update! We completely understand, and no worries at all. We’re okay to wait for the fix on your end, so no need for a workaround for now.

1 Like