Skip to content

Conversation

@JuneStepp
Copy link
Member

@JuneStepp JuneStepp commented Oct 20, 2025

These are dependencies needed for Funkwhale 2.0.0-alpha.2. The actual package, module, ect will be in ngipkgs until 2.0.0 is released. The ngipkgs PR is at ngi-nix/ngipkgs#1707.

Progress on #114161.

Things done


Add a 👍 reaction to pull requests you find important.

@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch from 2e24ff3 to 512e01c Compare October 20, 2025 20:03
@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch 2 times, most recently from d917218 to cb54b2f Compare October 20, 2025 20:20
@nixpkgs-ci nixpkgs-ci bot added 10.rebuild-linux: 11-100 This PR causes between 11 and 100 packages to rebuild on Linux. 10.rebuild-darwin: 11-100 This PR causes between 11 and 100 packages to rebuild on Darwin. 6.topic: python Python is a high-level, general-purpose programming language. labels Oct 20, 2025
@nix-owners nix-owners bot requested review from natsukium and youhaveme9 October 20, 2025 20:26
@JuneStepp JuneStepp requested a review from Infinidoge October 20, 2025 20:26
@dotlambda
Copy link
Member

The actual package, module, ect will be in ngipkgs until 2.0.0 is released.

Why don't you want to add the pre-release to Nixpkgs?

@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch from cb54b2f to 01816b1 Compare October 20, 2025 23:00
@JuneStepp
Copy link
Member Author

JuneStepp commented Oct 20, 2025

The actual package, module, ect will be in ngipkgs until 2.0.0 is released.

Why don't you want to add the pre-release to Nixpkgs?

The 1.x version is software actively used and the current 2.x is both alpha and incompatible. I don't want people getting the wrong software and being confused.

@dotlambda
Copy link
Member

The 1.x version is software actively used and the current 2.x is both alpha and incompatible. I don't want people getting the wrong software and being confused.

We could call the package funkwhale_2.
Anyway, this doesn't have to happen in this PR.

@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch from 01816b1 to f1e6131 Compare October 20, 2025 23:22
@JuneStepp JuneStepp requested a review from dotlambda October 20, 2025 23:24
@dotlambda dotlambda requested review from ambroisie and mmai October 21, 2025 16:08
@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch from f1e6131 to dded01d Compare October 21, 2025 17:44
@JuneStepp JuneStepp requested a review from dotlambda October 21, 2025 17:47
@nixpkgs-ci nixpkgs-ci bot added the 12.approvals: 1 This PR was reviewed and approved by one person. label Oct 21, 2025
@dotlambda
Copy link
Member

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 453976
Commit: dded01d2d10c47ecfebdf94f55f29176902c999b


x86_64-linux

✅ 32 packages built:
  • python312Packages.django-cache-memoize
  • python312Packages.django-cache-memoize.dist
  • python312Packages.lb-matching-tools
  • python312Packages.lb-matching-tools.dist
  • python312Packages.liblistenbrainz
  • python312Packages.liblistenbrainz.dist
  • python312Packages.pluralizer
  • python312Packages.pluralizer.dist
  • python312Packages.python-ffmpeg
  • python312Packages.python-ffmpeg.dist
  • python312Packages.requests-http-message-signatures
  • python312Packages.requests-http-message-signatures.dist
  • python312Packages.troi
  • python312Packages.troi.dist
  • python312Packages.typesense
  • python312Packages.typesense.dist
  • python313Packages.django-cache-memoize
  • python313Packages.django-cache-memoize.dist
  • python313Packages.lb-matching-tools
  • python313Packages.lb-matching-tools.dist
  • python313Packages.liblistenbrainz
  • python313Packages.liblistenbrainz.dist
  • python313Packages.pluralizer
  • python313Packages.pluralizer.dist
  • python313Packages.python-ffmpeg
  • python313Packages.python-ffmpeg.dist
  • python313Packages.requests-http-message-signatures
  • python313Packages.requests-http-message-signatures.dist
  • python313Packages.troi
  • python313Packages.troi.dist
  • python313Packages.typesense
  • python313Packages.typesense.dist

aarch64-darwin

❌ 8 packages failed to build:
  • python312Packages.python-ffmpeg
  • python312Packages.python-ffmpeg.dist
  • python312Packages.typesense
  • python312Packages.typesense.dist
  • python313Packages.python-ffmpeg
  • python313Packages.python-ffmpeg.dist
  • python313Packages.typesense
  • python313Packages.typesense.dist
✅ 24 packages built:
  • python312Packages.django-cache-memoize
  • python312Packages.django-cache-memoize.dist
  • python312Packages.lb-matching-tools
  • python312Packages.lb-matching-tools.dist
  • python312Packages.liblistenbrainz
  • python312Packages.liblistenbrainz.dist
  • python312Packages.pluralizer
  • python312Packages.pluralizer.dist
  • python312Packages.requests-http-message-signatures
  • python312Packages.requests-http-message-signatures.dist
  • python312Packages.troi
  • python312Packages.troi.dist
  • python313Packages.django-cache-memoize
  • python313Packages.django-cache-memoize.dist
  • python313Packages.lb-matching-tools
  • python313Packages.lb-matching-tools.dist
  • python313Packages.liblistenbrainz
  • python313Packages.liblistenbrainz.dist
  • python313Packages.pluralizer
  • python313Packages.pluralizer.dist
  • python313Packages.requests-http-message-signatures
  • python313Packages.requests-http-message-signatures.dist
  • python313Packages.troi
  • python313Packages.troi.dist

Error logs: `aarch64-darwin`
python312Packages.python-ffmpeg
        target_path = tmp_path / "pier-39.mp4"
    ffmpeg = (
        FFmpeg()
        .input(str(source_path))
        .output(
            str(target_path),
            codec="copy",
        )
    )

> with pytest.raises(subprocess.TimeoutExpired):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E Failed: DID NOT RAISE <class 'subprocess.TimeoutExpired'>

tests/test_timeout.py:25: Failed
=========================== short test summary info ============================
FAILED tests/test_asyncio_timeout.py::test_asyncio_timeout - Failed: DID NOT RAISE <class 'TimeoutError'>
FAILED tests/test_timeout.py::test_transcoding - Failed: DID NOT RAISE <class 'subprocess.TimeoutExpired'>
========================= 2 failed, 21 passed in 7.13s =========================

python312Packages.typesense
I20251021 18:05:48.558076 11723566 typesense_server_utils.cpp:432] Thread pool size: 80
E20251021 18:05:48.558128 11723602 default_variables.cpp:232] Fail to read memory state
I20251021 18:05:48.559222 11723566 store.cpp:39] Initializing DB by opening state dir: /nix/var/nix/builds/nix-11609-4269914723/tmp.yB8w3JUvFv/db
sh: sysctl: command not found
E20251021 18:05:48.560561 11723602 default_variables.cpp:294] Fail to read loadavg
I20251021 18:05:48.623807 11723566 store.cpp:39] Initializing DB by opening state dir: /nix/var/nix/builds/nix-11609-4269914723/tmp.yB8w3JUvFv/meta
I20251021 18:05:48.671134 11723566 ratelimit_manager.cpp:546] Loaded 0 rate limit rules.
I20251021 18:05:48.671169 11723566 ratelimit_manager.cpp:547] Loaded 0 rate limit bans.
I20251021 18:05:48.671272 11723566 typesense_server_utils.cpp:536] Loaded 0 natural language search model(s).
I20251021 18:05:48.671303 11723566 typesense_server_utils.cpp:608] Starting API service...
I20251021 18:05:48.671401 11723920 typesense_server_utils.cpp:261] Since no --nodes argument is provided, starting a single node Typesense cluster.
I20251021 18:05:48.671407 11723921 batched_indexer.cpp:196] Starting batch indexer with 80 threads.
I20251021 18:05:48.671437 11723923 typesense_server_utils.cpp:551] Conversation garbage collector thread started.
W20251021 18:05:48.671485 11723920 typesense_server_utils.cpp:248] Found no matching interfaces, using loopback address as internal IP.
E20251021 18:05:48.671495 11723566 http_server.cpp:177] Failed to listen on 0.0.0.0:8108 - Operation not permitted
I20251021 18:05:48.671546 11723566 typesense_server_utils.cpp:615] Typesense API service has quit.
I20251021 18:05:48.672022 11723921 batched_indexer.cpp:201] BatchedIndexer skip_index: -9999
I20251021 18:05:48.672361 11724005 batched_indexer.cpp:353] Starting reference sequence thread.
E20251021 18:05:48.675243 11723920 server.cpp:1068] Fail to listen 127.0.0.1:8107
E20251021 18:05:48.675271 11723920 typesense_server_utils.cpp:297] Failed to start peering service
python313Packages.python-ffmpeg
        target_path = tmp_path / "pier-39.mp4"
    ffmpeg = (
        FFmpeg()
        .input(str(source_path))
        .output(
            str(target_path),
            codec=&quot;copy&quot;,
        )
    )

> with pytest.raises(subprocess.TimeoutExpired):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E Failed: DID NOT RAISE <class 'subprocess.TimeoutExpired'>

tests/test_timeout.py:25: Failed
=========================== short test summary info ============================
FAILED tests/test_asyncio_timeout.py::test_asyncio_timeout - Failed: DID NOT RAISE <class 'TimeoutError'>
FAILED tests/test_timeout.py::test_transcoding - Failed: DID NOT RAISE <class 'subprocess.TimeoutExpired'>
========================= 2 failed, 21 passed in 1.92s =========================

python313Packages.typesense
I20251021 18:06:46.115497 11733334 store.cpp:39] Initializing DB by opening state dir: /nix/var/nix/builds/nix-13762-2728393549/tmp.ZwWYDPoijt/db
sh: ps: command not found
E20251021 18:06:46.121145 11733375 default_variables.cpp:232] Fail to read memory state
sh: sysctl: command not found
E20251021 18:06:46.123239 11733375 default_variables.cpp:294] Fail to read loadavg
I20251021 18:06:46.163188 11733334 store.cpp:39] Initializing DB by opening state dir: /nix/var/nix/builds/nix-13762-2728393549/tmp.ZwWYDPoijt/meta
I20251021 18:06:46.210369 11733334 ratelimit_manager.cpp:546] Loaded 0 rate limit rules.
I20251021 18:06:46.210403 11733334 ratelimit_manager.cpp:547] Loaded 0 rate limit bans.
I20251021 18:06:46.210505 11733334 typesense_server_utils.cpp:536] Loaded 0 natural language search model(s).
I20251021 18:06:46.210541 11733334 typesense_server_utils.cpp:608] Starting API service...
I20251021 18:06:46.210631 11733683 typesense_server_utils.cpp:261] Since no --nodes argument is provided, starting a single node Typesense cluster.
I20251021 18:06:46.210649 11733684 batched_indexer.cpp:196] Starting batch indexer with 80 threads.
I20251021 18:06:46.210675 11733686 typesense_server_utils.cpp:551] Conversation garbage collector thread started.
W20251021 18:06:46.210709 11733683 typesense_server_utils.cpp:248] Found no matching interfaces, using loopback address as internal IP.
E20251021 18:06:46.210772 11733334 http_server.cpp:177] Failed to listen on 0.0.0.0:8108 - Operation not permitted
I20251021 18:06:46.210850 11733334 typesense_server_utils.cpp:615] Typesense API service has quit.
I20251021 18:06:46.211280 11733684 batched_indexer.cpp:201] BatchedIndexer skip_index: -9999
I20251021 18:06:46.211596 11733768 batched_indexer.cpp:353] Starting reference sequence thread.
E20251021 18:06:46.214960 11733683 server.cpp:1068] Fail to listen 127.0.0.1:8107
E20251021 18:06:46.214991 11733683 typesense_server_utils.cpp:297] Failed to start peering service

@dotlambda
Copy link
Member

You might need __darwinAllowLocalNetworking = true for typesense.
Not sure about python-ffmpeg.

@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch from dded01d to b230e0b Compare October 22, 2025 15:38
@dotlambda
Copy link
Member

dotlambda commented Oct 23, 2025

For typesense you need my patch from typesense/typesense-python#103. But I also often see tests/operations_test.py::test_snapshot fail with typesense.exceptions.ServerError: [Errno 500] API error. I thought it's related to

W20251023 20:51:53.816639 18428261 default_variables.cpp:117] Fail to sscanf: Undefined error: 0 [0]
sh: ps: command not found
E20251023 20:51:53.818825 18428261 default_variables.cpp:232] Fail to read memory state
sh: sysctl: command not found

but even after adding procps to nativeCheckInputs I get

E20251023 20:53:50.351596 18434080 default_variables.cpp:232] Fail to read memory state
ps: rss: requires entitlement
ps: vsz: requires entitlement
ps: no valid keywords; valid keywords:

If I add test_snapshot to disabledTests, then the tests finish but afterwards the above errors are continuously printed and the build never finishes.

@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch from b230e0b to 457db74 Compare October 31, 2025 19:11
@JuneStepp
Copy link
Member Author

For typesense you need my patch from typesense/typesense-python#103. But I also often see tests/operations_test.py::test_snapshot fail with typesense.exceptions.ServerError: [Errno 500] API error. I thought it's related to

W20251023 20:51:53.816639 18428261 default_variables.cpp:117] Fail to sscanf: Undefined error: 0 [0]
sh: ps: command not found
E20251023 20:51:53.818825 18428261 default_variables.cpp:232] Fail to read memory state
sh: sysctl: command not found

but even after adding procps to nativeCheckInputs I get

E20251023 20:53:50.351596 18434080 default_variables.cpp:232] Fail to read memory state
ps: rss: requires entitlement
ps: vsz: requires entitlement
ps: no valid keywords; valid keywords:

If I add test_snapshot to disabledTests, then the tests finish but afterwards the above errors are continuously printed and the build never finishes.

Can you try with the latest changes?

@eljamm
Copy link
Contributor

eljamm commented Oct 31, 2025

Can you try with the latest changes?

Everything seems to be building fine on aarch64-darwin, but on x86_64-darwin the build never finishes, as mentioned, above.

@JuneStepp
Copy link
Member Author

Can you try with the latest changes?

Everything seems to be building fine on aarch64-darwin, but on x86_64-darwin the build never finishes, as mentioned, above.

That's weird, since I was able to do some x86-64 darwin testing and it worked like 10 times in a row for me.

@JuneStepp JuneStepp force-pushed the funkwhale-dependencies branch from 457db74 to 44f882c Compare October 31, 2025 20:56
@JuneStepp
Copy link
Member Author

Can you try with the latest changes?

Everything seems to be building fine on aarch64-darwin, but on x86_64-darwin the build never finishes, as mentioned, above.

Can you try now?

@eljamm
Copy link
Contributor

eljamm commented Oct 31, 2025

nixpkgs-review result

Generated using nixpkgs-review-gha

Command: nixpkgs-review pr 453976
Commit: 44f882ca16bda4973b0523fd1b839c59d8dcc700 (subsequent changes)
Merge: af9ec429d826e236a4a8a8026b4022c19ca93872

Logs: https://github.com/eljamm/nixpkgs-review-gha/actions/runs/18985030788


x86_64-linux

✅ 32 packages built:
  • python312Packages.django-cache-memoize
  • python312Packages.django-cache-memoize.dist
  • python312Packages.lb-matching-tools
  • python312Packages.lb-matching-tools.dist
  • python312Packages.liblistenbrainz
  • python312Packages.liblistenbrainz.dist
  • python312Packages.pluralizer
  • python312Packages.pluralizer.dist
  • python312Packages.python-ffmpeg
  • python312Packages.python-ffmpeg.dist
  • python312Packages.requests-http-message-signatures
  • python312Packages.requests-http-message-signatures.dist
  • python312Packages.troi
  • python312Packages.troi.dist
  • python312Packages.typesense
  • python312Packages.typesense.dist
  • python313Packages.django-cache-memoize
  • python313Packages.django-cache-memoize.dist
  • python313Packages.lb-matching-tools
  • python313Packages.lb-matching-tools.dist
  • python313Packages.liblistenbrainz
  • python313Packages.liblistenbrainz.dist
  • python313Packages.pluralizer
  • python313Packages.pluralizer.dist
  • python313Packages.python-ffmpeg
  • python313Packages.python-ffmpeg.dist
  • python313Packages.requests-http-message-signatures
  • python313Packages.requests-http-message-signatures.dist
  • python313Packages.troi
  • python313Packages.troi.dist
  • python313Packages.typesense
  • python313Packages.typesense.dist

aarch64-linux

✅ 32 packages built:
  • python312Packages.django-cache-memoize
  • python312Packages.django-cache-memoize.dist
  • python312Packages.lb-matching-tools
  • python312Packages.lb-matching-tools.dist
  • python312Packages.liblistenbrainz
  • python312Packages.liblistenbrainz.dist
  • python312Packages.pluralizer
  • python312Packages.pluralizer.dist
  • python312Packages.python-ffmpeg
  • python312Packages.python-ffmpeg.dist
  • python312Packages.requests-http-message-signatures
  • python312Packages.requests-http-message-signatures.dist
  • python312Packages.troi
  • python312Packages.troi.dist
  • python312Packages.typesense
  • python312Packages.typesense.dist
  • python313Packages.django-cache-memoize
  • python313Packages.django-cache-memoize.dist
  • python313Packages.lb-matching-tools
  • python313Packages.lb-matching-tools.dist
  • python313Packages.liblistenbrainz
  • python313Packages.liblistenbrainz.dist
  • python313Packages.pluralizer
  • python313Packages.pluralizer.dist
  • python313Packages.python-ffmpeg
  • python313Packages.python-ffmpeg.dist
  • python313Packages.requests-http-message-signatures
  • python313Packages.requests-http-message-signatures.dist
  • python313Packages.troi
  • python313Packages.troi.dist
  • python313Packages.typesense
  • python313Packages.typesense.dist

x86_64-darwin (sandbox = true)

✅ 32 packages built:
  • python312Packages.django-cache-memoize
  • python312Packages.django-cache-memoize.dist
  • python312Packages.lb-matching-tools
  • python312Packages.lb-matching-tools.dist
  • python312Packages.liblistenbrainz
  • python312Packages.liblistenbrainz.dist
  • python312Packages.pluralizer
  • python312Packages.pluralizer.dist
  • python312Packages.python-ffmpeg
  • python312Packages.python-ffmpeg.dist
  • python312Packages.requests-http-message-signatures
  • python312Packages.requests-http-message-signatures.dist
  • python312Packages.troi
  • python312Packages.troi.dist
  • python312Packages.typesense
  • python312Packages.typesense.dist
  • python313Packages.django-cache-memoize
  • python313Packages.django-cache-memoize.dist
  • python313Packages.lb-matching-tools
  • python313Packages.lb-matching-tools.dist
  • python313Packages.liblistenbrainz
  • python313Packages.liblistenbrainz.dist
  • python313Packages.pluralizer
  • python313Packages.pluralizer.dist
  • python313Packages.python-ffmpeg
  • python313Packages.python-ffmpeg.dist
  • python313Packages.requests-http-message-signatures
  • python313Packages.requests-http-message-signatures.dist
  • python313Packages.troi
  • python313Packages.troi.dist
  • python313Packages.typesense
  • python313Packages.typesense.dist

aarch64-darwin (sandbox = true)

✅ 32 packages built:
  • python312Packages.django-cache-memoize
  • python312Packages.django-cache-memoize.dist
  • python312Packages.lb-matching-tools
  • python312Packages.lb-matching-tools.dist
  • python312Packages.liblistenbrainz
  • python312Packages.liblistenbrainz.dist
  • python312Packages.pluralizer
  • python312Packages.pluralizer.dist
  • python312Packages.python-ffmpeg
  • python312Packages.python-ffmpeg.dist
  • python312Packages.requests-http-message-signatures
  • python312Packages.requests-http-message-signatures.dist
  • python312Packages.troi
  • python312Packages.troi.dist
  • python312Packages.typesense
  • python312Packages.typesense.dist
  • python313Packages.django-cache-memoize
  • python313Packages.django-cache-memoize.dist
  • python313Packages.lb-matching-tools
  • python313Packages.lb-matching-tools.dist
  • python313Packages.liblistenbrainz
  • python313Packages.liblistenbrainz.dist
  • python313Packages.pluralizer
  • python313Packages.pluralizer.dist
  • python313Packages.python-ffmpeg
  • python313Packages.python-ffmpeg.dist
  • python313Packages.requests-http-message-signatures
  • python313Packages.requests-http-message-signatures.dist
  • python313Packages.troi
  • python313Packages.troi.dist
  • python313Packages.typesense
  • python313Packages.typesense.dist

Copy link
Contributor

@eljamm eljamm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Diff LGTM.

@nixpkgs-ci nixpkgs-ci bot added 12.approvals: 2 This PR was reviewed and approved by two persons. and removed 12.approvals: 1 This PR was reviewed and approved by one person. labels Oct 31, 2025
Copy link
Contributor

@Infinidoge Infinidoge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good to me! (Though I haven't extensively tested the packages)
One actionable comment, one non-actionable comment

Comment on lines 30 to 31
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For something like this, standard practice would be to use fetch patch instead of vendoring the file

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is why I vendored it:

When adding patches in this manner you should be reasonably sure that the used URL is stable. Patches referencing open pull requests will change when the PR is updated and code forges (such as GitHub) usually garbage collect commits that are no longer reachable due to rebases/amends.

https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#patches

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For this patch in particular, I doubt upstream will be garbage collected, but it's such a small patch vendoring is hardly an issue

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no problem here, I just wish to express my displeasure with Darwin

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your time on this survey.

Your response has been recorded.

@nixpkgs-ci nixpkgs-ci bot added 12.approvals: 3+ This PR was reviewed and approved by three or more persons. 2.status: merge conflict This PR has merge conflicts with the target branch and removed 12.approvals: 2 This PR was reviewed and approved by two persons. labels Nov 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.status: merge conflict This PR has merge conflicts with the target branch 6.topic: python Python is a high-level, general-purpose programming language. 10.rebuild-darwin: 11-100 This PR causes between 11 and 100 packages to rebuild on Darwin. 10.rebuild-linux: 11-100 This PR causes between 11 and 100 packages to rebuild on Linux. 12.approvals: 3+ This PR was reviewed and approved by three or more persons.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants