Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2025-05-26 00:17:41 +00:00
committed by GitHub
524 changed files with 1488 additions and 3338 deletions
+85 -93
View File
@@ -74,59 +74,24 @@ jobs:
run: |
nix-build untrusted/ci -A eval.singleSystem \
--argstr evalSystem "$MATRIX_SYSTEM" \
--arg chunkSize 10000
--arg chunkSize 10000 \
--out-link merged
# If it uses too much memory, slightly decrease chunkSize
- name: Upload the output paths and eval stats
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: intermediate-${{ matrix.system }}
path: result/*
process:
name: Process
runs-on: ubuntu-24.04-arm
needs: [ prepare, outpaths ]
outputs:
targetRunId: ${{ steps.targetRunId.outputs.targetRunId }}
steps:
- name: Download output paths and eval stats for all systems
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
pattern: intermediate-*
path: intermediate
merge-multiple: true
- name: Check out the PR at the test merge commit
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ needs.prepare.outputs.mergedSha }}
path: untrusted
- name: Install Nix
uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31
with:
extra_nix_config: sandbox = true
- name: Combine all output paths and eval stats
run: |
nix-build untrusted/ci -A eval.combine \
--arg resultsDir ./intermediate \
-o prResult
- name: Upload the combined results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: result
path: prResult/*
name: merged-${{ matrix.system }}
path: merged/*
- name: Get target run id
if: needs.prepare.outputs.targetSha
id: targetRunId
env:
GH_TOKEN: ${{ github.token }}
MATRIX_SYSTEM: ${{ matrix.system }}
REPOSITORY: ${{ github.repository }}
TARGET_SHA: ${{ needs.prepare.outputs.targetSha }}
GH_TOKEN: ${{ github.token }}
run: |
# Get the latest eval.yml workflow run for the PR's target commit
if ! run=$(gh api --method GET /repos/"$REPOSITORY"/actions/workflows/eval.yml/runs \
@@ -138,16 +103,24 @@ jobs:
fi
echo "Comparing against $(jq .html_url <<< "$run")"
runId=$(jq .id <<< "$run")
conclusion=$(jq -r .conclusion <<< "$run")
if ! job=$(gh api --method GET /repos/"$REPOSITORY"/actions/runs/"$runId"/jobs \
--jq ".jobs[] | select (.name == \"Outpaths ($MATRIX_SYSTEM)\")") \
|| [[ -z "$job" ]]; then
echo "Could not find the Outpaths ($MATRIX_SYSTEM) job for workflow run $runId, cannot make comparison"
exit 1
fi
jobId=$(jq .id <<< "$job")
conclusion=$(jq -r .conclusion <<< "$job")
while [[ "$conclusion" == null || "$conclusion" == "" ]]; do
echo "Workflow not done, waiting 10 seconds before checking again"
echo "Job not done, waiting 10 seconds before checking again"
sleep 10
conclusion=$(gh api /repos/"$REPOSITORY"/actions/runs/"$runId" --jq '.conclusion')
conclusion=$(gh api /repos/"$REPOSITORY"/actions/jobs/"$jobId" --jq '.conclusion')
done
if [[ "$conclusion" != "success" ]]; then
echo "Workflow was not successful (conclusion: $conclusion), cannot make comparison"
echo "Job was not successful (conclusion: $conclusion), cannot make comparison"
exit 1
fi
@@ -156,78 +129,85 @@ jobs:
- uses: actions/download-artifact@v4
if: steps.targetRunId.outputs.targetRunId
with:
name: result
path: targetResult
merge-multiple: true
github-token: ${{ github.token }}
run-id: ${{ steps.targetRunId.outputs.targetRunId }}
name: merged-${{ matrix.system }}
path: target
github-token: ${{ github.token }}
merge-multiple: true
- name: Compare against the target branch
- name: Compare outpaths against the target branch
if: steps.targetRunId.outputs.targetRunId
env:
AUTHOR_ID: ${{ github.event.pull_request.user.id }}
MATRIX_SYSTEM: ${{ matrix.system }}
run: |
git -C untrusted fetch --depth 1 origin ${{ needs.prepare.outputs.targetSha }}
git -C untrusted worktree add ../trusted ${{ needs.prepare.outputs.targetSha }}
git -C untrusted diff --name-only ${{ needs.prepare.outputs.targetSha }} \
| jq --raw-input --slurp 'split("\n")[:-1]' > touched-files.json
nix-build untrusted/ci -A eval.diff \
--arg beforeDir ./target \
--arg afterDir "$(readlink ./merged)" \
--argstr evalSystem "$MATRIX_SYSTEM" \
--out-link diff
# Use the target branch to get accurate maintainer info
nix-build trusted/ci -A eval.compare \
--arg beforeResultDir ./targetResult \
--arg afterResultDir "$(realpath prResult)" \
--arg touchedFilesJson ./touched-files.json \
--argstr githubAuthorId "$AUTHOR_ID" \
-o comparison
cat comparison/step-summary.md >> "$GITHUB_STEP_SUMMARY"
- name: Upload the combined results
- name: Upload outpaths diff and stats
if: steps.targetRunId.outputs.targetRunId
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: comparison
path: comparison/*
name: diff-${{ matrix.system }}
path: diff/*
# Separate job to have a very tightly scoped PR write token
tag:
name: Tag
runs-on: ubuntu-24.04-arm
needs: [ prepare, process ]
if: needs.process.outputs.targetRunId
needs: [ prepare, outpaths ]
if: needs.prepare.outputs.targetSha
permissions:
pull-requests: write
statuses: write
steps:
# See ./codeowners-v2.yml, reuse the same App because we need the same permissions
# Can't use the token received from permissions above, because it can't get enough permissions
- uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
if: vars.OWNER_APP_ID
id: app-token
with:
app-id: ${{ vars.OWNER_APP_ID }}
private-key: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
permission-administration: read
permission-members: read
permission-pull-requests: write
- name: Download process result
- name: Download output paths and eval stats for all systems
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: comparison
path: comparison
pattern: diff-*
path: diff
merge-multiple: true
- name: Install Nix
uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31
# Important: This workflow job runs with extra permissions,
# so we need to make sure to not run untrusted code from PRs
- name: Check out Nixpkgs at the target commit
- name: Check out the PR at the target commit
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ needs.prepare.outputs.targetSha }}
path: trusted
sparse-checkout: ci
- name: Install Nix
uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31
with:
extra_nix_config: sandbox = true
- name: Combine all output paths and eval stats
run: |
nix-build trusted/ci -A eval.combine \
--arg diffDir ./diff \
--out-link combined
- name: Compare against the target branch
env:
AUTHOR_ID: ${{ github.event.pull_request.user.id }}
run: |
git -C trusted fetch --depth 1 origin ${{ needs.prepare.outputs.mergedSha }}
git -C trusted diff --name-only ${{ needs.prepare.outputs.mergedSha }} \
| jq --raw-input --slurp 'split("\n")[:-1]' > touched-files.json
# Use the target branch to get accurate maintainer info
nix-build trusted/ci -A eval.compare \
--arg combinedDir "$(realpath ./combined)" \
--arg touchedFilesJson ./touched-files.json \
--argstr githubAuthorId "$AUTHOR_ID" \
--out-link comparison
cat comparison/step-summary.md >> "$GITHUB_STEP_SUMMARY"
- name: Upload the comparison results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: comparison
path: comparison/*
- name: Build the requestReviews derivation
run: nix-build trusted/ci -A requestReviews
@@ -286,6 +266,18 @@ jobs:
"/repos/$GITHUB_REPOSITORY/statuses/$PR_HEAD_SHA" \
-f "context=Eval / Summary" -f "state=success" -f "description=$description" -f "target_url=$target_url"
# See ./codeowners-v2.yml, reuse the same App because we need the same permissions
# Can't use the token received from permissions above, because it can't get enough permissions
- uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
if: vars.OWNER_APP_ID
id: app-token
with:
app-id: ${{ vars.OWNER_APP_ID }}
private-key: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
permission-administration: read
permission-members: read
permission-pull-requests: write
- name: Requesting maintainer reviews
if: ${{ steps.app-token.outputs.token && github.repository_owner == 'NixOS' }}
env:
+5 -19
View File
@@ -7,8 +7,7 @@
python3,
}:
{
beforeResultDir,
afterResultDir,
combinedDir,
touchedFilesJson,
githubAuthorId,
byName ? false,
@@ -20,7 +19,7 @@ let
---
Inputs:
- beforeResultDir, afterResultDir: The evaluation result from before and after the change.
- beforeDir, afterDir: The evaluation result from before and after the change.
They can be obtained by running `nix-build -A ci.eval.full` on both revisions.
---
@@ -66,7 +65,6 @@ let
Example: { name = "python312Packages.numpy"; platform = "x86_64-linux"; }
*/
inherit (import ./utils.nix { inherit lib; })
diff
groupByKernel
convertToPackagePlatformAttrs
groupByPlatform
@@ -74,22 +72,10 @@ let
getLabels
;
getAttrs =
dir:
let
raw = builtins.readFile "${dir}/outpaths.json";
# The file contains Nix paths; we need to ignore them for evaluation purposes,
# else there will be a "is not allowed to refer to a store path" error.
data = builtins.unsafeDiscardStringContext raw;
in
builtins.fromJSON data;
beforeAttrs = getAttrs beforeResultDir;
afterAttrs = getAttrs afterResultDir;
# Attrs
# - keys: "added", "changed" and "removed"
# - values: lists of `packagePlatformPath`s
diffAttrs = diff beforeAttrs afterAttrs;
diffAttrs = builtins.fromJSON (builtins.readFile "${combinedDir}/combined-diff.json");
rebuilds = diffAttrs.added ++ diffAttrs.changed;
rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs rebuilds;
@@ -149,8 +135,8 @@ runCommand "compare"
maintainers = builtins.toJSON maintainers;
passAsFile = [ "maintainers" ];
env = {
BEFORE_DIR = "${beforeResultDir}";
AFTER_DIR = "${afterResultDir}";
BEFORE_DIR = "${combinedDir}/before";
AFTER_DIR = "${combinedDir}/after";
};
}
''
-26
View File
@@ -93,32 +93,6 @@ rec {
in
uniqueStrings (builtins.map (p: p.name) packagePlatformAttrs);
/*
Computes the key difference between two attrs
{
added: [ <keys only in the second object> ],
removed: [ <keys only in the first object> ],
changed: [ <keys with different values between the two objects> ],
}
*/
diff =
let
filterKeys = cond: attrs: lib.attrNames (lib.filterAttrs cond attrs);
in
old: new: {
added = filterKeys (n: _: !(old ? ${n})) new;
removed = filterKeys (n: _: !(new ? ${n})) old;
changed = filterKeys (
n: v:
# Filter out attributes that don't exist anymore
(new ? ${n})
# Filter out attributes that are the same as the new value
&& (v != (new.${n}))
) old;
};
/*
Group a list of `packagePlatformAttr`s by platforms
+32 -11
View File
@@ -191,11 +191,13 @@ let
cat "$chunkOutputDir"/result/* | jq -s 'add | map_values(.outputs)' > $out/${evalSystem}/paths.json
'';
diff = callPackage ./diff.nix { };
combine =
{
resultsDir,
diffDir,
}:
runCommand "combined-result"
runCommand "combined-eval"
{
nativeBuildInputs = [
jq
@@ -205,12 +207,22 @@ let
mkdir -p $out
# Combine output paths from all systems
cat ${resultsDir}/*/paths.json | jq -s add > $out/outpaths.json
cat ${diffDir}/*/diff.json | jq -s '
reduce .[] as $item ({}; {
added: (.added + $item.added),
changed: (.changed + $item.changed),
removed: (.removed + $item.removed)
})
' > $out/combined-diff.json
mkdir -p $out/stats
mkdir -p $out/before/stats
for d in ${diffDir}/before/*; do
cp -r "$d"/stats-by-chunk $out/before/stats/$(basename "$d")
done
for d in ${resultsDir}/*; do
cp -r "$d"/stats-by-chunk $out/stats/$(basename "$d")
mkdir -p $out/after/stats
for d in ${diffDir}/after/*; do
cp -r "$d"/stats-by-chunk $out/after/stats/$(basename "$d")
done
'';
@@ -225,18 +237,26 @@ let
quickTest ? false,
}:
let
results = symlinkJoin {
name = "results";
diffs = symlinkJoin {
name = "diffs";
paths = map (
evalSystem:
singleSystem {
inherit quickTest evalSystem chunkSize;
let
eval = singleSystem {
inherit quickTest evalSystem chunkSize;
};
in
diff {
inherit evalSystem;
# Local "full" evaluation doesn't do a real diff.
beforeDir = eval;
afterDir = eval;
}
) evalSystems;
};
in
combine {
resultsDir = results;
diffDir = diffs;
};
in
@@ -244,6 +264,7 @@ in
inherit
attrpathsSuperset
singleSystem
diff
combine
compare
# The above three are used by separate VMs in a GitHub workflow,
+61
View File
@@ -0,0 +1,61 @@
{
lib,
runCommand,
writeText,
}:
{
beforeDir,
afterDir,
evalSystem,
}:
let
/*
Computes the key difference between two attrs
{
added: [ <keys only in the second object> ],
removed: [ <keys only in the first object> ],
changed: [ <keys with different values between the two objects> ],
}
*/
diff =
let
filterKeys = cond: attrs: lib.attrNames (lib.filterAttrs cond attrs);
in
old: new: {
added = filterKeys (n: _: !(old ? ${n})) new;
removed = filterKeys (n: _: !(new ? ${n})) old;
changed = filterKeys (
n: v:
# Filter out attributes that don't exist anymore
(new ? ${n})
# Filter out attributes that are the same as the new value
&& (v != (new.${n}))
) old;
};
getAttrs =
dir:
let
raw = builtins.readFile "${dir}/${evalSystem}/paths.json";
# The file contains Nix paths; we need to ignore them for evaluation purposes,
# else there will be a "is not allowed to refer to a store path" error.
data = builtins.unsafeDiscardStringContext raw;
in
builtins.fromJSON data;
beforeAttrs = getAttrs beforeDir;
afterAttrs = getAttrs afterDir;
diffAttrs = diff beforeAttrs afterAttrs;
diffJson = writeText "diff.json" (builtins.toJSON diffAttrs);
in
runCommand "diff" { } ''
mkdir -p $out/${evalSystem}
cp -r ${beforeDir} $out/before
cp -r ${afterDir} $out/after
cp ${diffJson} $out/${evalSystem}/diff.json
''
+6
View File
@@ -20858,6 +20858,12 @@
githubId = 3302;
name = "Renzo Carbonara";
};
repparw = {
email = "ubritos@gmail.com";
github = "repparw";
githubId = 45952970;
name = "repparw";
};
reputable2772 = {
name = "Reputable2772";
github = "Reputable2772";
+2 -1
View File
@@ -57,7 +57,8 @@ in
config = mkIf cfg.enable {
systemd.services.readeck = {
description = "Readeck";
after = [ "network.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension (finalAttrs: {
mktplcRef = {
name = "amazon-q-vscode";
publisher = "AmazonWebServices";
version = "1.67.0";
hash = "sha256-1GShGk0ulYlpJpcdai7T2n0p2v1qicLE4X2d7Pqx4Zc=";
version = "1.69.0";
hash = "sha256-DmkDkBItpcbCW3pQJ2j4SFJFubSL9jhfF66EDN96W5k=";
};
meta = {
@@ -786,8 +786,8 @@ let
mktplcRef = {
name = "vscode-tailwindcss";
publisher = "bradlc";
version = "0.14.16";
hash = "sha256-U2oZSIsLpqEqYBIEjSnIToEOOnTCUi4vR6XwjnNUDN8=";
version = "0.14.19";
hash = "sha256-HgrUTrYHJNC8tS8qZza98Tr3T0O0NMb7DgddNf3m7XY=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/bradlc.vscode-tailwindcss/changelog";
@@ -1195,8 +1195,8 @@ let
mktplcRef = {
publisher = "DanielGavin";
name = "ols";
version = "0.1.35";
hash = "sha256-Kem8o0gM1+cYohmua17kIlAH1RURgqoc0sPuIFDVU8Q=";
version = "0.1.37";
hash = "sha256-R2vZNv6vkq5OIw3RzaAm4WGC4awiCC4junB3DRpJIfs=";
};
meta = {
description = "Visual Studio Code extension for Odin language";
@@ -1210,8 +1210,8 @@ let
mktplcRef = {
publisher = "DanielSanMedium";
name = "dscodegpt";
version = "3.12.3";
hash = "sha256-9vv/ourveSqLQyHylbWpUuJDwnpsZLihC800qDLI3YY=";
version = "3.12.38";
hash = "sha256-+9OsFH586I8/P7WzadRHS9tX22/bxOByJB2LDSqp2Nk=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/DanielSanMedium.dscodegpt/changelog";
@@ -1700,8 +1700,8 @@ let
mktplcRef = {
name = "elixir-ls";
publisher = "JakeBecker";
version = "0.27.2";
hash = "sha256-PXQiZOAAApsYLB3hztQcjAsnmkfDSDtYvUmMhFUfLxA=";
version = "0.28.0";
hash = "sha256-pHLAA7i2HJC523lPotUy5Zwa3BTSTurC2BA+eevdH38=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/JakeBecker.elixir-ls/changelog";
@@ -2716,8 +2716,8 @@ let
mktplcRef = {
publisher = "jnoortheen";
name = "nix-ide";
version = "0.4.16";
hash = "sha256-MdFDOg9uTUzYtRW2Kk4L8V3T/87MRDy1HyXY9ikqDFY=";
version = "0.4.18";
hash = "sha256-ucy1Z0VcikEIU+s/Ai2qgJcUkEoNcAo7y7A2nuq3yZo=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/jnoortheen.nix-ide/changelog";
@@ -3141,8 +3141,8 @@ let
mktplcRef = {
publisher = "maximedenes";
name = "vscoq";
version = "2.2.5";
hash = "sha256-ctaeTgdK1JijSI3YD54iWEBNVrbaad408wD43fH78h4=";
version = "2.2.6";
hash = "sha256-QBUTOFhdksHGkpYqgQIF2u+WodYH5PmMMvGFHwEEEIk=";
};
meta = {
description = "VsCoq is an extension for Visual Studio Code (VS Code) and VSCodium with support for the Coq Proof Assistant";
@@ -3395,8 +3395,8 @@ let
mktplcRef = {
name = "datawrangler";
publisher = "ms-toolsai";
version = "1.21.1";
hash = "sha256-I701ziW0Ibs92MzCuMGHv5AjhYrD3ow4/3U9MgB1onY=";
version = "1.22.0";
hash = "sha256-gUlb48g12RW4j2HS9jfpZROgtFM9zEPg4ozLM7hOaLk=";
};
meta = {
@@ -10,8 +10,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "magic-racket";
publisher = "evzen-wybitul";
version = "0.6.7";
hash = "sha256-1A4j8710AYuV8gA+sybv6WSavPVcCPMvI71h4n4Jx0w=";
version = "0.7.0";
hash = "sha256-8q2H9VPmdIAh4VmtGjIAwUfpr1P7+zmDLGiyCNbAXBU=";
};
nativeBuildInputs = [
jq
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
publisher = "github";
name = "copilot-chat";
version = "0.27.1";
hash = "sha256-HXzPI8B4wISly2SQNdbFO6CEREfhey+SH4HhutxH7Mg=";
version = "0.27.2";
hash = "sha256-nwBDQNs5qrA0TxQZVtuXRiOy0iBNOCFpIim0x2k37YA=";
};
meta = {
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
publisher = "github";
name = "copilot";
version = "1.322.0";
hash = "sha256-PekZQeRqpCSSVQe+AA0XLAwC3K0LGtRMbfnN7MxfmGA=";
version = "1.323.0";
hash = "sha256-rTAq6snn3HAARrYbMJYy7aZ5rDucLfFS/t01VPjgXAo=";
};
meta = {
@@ -1,112 +0,0 @@
diff --git a/Makefile.in b/Makefile.in
index 8f33aa2ff4..39928382da 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -4358,7 +4358,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS = \
monodll_msw_utils.o \
monodll_utilsexc.o \
monodll_fswatcher.o \
- monodll_msw_secretstore.o
+ monodll_msw_secretstore.o \
monodll_msw_uilocale.o
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS)
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS \
@@ -5284,7 +5284,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS = \
monodll_uuid.o \
monodll_msw_evtloop.o \
monodll_access.o \
- monodll_dark_mode.o
+ monodll_dark_mode.o \
monodll_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS = \
@@ -6196,7 +6196,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1 = \
monodll_uuid.o \
monodll_msw_evtloop.o \
monodll_access.o \
- monodll_dark_mode.o
+ monodll_dark_mode.o \
monodll_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_1 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_1 = \
@@ -6371,7 +6371,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1 = \
monolib_msw_utils.o \
monolib_utilsexc.o \
monolib_fswatcher.o \
- monolib_msw_secretstore.o
+ monolib_msw_secretstore.o \
monolib_msw_uilocale.o
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_1 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1)
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_1 \
@@ -7297,7 +7297,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2 = \
monolib_uuid.o \
monolib_msw_evtloop.o \
monolib_access.o \
- monolib_dark_mode.o
+ monolib_dark_mode.o \
monolib_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_2 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_2 = \
@@ -8209,7 +8209,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3 = \
monolib_uuid.o \
monolib_msw_evtloop.o \
monolib_access.o \
- monolib_dark_mode.o
+ monolib_dark_mode.o \
monolib_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_3 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_3 = \
@@ -8436,7 +8436,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2 = \
basedll_msw_utils.o \
basedll_utilsexc.o \
basedll_fswatcher.o \
- basedll_msw_secretstore.o
+ basedll_msw_secretstore.o \
basedll_msw_uilocale.o
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_2 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2)
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_2 \
@@ -8523,7 +8523,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3 = \
baselib_msw_utils.o \
baselib_utilsexc.o \
baselib_fswatcher.o \
- baselib_msw_secretstore.o
+ baselib_msw_secretstore.o \
baselib_msw_uilocale.o
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_3 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3)
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_3 \
@@ -9464,7 +9464,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4 = \
coredll_uuid.o \
coredll_msw_evtloop.o \
coredll_access.o \
- coredll_dark_mode.o
+ coredll_dark_mode.o \
coredll_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_4 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_4 = \
@@ -10376,7 +10376,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5 = \
coredll_uuid.o \
coredll_msw_evtloop.o \
coredll_access.o \
- coredll_dark_mode.o
+ coredll_dark_mode.o \
coredll_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_5 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_5 = \
@@ -11204,7 +11204,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6 = \
corelib_uuid.o \
corelib_msw_evtloop.o \
corelib_access.o \
- corelib_dark_mode.o
+ corelib_dark_mode.o \
corelib_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_6 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_6 = \
@@ -12116,7 +12116,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7 = \
corelib_uuid.o \
corelib_msw_evtloop.o \
corelib_access.o \
- corelib_dark_mode.o
+ corelib_dark_mode.o \
corelib_msw_bmpbndl.o
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_7 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7)
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_7 = \
+3 -1
View File
@@ -2,6 +2,7 @@
lib,
fetchFromGitHub,
cmake,
desktopToDarwinBundle,
pkg-config,
qtbase,
qtsvg,
@@ -45,7 +46,8 @@ gnuradioMinimal.pkgs.mkDerivation rec {
pkg-config
wrapQtAppsHook
wrapGAppsHook3
];
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
buildInputs =
[
gnuradioMinimal.unwrapped.logLib
+5 -5
View File
@@ -11,14 +11,14 @@
}:
buildGoModule rec {
pname = "alist";
version = "3.44.0";
webVersion = "3.44.0";
version = "3.45.0";
webVersion = "3.45.0";
src = fetchFromGitHub {
owner = "AlistGo";
repo = "alist";
tag = "v${version}";
hash = "sha256-zaIS2DYB7x76SCHCX9aJ0/8Lejwy3/AlLbnztSNJtSc=";
hash = "sha256-h8oWeTX3z3xye5O4+s7LA7Wm36JOrsU+UdKGZXaDKXk=";
# populate values that require us to use git. By doing this in postFetch we
# can delete .git afterwards and maintain better reproducibility of the src.
leaveDotGit = true;
@@ -32,11 +32,11 @@ buildGoModule rec {
};
web = fetchzip {
url = "https://github.com/AlistGo/alist-web/releases/download/${webVersion}/dist.tar.gz";
hash = "sha256-YPqbEPpwRVTWwH/LOq7cGsYju6YqdFCOseD52OsnkSk=";
hash = "sha256-rNVa+dr/SX2aYHBzeV8QdD5XYCFyelhbqkTpvhF+S2g=";
};
proxyVendor = true;
vendorHash = "sha256-eBIlBtO+AlW2TE4xgxktePb2bm1lIYiuZ4+AUd1bdW8=";
vendorHash = "sha256-IMoLVAgOaVM1xIFDe8BGOpzyBnDMfD9Q6VogFfOWFzU=";
buildInputs = [ fuse ];
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -150,7 +150,7 @@ stdenv.mkDerivation (finalAttrs: {
preFixup =
let
libs = [ vulkan-loader ] ++ cubeb.passthru.backendLibs;
libs = [ vulkan-loader ];
in
''
gappsWrapperArgs+=(
+8 -9
View File
@@ -8,17 +8,16 @@
}:
rustPlatform.buildRustPackage rec {
pname = "cook-cli";
version = "0.10.0";
version = "0.12.1";
src = fetchFromGitHub {
owner = "cooklang";
repo = "cookcli";
rev = "v${version}";
hash = "sha256-1m2+etJG+33fPTxBF8qT/U9WiZGcSn9r0WlK5PDL6/Q=";
hash = "sha256-2vY68PUoHDyyH3hJ/Fvjxbof7RzWFWYTg1UhsjWNpww=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-3tWVCP80a6odmi9C0klLbfO5UmdFczyUY8KQSaMIyw4=";
cargoHash = "sha256-H4soSp9fDwrqcv3eL5WqGYHWAt07gyVLoEVp1VbYchQ=";
nativeBuildInputs = [
pkg-config
@@ -39,7 +38,7 @@ rustPlatform.buildRustPackage rec {
passthru.ui = buildNpmPackage {
name = "ui";
src = "${src}/ui";
npmDepsHash = "sha256-uMyOAYLVHhY4ytvEFvVzdoQ7ExzQ4sH+ZtDrEacu5bk=";
npmDepsHash = "sha256-zx8G6Raop1EZAVy1YCF5ag5aL9NutRxbPfTARmjP2SY=";
makeCacheWritable = true;
npmFlags = [ "--legacy-peer-deps" ];
installPhase = ''
@@ -49,13 +48,13 @@ rustPlatform.buildRustPackage rec {
'';
};
meta = with lib; {
meta = {
changelog = "https://github.com/cooklang/cookcli/releases/tag/v${version}";
description = "Suite of tools to create shopping lists and maintain recipes";
homepage = "https://cooklang.org/";
license = [ licenses.mit ];
license = lib.licenses.mit;
mainProgram = "cook";
maintainers = [ maintainers.emilioziniades ];
platforms = platforms.linux ++ platforms.darwin;
maintainers = [ lib.maintainers.emilioziniades ];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
}
@@ -0,0 +1,208 @@
From e0cbc1049b9a3a3322cd48d32af148f87d5007c2 Mon Sep 17 00:00:00 2001
From: Marcin Serwin <marcin@serwin.dev>
Date: Mon, 19 May 2025 22:36:53 +0200
Subject: [PATCH] cmake: add pkg-config file generation
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
---
CMakeLists.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
libcubeb.pc.in | 12 ++++++++++++
2 files changed, 62 insertions(+)
create mode 100644 libcubeb.pc.in
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 07618fa..6470837 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,17 @@ if(NOT CMAKE_BUILD_TYPE)
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif()
+set(private_requires)
+set(private_libs)
+set(private_libs_flags)
+if(UNIX AND NOT APPLE)
+ if(BSD OR ANDROID)
+ list(APPEND private_libs c++)
+ else()
+ list(APPEND private_libs stdc++)
+ endif()
+endif()
+
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -141,6 +152,7 @@ if(NOT BUNDLE_SPEEX)
pkg_check_modules(speexdsp IMPORTED_TARGET speexdsp)
if(speexdsp_FOUND)
add_library(speex ALIAS PkgConfig::speexdsp)
+ list(APPEND private_requires speexdsp)
endif()
endif()
endif()
@@ -155,6 +167,7 @@ if(NOT TARGET speex)
EXPORT=
RANDOM_PREFIX=speex
)
+ list(APPEND private_libs speex)
endif()
# $<BUILD_INTERFACE:> required because of https://gitlab.kitware.com/cmake/cmake/-/issues/15415
@@ -166,6 +179,7 @@ include(CheckIncludeFiles)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads)
target_link_libraries(cubeb PRIVATE Threads::Threads)
+list(APPEND private_libs ${CMAKE_THREAD_LIBS_INIT})
if(LAZY_LOAD_LIBS)
check_include_files(pulse/pulseaudio.h USE_PULSE)
@@ -176,6 +190,7 @@ if(LAZY_LOAD_LIBS)
if(USE_PULSE OR USE_ALSA OR USE_JACK OR USE_SNDIO OR USE_AAUDIO)
target_link_libraries(cubeb PRIVATE ${CMAKE_DL_LIBS})
+ list(APPEND private_libs ${CMAKE_DL_LIBS})
if(ANDROID)
target_compile_definitions(cubeb PRIVATE __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__)
@@ -191,6 +206,7 @@ else()
set(USE_PULSE ON)
target_compile_definitions(cubeb PRIVATE DISABLE_LIBPULSE_DLOPEN)
target_link_libraries(cubeb PRIVATE PkgConfig::libpulse)
+ list(APPEND private_requires libpulse)
endif()
pkg_check_modules(alsa IMPORTED_TARGET alsa)
@@ -198,6 +214,7 @@ else()
set(USE_ALSA ON)
target_compile_definitions(cubeb PRIVATE DISABLE_LIBASOUND_DLOPEN)
target_link_libraries(cubeb PRIVATE PkgConfig::alsa)
+ list(APPEND private_requires alsa)
endif()
pkg_check_modules(jack IMPORTED_TARGET jack)
@@ -205,18 +222,21 @@ else()
set(USE_JACK ON)
target_compile_definitions(cubeb PRIVATE DISABLE_LIBJACK_DLOPEN)
target_link_libraries(cubeb PRIVATE PkgConfig::jack)
+ list(APPEND private_requires jack)
endif()
check_include_files(sndio.h USE_SNDIO)
if(USE_SNDIO)
target_compile_definitions(cubeb PRIVATE DISABLE_LIBSNDIO_DLOPEN)
target_link_libraries(cubeb PRIVATE sndio)
+ list(APPEND private_libs sndio)
endif()
check_include_files(aaudio/AAudio.h USE_AAUDIO)
if(USE_AAUDIO)
target_compile_definitions(cubeb PRIVATE DISABLE_LIBAAUDIO_DLOPEN)
target_link_libraries(cubeb PRIVATE aaudio)
+ list(APPEND private_libs aaudio)
endif()
endif()
@@ -263,6 +283,7 @@ if(USE_AUDIOUNIT)
src/cubeb_osx_run_loop.cpp)
target_compile_definitions(cubeb PRIVATE USE_AUDIOUNIT)
target_link_libraries(cubeb PRIVATE "-framework AudioUnit" "-framework CoreAudio" "-framework CoreServices")
+ list(APPEND private_libs_flags "-framework AudioUnit" "-framework CoreAudio" "-framework CoreServices")
endif()
check_include_files(audioclient.h USE_WASAPI)
@@ -271,6 +292,7 @@ if(USE_WASAPI)
src/cubeb_wasapi.cpp)
target_compile_definitions(cubeb PRIVATE USE_WASAPI)
target_link_libraries(cubeb PRIVATE avrt ole32 ksuser)
+ list(APPEND private_libs avrt ole32 ksuser)
endif()
check_include_files("windows.h;mmsystem.h" USE_WINMM)
@@ -279,6 +301,7 @@ if(USE_WINMM)
src/cubeb_winmm.c)
target_compile_definitions(cubeb PRIVATE USE_WINMM)
target_link_libraries(cubeb PRIVATE winmm)
+ list(APPEND private_libs winmm)
endif()
check_include_files(SLES/OpenSLES.h USE_OPENSL)
@@ -288,6 +311,7 @@ if(USE_OPENSL)
src/cubeb-jni.cpp)
target_compile_definitions(cubeb PRIVATE USE_OPENSL)
target_link_libraries(cubeb PRIVATE OpenSLES)
+ list(APPEND private_libs OpenSLES)
endif()
check_include_files(sys/soundcard.h HAVE_SYS_SOUNDCARD_H)
@@ -303,6 +327,7 @@ if(HAVE_SYS_SOUNDCARD_H)
pkg_check_modules(libbsd-overlay IMPORTED_TARGET libbsd-overlay)
if(libbsd-overlay_FOUND)
target_link_libraries(cubeb PRIVATE PkgConfig::libbsd-overlay)
+ list(APPEND private_requires libbsd-overlay)
set(HAVE_STRLCPY true)
endif()
endif()
@@ -320,6 +345,7 @@ if(USE_AUDIOTRACK)
src/cubeb_audiotrack.c)
target_compile_definitions(cubeb PRIVATE USE_AUDIOTRACK)
target_link_libraries(cubeb PRIVATE log)
+ list(APPEND private_libs log)
endif()
check_include_files(sys/audioio.h USE_SUN)
@@ -335,6 +361,7 @@ if(USE_KAI)
src/cubeb_kai.c)
target_compile_definitions(cubeb PRIVATE USE_KAI)
target_link_libraries(cubeb PRIVATE kai)
+ list(APPEND private_libs kai)
endif()
if(USE_PULSE AND USE_PULSE_RUST)
@@ -452,3 +479,26 @@ add_custom_target(clang-format-check
| xargs -0 ${CLANG_FORMAT_BINARY} -Werror -n
COMMENT "Check formatting with clang-format"
VERBATIM)
+
+
+list(TRANSFORM private_libs PREPEND "-l")
+string(JOIN " " CUBEB_PC_PRIVATE_LIBS ${private_libs} ${private_libs_flags})
+
+string(JOIN " " CUBEB_PC_PRIVATE_REQUIRES ${private_requires})
+
+if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
+ set(CUBEB_PC_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}")
+else()
+ set(CUBEB_PC_INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
+endif()
+if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+ set(CUBEB_PC_LIBDIR "${CMAKE_INSTALL_LIBDIR}")
+else()
+ set(CUBEB_PC_LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
+endif()
+
+configure_file(libcubeb.pc.in libcubeb.pc @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libcubeb.pc"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+)
+
diff --git a/libcubeb.pc.in b/libcubeb.pc.in
new file mode 100644
index 0000000..2310ae6
--- /dev/null
+++ b/libcubeb.pc.in
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=@CUBEB_PC_LIBDIR@
+includedir=@CUBEB_PC_INCLUDEDIR@
+
+Name: libcubeb
+Description: Cross platform audio library
+Version: @PROJECT_VERSION@
+Requires.private: @CUBEB_PC_PRIVATE_REQUIRES@
+Libs: -L${libdir} -lcubeb
+Libs.private: @CUBEB_PC_PRIVATE_LIBS@
+Cflags: -I${includedir}
--
2.49.0
@@ -0,0 +1,31 @@
From 4f8dff52e99bdd70d07d7cb47d357bb91dc5f1a9 Mon Sep 17 00:00:00 2001
From: Marcin Serwin <marcin@serwin.dev>
Date: Sat, 24 May 2025 16:20:51 +0200
Subject: [PATCH] cmake: don't hardcode "include" as the includedir
When the default CMAKE_INSTALL_INCLUDEDIR is changed
headers are installed to a different location, however, the
INTERFACE_INCLUDE_DIRECTORIES in exported cmake configuration still
point to <prefix>/include.
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 07618fa..bdf2212 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -91,7 +91,7 @@ add_library(cubeb
src/cubeb_utils.cpp
)
target_include_directories(cubeb
- PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
set_target_properties(cubeb PROPERTIES
VERSION ${cubeb_VERSION}
--
2.49.0
+54 -43
View File
@@ -2,6 +2,7 @@
lib,
stdenv,
fetchFromGitHub,
unstableGitUpdater,
cmake,
pkg-config,
alsa-lib,
@@ -9,80 +10,90 @@
libpulseaudio,
sndio,
speexdsp,
lazyLoad ? !stdenv.hostPlatform.isDarwin,
validatePkgConfig,
# passthru.tests
testers,
pcsx2,
duckstation,
alsaSupport ? !stdenv.hostPlatform.isDarwin,
pulseSupport ? !stdenv.hostPlatform.isDarwin,
jackSupport ? !stdenv.hostPlatform.isDarwin,
sndioSupport ? !stdenv.hostPlatform.isDarwin,
buildSharedLibs ? true,
enableShared ? !stdenv.hostPlatform.isStatic,
}:
assert lib.assertMsg (
stdenv.hostPlatform.isDarwin -> !lazyLoad
) "cubeb: lazyLoad is inert on Darwin";
let
backendLibs =
lib.optional alsaSupport alsa-lib
++ lib.optional jackSupport jack2
++ lib.optional pulseSupport libpulseaudio
++ lib.optional sndioSupport sndio;
in
stdenv.mkDerivation {
stdenv.mkDerivation (finalAttrs: {
pname = "cubeb";
version = "unstable-2022-10-18";
version = "0-unstable-2025-04-02";
src = fetchFromGitHub {
owner = "mozilla";
repo = "cubeb";
rev = "27d2a102b0b75d9e49d43bc1ea516233fb87d778";
hash = "sha256-q+uz1dGU4LdlPogL1nwCR/KuOX4Oy3HhMdA6aJylBRk=";
rev = "975a727e5e308a04cfb9ecdf7ddaf1150ea3f733";
hash = "sha256-3IP++tdiJUwXR6t5mf/MkPd524K/LYESNMkQ8vy10jo=";
};
outputs = [
"out"
"lib"
"dev"
];
nativeBuildInputs = [
cmake
pkg-config
validatePkgConfig
];
buildInputs = [ speexdsp ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) backendLibs;
buildInputs =
[ speexdsp ]
# In the default configuration these inputs are lazy-loaded. If your package builds a vendored cubeb please make
# sure to include these in the runtime LD path.
++ lib.optional alsaSupport alsa-lib
++ lib.optional jackSupport jack2
++ lib.optional pulseSupport libpulseaudio
++ lib.optional sndioSupport sndio;
patches = [
# https://github.com/mozilla/cubeb/pull/813
./0001-cmake-add-pkg-config-file-generation.patch
# https://github.com/mozilla/cubeb/pull/814
./0001-cmake-don-t-hardcode-include-as-the-includedir.patch
];
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" buildSharedLibs)
"-DBUILD_TESTS=OFF" # tests require an audio server
"-DBUNDLE_SPEEX=OFF"
"-DUSE_SANITIZERS=OFF"
(lib.cmakeBool "BUILD_SHARED_LIBS" enableShared)
(lib.cmakeBool "BUILD_TESTS" false) # tests require an audio server
(lib.cmakeBool "BUNDLE_SPEEX" false)
(lib.cmakeBool "USE_SANITIZERS" false)
# Whether to lazily load libraries with dlopen()
"-DLAZY_LOAD_LIBS=${if lazyLoad then "ON" else "OFF"}"
(lib.cmakeBool "LAZY_LOAD_LIBS" false)
];
passthru = {
# For downstream users when lazyLoad is true
backendLibs = lib.optionals lazyLoad backendLibs;
updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
tests = {
# These packages depend on a patched version of cubeb
inherit pcsx2 duckstation;
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
};
postInstall = ''
# TODO: remove after https://github.com/mozilla/cubeb/pull/813 is merged
mkdir -p $out/lib/pkgconfig/
echo > $out/lib/pkgconfig/libcubeb.pc \
"Name: libcubeb
Description: Cross platform audio library
Version: 0.0.0
Requires.private: libpulse
Libs: -L"$out/lib" -lcubeb
Libs.private: -lstdc++"
'';
meta = with lib; {
meta = {
description = "Cross platform audio library";
mainProgram = "cubeb-test";
homepage = "https://github.com/mozilla/cubeb";
license = licenses.isc;
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [
license = lib.licenses.isc;
platforms = with lib.platforms; linux ++ darwin;
maintainers = with lib.maintainers; [
zhaofengli
marcin-serwin
];
pkgConfigModules = [ "libcubeb" ];
};
}
})
+8 -11
View File
@@ -6,9 +6,7 @@
callPackage,
cmake,
cpuinfo,
cubeb,
curl,
discord-rpc,
extra-cmake-modules,
libXrandr,
libbacktrace,
@@ -42,6 +40,7 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
./002-hardcode-vars.diff
# Fix NEON intrinsics usage
./003-fix-NEON-intrinsics.patch
./remove-cubeb-vendor.patch
];
nativeBuildInputs = [
@@ -57,6 +56,7 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
buildInputs = [
SDL2
cpuinfo
sources.cubeb
curl
libXrandr
libbacktrace
@@ -70,7 +70,7 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
sources.soundtouch-patched
sources.spirv-cross-patched
wayland
] ++ cubeb.passthru.backendLibs;
];
cmakeFlags = [
(lib.cmakeBool "BUILD_TESTS" true)
@@ -115,14 +115,11 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
qtWrapperArgs =
let
libPath = lib.makeLibraryPath (
[
sources.shaderc-patched
sources.spirv-cross-patched
vulkan-loader
]
++ cubeb.passthru.backendLibs
);
libPath = lib.makeLibraryPath ([
sources.shaderc-patched
sources.spirv-cross-patched
vulkan-loader
]);
in
[
"--prefix LD_LIBRARY_PATH : ${libPath}"
@@ -0,0 +1,29 @@
diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt
index af35687..8347825 100644
--- a/dep/CMakeLists.txt
+++ b/dep/CMakeLists.txt
@@ -22,9 +22,8 @@ add_subdirectory(rcheevos EXCLUDE_FROM_ALL)
disable_compiler_warnings_for_target(rcheevos)
add_subdirectory(rapidyaml EXCLUDE_FROM_ALL)
disable_compiler_warnings_for_target(rapidyaml)
-add_subdirectory(cubeb EXCLUDE_FROM_ALL)
-disable_compiler_warnings_for_target(cubeb)
-disable_compiler_warnings_for_target(speex)
+find_package(cubeb REQUIRED GLOBAL)
+add_library(cubeb ALIAS cubeb::cubeb)
add_subdirectory(kissfft EXCLUDE_FROM_ALL)
disable_compiler_warnings_for_target(kissfft)
diff --git a/src/util/cubeb_audio_stream.cpp b/src/util/cubeb_audio_stream.cpp
index 85579c4..526d168 100644
--- a/src/util/cubeb_audio_stream.cpp
+++ b/src/util/cubeb_audio_stream.cpp
@@ -261,7 +261,7 @@ std::vector<std::pair<std::string, std::string>> AudioStream::GetCubebDriverName
std::vector<std::pair<std::string, std::string>> names;
names.emplace_back(std::string(), TRANSLATE_STR("AudioStream", "Default"));
- const char** cubeb_names = cubeb_get_backend_names();
+ const char*const * cubeb_names = cubeb_get_backend_names();
for (u32 i = 0; cubeb_names[i] != nullptr; i++)
names.emplace_back(cubeb_names[i], cubeb_names[i]);
return names;
+12
View File
@@ -9,6 +9,7 @@
stdenv,
cmake,
ninja,
cubeb,
}:
{
@@ -163,4 +164,15 @@
platforms = lib.platforms.linux;
};
});
cubeb = cubeb.overrideAttrs (old: {
pname = "cubeb-patched-for-duckstation";
patches = (old.patches or [ ]) ++ [
(fetchpatch {
url = "https://github.com/PCSX2/pcsx2/commit/430e31abe4a9e09567cb542f1416b011bb9b6ef9.patch";
stripLen = 2;
hash = "sha256-bbH0c1X3lMeX6hfNKObhcq5xraFpicFV3mODQGYudvQ=";
})
];
});
}
@@ -1,29 +0,0 @@
From 41e750142b44465f3af197b7e2f0d6f54fc48c2d Mon Sep 17 00:00:00 2001
From: OPNA2608 <opna2608@protonmail.com>
Date: Mon, 21 Oct 2024 17:42:24 +0200
Subject: [PATCH] Mark Lua symbols as C symbols
Otherwise linking against our Lua built by a C-compiler fails due to the symbols being resolved as C++ symbols.
---
interpreter.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/interpreter.h b/interpreter.h
index 6c405a1..c471ecb 100644
--- a/interpreter.h
+++ b/interpreter.h
@@ -9,9 +9,11 @@
#define INTERPRETER_H_
// Due to longjmp behaviour, we must build Lua as C++ to avoid UB
+extern "C" {
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
+}
#include "common.h"
#include <unordered_map>
--
2.44.1
+2 -2
View File
@@ -7,14 +7,14 @@
python3Packages.buildPythonApplication rec {
pname = "flexget";
version = "3.15.42";
version = "3.16.1";
pyproject = true;
src = fetchFromGitHub {
owner = "Flexget";
repo = "Flexget";
tag = "v${version}";
hash = "sha256-ON0j5HYNbpHSwTMJgX/xPLjzLZXRDk1YogbhcwugxJE=";
hash = "sha256-IqkzMbWc8GiSo00sMrTugE+G552769WFz+GJbYIPOvs=";
};
pythonRelaxDeps = true;
+12 -12
View File
@@ -1,26 +1,26 @@
{
"version": "1.132.3",
"hash": "sha256-QwQSqWSQ82R5LrbyerAZflDRM2DS+rpA8E6uzxQbs48=",
"version": "1.133.1",
"hash": "sha256-8jqFiVNj494GQInfLDTXm43mO+H9YuxPwIqUJFOwwW0=",
"components": {
"cli": {
"npmDepsHash": "sha256-7CWJEEr/6+Duc90Qww6rhVLXEtxz3hymLcQIzv3YPg0=",
"version": "2.2.65"
"npmDepsHash": "sha256-oDgO8kb/8VqOAGUfG70x2K58j+OsZe+CjurEShiMeCU=",
"version": "2.2.67"
},
"server": {
"npmDepsHash": "sha256-CdE8H8+uAlthHhko5Ir+BETqkZoNzpimgHB2gVJbus8=",
"version": "1.132.3"
"npmDepsHash": "sha256-3beEul7d4OfByrcm4u28Qv7KTdPW8GJ2gnHfQHT9LY0=",
"version": "1.133.1"
},
"web": {
"npmDepsHash": "sha256-3UoNfa2P4bVFQSQTSbRacSxh2UbPokDHqveCHt9bnko=",
"version": "1.132.3"
"npmDepsHash": "sha256-xvSh0NGm7O+lunbHcE7aGv2OzQNVFlHWIeUAQPF218c=",
"version": "1.133.1"
},
"open-api/typescript-sdk": {
"npmDepsHash": "sha256-Rfds2/c8Q6KfWzyztxLcKS40JKOMh04JzMICsDvqMgs=",
"version": "1.132.3"
"npmDepsHash": "sha256-y2jwNlqGUIsr3DfNSpEr8BFdP7e8xvNUhBQ52ypf0YI=",
"version": "1.133.1"
},
"geonames": {
"timestamp": "20250428153140",
"hash": "sha256-RDetKDf/qFRwlB+Jo5ivD6yp1paMWFJeUf1Vft70Kdw="
"timestamp": "20250523191247",
"hash": "sha256-TiqUyYre3gGv3yJMoh6B+RZWu1AiMpgSZSW16NTI+Eg="
}
}
}
+52 -21
View File
@@ -1,5 +1,5 @@
diff --git a/Tools/CMake/Libraries.cmake b/Tools/CMake/Libraries.cmake
index cc4681a..f484013 100644
index a95ef78..6ee84cd 100644
--- a/Tools/CMake/Libraries.cmake
+++ b/Tools/CMake/Libraries.cmake
@@ -67,7 +67,7 @@ if((NOT LibArchive_FOUND) AND (NOT WIN32))
@@ -11,36 +11,67 @@ index cc4681a..f484013 100644
find_package(
Boost 1.78 REQUIRED
COMPONENTS filesystem
@@ -178,10 +178,10 @@ if(LINUX)
set(LIBREADSTAT_INCLUDE_DIRS /app/include)
set(LIBREADSTAT_LIBRARY_DIRS /app/lib)
else()
- set(LIBREADSTAT_INCLUDE_DIRS /usr/local/include /usr/include)
+ set(LIBREADSTAT_INCLUDE_DIRS @readstat@/include /usr/include)
# The last two library paths handle the two most common multiarch cases.
# Other multiarch-compliant paths may come up but should be rare.
- set(LIBREADSTAT_LIBRARY_DIRS /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu)
+ set(LIBREADSTAT_LIBRARY_DIRS @readstat@/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu)
@@ -185,7 +185,7 @@ if(LINUX)
endif()
message(CHECK_START "Looking for libreadstat.so")
- find_file(LIBREADSTAT_LIBRARIES libreadstat.so
+ find_library(LIBREADSTAT_LIBRARIES libreadstat.so
HINTS ${LIBREADSTAT_LIBRARY_DIRS} REQUIRED)
if(EXISTS ${LIBREADSTAT_LIBRARIES})
diff --git a/Tools/CMake/Programs.cmake b/Tools/CMake/Programs.cmake
index dbd089d..ef6857a 100644
index bfdc8dc..af5ac03 100644
--- a/Tools/CMake/Programs.cmake
+++ b/Tools/CMake/Programs.cmake
@@ -39,6 +39,7 @@ endif()
@@ -38,8 +38,9 @@ if(NOT WIN32)
endif()
# ------ Linux Tools/Programs
+#[[
if(LINUX)
-
-if(LINUX)
+# We don't need to check for any dependencies that are used to build R packages
+# since we build them separately
+if(false)
message(CHECK_START "Looking for 'gfortran'")
@@ -81,6 +82,7 @@ if(LINUX)
endif()
find_program(
diff --git a/Tools/CMake/R.cmake b/Tools/CMake/R.cmake
index 9ae27d4..64fd96a 100644
--- a/Tools/CMake/R.cmake
+++ b/Tools/CMake/R.cmake
@@ -841,11 +841,6 @@ message(STATUS "R_CPP_INCLUDES_LIBRARY = ${R_CPP_INCLUDES_LIBRARY}")
configure_file(${PROJECT_SOURCE_DIR}/Modules/setup_renv.R.in
${SCRIPT_DIRECTORY}/setup_renv.R @ONLY)
endif()
+]]#
-execute_process(
- COMMAND_ECHO STDOUT
- #ERROR_QUIET OUTPUT_QUIET
- WORKING_DIRECTORY ${R_HOME_PATH}
- COMMAND ${R_EXECUTABLE} --slave --no-restore --no-save --file=${SCRIPT_DIRECTORY}/setup_renv.R)
# ----------------------
if(APPLE)
# Patch renv
@@ -867,11 +862,6 @@ endif()
configure_file(${PROJECT_SOURCE_DIR}/Modules/setup_rcpp_rinside.R.in
${SCRIPT_DIRECTORY}/setup_rcpp_rinside.R @ONLY)
-execute_process(
- COMMAND_ECHO STDOUT
- #ERROR_QUIET OUTPUT_QUIET
- WORKING_DIRECTORY ${R_HOME_PATH}
- COMMAND ${R_EXECUTABLE} --slave --no-restore --no-save --file=${SCRIPT_DIRECTORY}/setup_rcpp_rinside.R)
if(APPLE)
# Patch RInside and RCpp
@@ -892,8 +882,8 @@ endif()
include(FindRPackagePath)
-find_package_path(RCPP_PATH ${R_CPP_INCLUDES_LIBRARY} "Rcpp")
-find_package_path(RINSIDE_PATH ${R_CPP_INCLUDES_LIBRARY} "RInside")
+find_package_path(RCPP_PATH ${R_LIBRARY_PATH} "Rcpp")
+find_package_path(RINSIDE_PATH ${R_LIBRARY_PATH} "RInside")
set(RENV_PATH "${RENV_LIBRARY}/renv")
+44 -3
View File
@@ -165,6 +165,12 @@ let
src = jasp-src;
sourceRoot = "${jasp-src.name}/Modules/${name}";
propagatedBuildInputs = deps;
# some packages have a .Rprofile that tries to activate renv
# we disable this by removing .Rprofile
postPatch = ''
rm -f .Rprofile
'';
};
in
{
@@ -229,6 +235,20 @@ in
jaspGraphs
jaspSem
];
jaspBFF = buildJaspModule "jaspBFF" [
BFF
jaspBase
jaspGraphs
];
jaspBfpack = buildJaspModule "jaspBfpack" [
BFpack
bain
ggplot2
stringr
coda
jaspBase
jaspGraphs
];
jaspBsts = buildJaspModule "jaspBsts" [
Boom
bsts
@@ -305,6 +325,7 @@ in
conting'
multibridge
ggplot2
interp
jaspBase
jaspGraphs
plyr
@@ -353,6 +374,8 @@ in
ggforce
tidyr
igraph
HDInterval
metafor
];
jaspMachineLearning = buildJaspModule "jaspMachineLearning" [
kknn
@@ -375,6 +398,7 @@ in
jaspBase
jaspGraphs
MASS
mclust
mvnormalTest
neuralnet
network
@@ -385,6 +409,7 @@ in
ROCR
Rtsne
signal
VGAM
];
jaspMetaAnalysis = buildJaspModule "jaspMetaAnalysis" [
dplyr
@@ -406,6 +431,12 @@ in
metamisc
ggmcmc
pema
clubSandwich
CompQuadForm
sp
dfoptim
nleqslv
patchwork
];
jaspMixedModels = buildJaspModule "jaspMixedModels" [
afex
@@ -459,6 +490,8 @@ in
BART
EBMAforecast
imputeTS
scoringRules
scoringutils
];
jaspProcess = buildJaspModule "jaspProcess" [
blavaan
@@ -543,6 +576,7 @@ in
lme4
MASS
psych
mirt
];
jaspRobustTTests = buildJaspModule "jaspRobustTTests" [
RoBTT
@@ -553,16 +587,17 @@ in
jaspSem = buildJaspModule "jaspSem" [
forcats
ggplot2
jaspBase
jaspGraphs
lavaan
cSEM
reshape2
jaspBase
jaspGraphs
semPlot
semTools
stringr
tibble
tidyr
SEMsens
];
jaspSummaryStatistics = buildJaspModule "jaspSummaryStatistics" [
BayesFactor
@@ -579,7 +614,7 @@ in
];
jaspSurvival = buildJaspModule "jaspSurvival" [
survival
survminer
ggsurvfit
jaspBase
jaspGraphs
];
@@ -593,6 +628,12 @@ in
plotrix
plyr
];
jaspTestModule = buildJaspModule "jaspTestModule" [
jaspBase
jaspGraphs
svglite
stringi
];
jaspTimeSeries = buildJaspModule "jaspTimeSeries" [
jaspBase
jaspGraphs
+26 -26
View File
@@ -1,31 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
buildEnv,
linkFarm,
replaceVars,
R,
rPackages,
cmake,
ninja,
pkg-config,
boost,
freexl,
libarchive,
readstat,
qt6,
R,
readstat,
rPackages,
}:
let
version = "0.19.1";
version = "0.19.3";
src = fetchFromGitHub {
owner = "jasp-stats";
repo = "jasp-desktop";
rev = "v${version}";
hash = "sha256-SACGyNVxa6rFjloRQrEVtUgujEEF7WYL8Qhw6ZqLwdQ=";
tag = "v${version}";
fetchSubmodules = true;
hash = "sha256-p489Q3jMQ7UWOCdAGskRF9KSLoRSatUwGVfj0/g4aPo=";
};
moduleSet = import ./modules.nix {
@@ -58,25 +61,19 @@ stdenv.mkDerivation {
inherit version src;
patches = [
# remove unused cmake deps, ensure boost is dynamically linked, patch readstat path
(replaceVars ./cmake.patch {
inherit readstat;
})
(fetchpatch {
name = "fix-qt-6.8-crash.patch";
url = "https://github.com/jasp-stats/jasp-desktop/commit/d96a35d262312f72081ac3f96ae8c2ae7c796b0.patch";
hash = "sha256-KcsFy1ImPTHwDKN5Umfoa9CbtQn7B3FNu/Srr0dEJGA=";
})
# - ensure boost is linked dynamically
# - fix readstat's find logic
# - disable some of the renv logic
# - dont't check for dependencies required for building modules
./cmake.patch
];
cmakeFlags = [
"-DGITHUB_PAT=dummy"
"-DGITHUB_PAT_DEF=dummy"
"-DINSTALL_R_FRAMEWORK=OFF"
"-DLINUX_LOCAL_BUILD=OFF"
"-DINSTALL_R_MODULES=OFF"
"-DCUSTOM_R_PATH=${customREnv}"
(lib.cmakeFeature "GITHUB_PAT" "dummy")
(lib.cmakeFeature "GITHUB_PAT_DEF" "dummy")
(lib.cmakeBool "LINUX_LOCAL_BUILD" false)
(lib.cmakeBool "INSTALL_R_MODULES" false)
(lib.cmakeFeature "CUSTOM_R_PATH" "${customREnv}")
];
nativeBuildInputs = [
@@ -87,10 +84,12 @@ stdenv.mkDerivation {
];
buildInputs = [
customREnv
boost
customREnv
freexl
libarchive
readstat
qt6.qtbase
qt6.qtdeclarative
qt6.qtwebengine
@@ -98,6 +97,7 @@ stdenv.mkDerivation {
qt6.qt5compat
];
# needed so that JASPEngine can find libRInside.so
env.NIX_LDFLAGS = "-L${rPackages.RInside}/library/RInside/lib";
postInstall = ''
@@ -107,7 +107,7 @@ stdenv.mkDerivation {
# Remove flatpak proxy script
rm $out/bin/org.jaspstats.JASP
substituteInPlace $out/share/applications/org.jaspstats.JASP.desktop \
--replace-fail "Exec=org.jaspstats.JASP" "Exec=JASP"
--replace-fail "Exec=org.jaspstats.JASP" "Exec=JASP"
# symlink modules from the store
ln -s ${modulesDir} $out/Modules
@@ -1,14 +0,0 @@
diff --git a/setup.py b/setup.py
index 9351fc9..75dfb2c 100644
--- a/setup.py
+++ b/setup.py
@@ -66,9 +66,6 @@
"solidpython>=1.1.2",
"commentjson>=0.9"
],
- setup_requires=[
- "versioneer"
- ],
extras_require={
"dev": ["pytest"],
},
+15 -13
View File
@@ -12,18 +12,19 @@
}:
python3Packages.buildPythonApplication rec {
pname = "monophony";
version = "2.15.0";
pyproject = false;
version = "3.3.3";
pyproject = true;
sourceRoot = "${src.name}/source";
src = fetchFromGitLab {
owner = "zehkira";
repo = "monophony";
rev = "v${version}";
hash = "sha256-fC+XXOGBpG5pIQW1tCNtQaptBCyLM+YGgsZLjWrMoDA=";
hash = "sha256-ET0cygX/r/YXGWpPU01FnBoLRtjo1ddXEiVIva71aE8=";
};
pythonPath = with python3Packages; [
sourceRoot = "${src.name}/source";
dependencies = with python3Packages; [
mpris-server
pygobject3
ytmusicapi
@@ -52,10 +53,11 @@ python3Packages.buildPythonApplication rec {
gstreamer
]);
# Makefile only contains `install`
dontBuild = true;
pythonRelaxDeps = [ "mpris_server" ];
installFlags = [ "prefix=$(out)" ];
postInstall = ''
make install prefix=$out
'';
dontWrapGApps = true;
@@ -68,13 +70,13 @@ python3Packages.buildPythonApplication rec {
passthru.updateScript = nix-update-script { };
meta = with lib; {
homepage = "https://gitlab.com/zehkira/monophony";
meta = {
description = "Linux app for streaming music from YouTube";
longDescription = "Monophony is a free and open source Linux app for streaming music from YouTube. It has no ads and does not require an account.";
license = licenses.agpl3Plus;
homepage = "https://gitlab.com/zehkira/monophony";
license = lib.licenses.agpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ quadradical ];
mainProgram = "monophony";
platforms = platforms.linux;
maintainers = with maintainers; [ quadradical ];
};
}
+2 -2
View File
@@ -117,13 +117,13 @@ in
goBuild (finalAttrs: {
pname = "ollama";
# don't forget to invalidate all hashes each update
version = "0.7.0";
version = "0.7.1";
src = fetchFromGitHub {
owner = "ollama";
repo = "ollama";
tag = "v${finalAttrs.version}";
hash = "sha256-rkSWMGMKzs7V6jmxS3fG611Zahsyzz5kDI8L4HxQSfQ=";
hash = "sha256-ee2MkvdVDQaSFJDDuXEwedqOB2DUl3MIfp5tRxqbL8A=";
fetchSubmodules = true;
};
+19 -8
View File
@@ -25,6 +25,7 @@
wayland,
zip,
zstd,
fetchpatch,
}:
let
@@ -36,6 +37,16 @@ let
qtwayland
wrapQtAppsHook
;
cubeb' = cubeb.overrideAttrs (old: {
patches = (old.patches or [ ]) ++ [
(fetchpatch {
url = "https://github.com/PCSX2/pcsx2/commit/430e31abe4a9e09567cb542f1416b011bb9b6ef9.patch";
stripLen = 2;
hash = "sha256-bbH0c1X3lMeX6hfNKObhcq5xraFpicFV3mODQGYudvQ=";
})
];
});
in
llvmPackages.stdenv.mkDerivation (finalAttrs: {
inherit (sources.pcsx2) pname version src;
@@ -43,6 +54,8 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
patches = [
# Remove PCSX2_GIT_REV
./0000-define-rev.patch
./remove-cubeb-vendor.patch
];
cmakeFlags = [
@@ -80,7 +93,8 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
vulkan-headers
wayland
zstd
] ++ cubeb.passthru.backendLibs;
cubeb'
];
strictDeps = true;
@@ -94,13 +108,10 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
qtWrapperArgs =
let
libs = lib.makeLibraryPath (
[
vulkan-loader
shaderc
]
++ cubeb.passthru.backendLibs
);
libs = lib.makeLibraryPath ([
vulkan-loader
shaderc
]);
in
[ "--prefix LD_LIBRARY_PATH : ${libs}" ];
@@ -0,0 +1,29 @@
diff --git a/cmake/SearchForStuff.cmake b/cmake/SearchForStuff.cmake
index ff66f9c..e177c90 100644
--- a/cmake/SearchForStuff.cmake
+++ b/cmake/SearchForStuff.cmake
@@ -100,9 +100,8 @@ if(USE_VULKAN)
add_subdirectory(3rdparty/vulkan EXCLUDE_FROM_ALL)
endif()
-add_subdirectory(3rdparty/cubeb EXCLUDE_FROM_ALL)
-disable_compiler_warnings_for_target(cubeb)
-disable_compiler_warnings_for_target(speex)
+find_package(cubeb REQUIRED GLOBAL)
+add_library(cubeb ALIAS cubeb::cubeb)
# Find the Qt components that we need.
find_package(Qt6 6.7.2 COMPONENTS CoreTools Core GuiTools Gui WidgetsTools Widgets LinguistTools REQUIRED)
diff --git a/pcsx2/Host/CubebAudioStream.cpp b/pcsx2/Host/CubebAudioStream.cpp
index 4cd9993..604635d 100644
--- a/pcsx2/Host/CubebAudioStream.cpp
+++ b/pcsx2/Host/CubebAudioStream.cpp
@@ -288,7 +288,7 @@ std::vector<std::pair<std::string, std::string>> AudioStream::GetCubebDriverName
std::vector<std::pair<std::string, std::string>> names;
names.emplace_back(std::string(), TRANSLATE_STR("AudioStream", "Default"));
- const char** cubeb_names = cubeb_get_backend_names();
+ const char* const* cubeb_names = cubeb_get_backend_names();
for (u32 i = 0; cubeb_names[i] != nullptr; i++)
names.emplace_back(cubeb_names[i], cubeb_names[i]);
+2 -2
View File
@@ -13,12 +13,12 @@ let
{
aarch64-darwin = {
arch = "arm64";
sha256 = "sha256-uhhrJk/WtM4tKsrBAn1IjHx0OeR/SpdOzy2XhoUP4sY=";
sha256 = "sha256-w1zu+sK8JqBMGBaKPYGJqddEWYWCv1aJRM+Q91l5dPw=";
};
x86_64-darwin = {
arch = "64";
sha256 = "sha256-NYxcZoQYDyn85RkUz57b5yhzpeAK5xyyJF/7L2+3tt4=";
sha256 = "sha256-dlRK6NpDskuIW0nuf9mWx/xolOnGmH77ny+2ADaD7QU=";
};
}
.${stdenvNoCC.hostPlatform.system}
+2 -2
View File
@@ -56,12 +56,12 @@ let
{
aarch64-linux = {
arch = "arm64";
sha256 = "sha256-/Qfd/xn+FwYLPSWssP5JFfjMdICz6HDg30edl/Fme5A=";
sha256 = "sha256-XtY5SmYoU2OhX69jRb8uSGwx5vPiSfgmF2jY7mJIrTY=";
};
x86_64-linux = {
arch = "64";
sha256 = "sha256-BbTYT0GHU+BmWFXG2TU8PL90eTpLcyLgnwSw9YyWT0g=";
sha256 = "sha256-eEgUk3VnahmFua8UrNMUi2lG0UujiuDTs64XqaAkYe8=";
};
}
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+4 -1
View File
@@ -6,9 +6,12 @@
let
pname = "postman";
version = "11.44.0";
version = "11.46.6";
meta = with lib; {
homepage = "https://www.getpostman.com";
changelog = "https://www.postman.com/release-notes/postman-app/#${
replaceStrings [ "." ] [ "-" ] version
}";
description = "API Development Environment";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.postman;
+1 -5
View File
@@ -40,17 +40,13 @@ stdenv.mkDerivation (finalAttrs: {
curl
ffmpeg
cubeb
] ++ cubeb.passthru.backendLibs;
];
# Correct qml import path
postInstall = ''
mv $out/lib/qt6 $out/lib/qt-6
'';
qtWrapperArgs = [
"--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath cubeb.passthru.backendLibs}"
];
meta = {
description = "Unofficial Qt client for netease cloud music";
homepage = "https://github.com/hypengw/Qcm";
@@ -0,0 +1,46 @@
From 5af2b630da7a6a450ec6bc4f07fc7ad9a825361d Mon Sep 17 00:00:00 2001
From: Marcin Serwin <marcin@serwin.dev>
Date: Sat, 24 May 2025 18:51:09 +0200
Subject: [PATCH] cmake: add option to use system cubeb
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
---
3rdparty/CMakeLists.txt | 9 ++++++++-
CMakeLists.txt | 1 +
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt
index 044fd464e..6c49a889b 100644
--- a/3rdparty/CMakeLists.txt
+++ b/3rdparty/CMakeLists.txt
@@ -131,7 +131,14 @@ add_subdirectory(stblib)
add_subdirectory(discord-rpc)
# Cubeb
-add_subdirectory(cubeb EXCLUDE_FROM_ALL)
+if(USE_SYSTEM_CUBEB)
+ find_package(cubeb REQUIRED GLOBAL)
+ message(STATUS "Using system cubeb version '${cubeb_VERSION}'")
+ add_library(3rdparty::cubeb ALIAS cubeb::cubeb)
+else()
+ message(STATUS "Using static cubeb from 3rdparty")
+ add_subdirectory(cubeb EXCLUDE_FROM_ALL)
+endif()
# SoundTouch
add_subdirectory(SoundTouch EXCLUDE_FROM_ALL)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9d2edd836..39aa150c2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,6 +31,7 @@ option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
option(USE_SYSTEM_OPENAL "Prefer system OpenAL instead of the prebuild one" ON)
option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
option(USE_SYSTEM_OPENCV "Prefer system OpenCV instead of the builtin one" ON)
+option(USE_SYSTEM_CUBEB "Prefer system cubeb instead of the builtin one" OFF)
option(HAS_MEMORY_BREAKPOINTS "Add support for memory breakpoints to the interpreter" OFF)
option(USE_LTO "Use LTO for building" ON)
option(BUILD_RPCS3_TESTS "Build RPCS3 unit tests." OFF)
--
2.49.0
+5 -1
View File
@@ -63,6 +63,9 @@ stdenv.mkDerivation {
patches = [
# Modified from https://github.com/RPCS3/rpcs3/pull/17009; doesn't apply cleanly due to intermediate commits
./fix-qt6.9-compilation.patch
# https://github.com/RPCS3/rpcs3/pull/17246
./0001-cmake-add-option-to-use-system-cubeb.patch
];
passthru.updateScript = ./update.sh;
@@ -89,6 +92,7 @@ stdenv.mkDerivation {
(lib.cmakeBool "USE_SYSTEM_FLATBUFFERS" true)
(lib.cmakeBool "USE_SYSTEM_SDL" true)
(lib.cmakeBool "USE_SYSTEM_OPENCV" true)
(lib.cmakeBool "USE_SYSTEM_CUBEB" true)
(lib.cmakeBool "USE_SDL" true)
(lib.cmakeBool "WITH_LLVM" true)
(lib.cmakeBool "BUILD_LLVM" false)
@@ -130,8 +134,8 @@ stdenv.mkDerivation {
llvm_18
libSM
opencv
cubeb
]
++ cubeb.passthru.backendLibs
++ lib.optional faudioSupport faudio
++ lib.optionals waylandSupport [
wayland
+14 -1
View File
@@ -33,6 +33,11 @@
wayland-scanner,
xorg,
zenity,
# for passthru.tests
SDL_compat,
sdl2-compat,
sdl3-image,
sdl3-ttf,
alsaSupport ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAndroid,
dbusSupport ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAndroid,
drmSupport ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAndroid,
@@ -204,7 +209,15 @@ stdenv.mkDerivation (finalAttrs: {
});
tests =
{
SDL_compat.tests
// sdl2-compat.tests
// {
inherit
SDL_compat
sdl2-compat
sdl3-image
sdl3-ttf
;
pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
inherit (finalAttrs.passthru) debug-text-example;
}
+8 -7
View File
@@ -7,7 +7,6 @@
webrtc,
pkg-config,
cubeb,
libpulseaudio,
}:
let
cubeb' = cubeb.override {
@@ -15,7 +14,7 @@ let
pulseSupport = true;
jackSupport = false;
sndioSupport = false;
buildSharedLibs = false;
enableShared = false;
};
in
rustPlatform.buildRustPackage (finalAttrs: {
@@ -49,11 +48,13 @@ rustPlatform.buildRustPackage (finalAttrs: {
cmake
pkg-config
];
buildInputs = [
webrtc
cubeb'
libpulseaudio
];
buildInputs =
[
webrtc
cubeb'
]
# Workaround for https://github.com/NixOS/nixpkgs/pull/394607
++ cubeb'.buildInputs;
meta = {
homepage = "https://github.com/signalapp/ringrtc";
+12 -3
View File
@@ -2,9 +2,11 @@
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
writableTmpDirAsHomeHook,
}:
let
version = "1.2.1";
version = "1.3.1";
tag = "v${version}";
in
buildGoModule {
@@ -15,16 +17,23 @@ buildGoModule {
owner = "yorukot";
repo = "superfile";
inherit tag;
hash = "sha256-yClDrDpt6QUWeAtWkG0tkmFqnaviRixz6Kez0q4cRuk=";
hash = "sha256-GlPePeINZ6KL3RRqfQQFYsEdd+70bRJcMqMVnUmgo/I=";
};
vendorHash = "sha256-STiuaNcmoviHBXGcSPPs39sICsks3Z8I3ANdnlUqA/k=";
vendorHash = "sha256-ArsB0B67ymuzxTXfaUuWiRrgVCrZhmGMbJUl2u+thUw=";
ldflags = [
"-s"
"-w"
];
nativeCheckInputs = [ writableTmpDirAsHomeHook ];
# Upstream notes that this could be flakey, and it consistently fails for me.
checkFlags = [ "-skip=^TestReturnDirElement/Sort_by_Date$" ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Pretty fancy and modern terminal file manager";
homepage = "https://github.com/yorukot/superfile";
+2 -2
View File
@@ -62,7 +62,7 @@ let
stdenv.cc.cc
stdenv.cc.libc
];
version = "1.0.30";
version = "1.0.31";
in
stdenv.mkDerivation {
pname = "tana";
@@ -70,7 +70,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://github.com/tanainc/tana-desktop-releases/releases/download/v${version}/tana_${version}_amd64.deb";
hash = "sha256-GKRfiVKUrMr6d4ZA/FAfHnyCzyYnIwhrAwKS7HvJU1U=";
hash = "sha256-+KJ2peQWb378h6nWmoj5J4zAmSi4AHvR6fqrjRC/c8w=";
};
nativeBuildInputs = [
@@ -0,0 +1,33 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "task-master-ai";
version = "0.15.0";
src = fetchFromGitHub {
owner = "eyaltoledano";
repo = "claude-task-master";
tag = "v${finalAttrs.version}";
hash = "sha256-cCfyQ9xU8axuZyTTVsrYVuic6DPHnAc4YX7aKj2MmSE=";
};
npmDepsHash = "sha256-UNGJ64E12ppo37gJBDNpyRFYfNEJMH5mRnK3HyWcy8E=";
dontNpmBuild = true;
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Node.js agentic AI workflow orchestrator";
homepage = "https://task-master.dev";
changelog = "https://github.com/eyaltoledano/claude-task-master/blob/${finalAttrs.src.tag}/CHANGELOG.md";
license = licenses.mit;
mainProgram = "task-master-ai";
maintainers = [ maintainers.repparw ];
platforms = platforms.all;
};
})
-28
View File
@@ -1,28 +0,0 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "tcp-cutter";
version = "1.04";
src = fetchurl {
url = "http://www.digitage.co.uk/digitage/files/cutter/${pname}-${version}.tgz";
sha256 = "100iy31a3njif6vh9gfsqrm14hac05rrflla275gd4rkxdlnqcqv";
};
installPhase = ''
install -D -m 0755 cutter $out/bin/tcp-cutter
'';
meta = with lib; {
description = "TCP/IP Connection cutting on Linux Firewalls and Routers";
homepage = "http://www.digitage.co.uk/digitage/software/linux-security/cutter";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = [ maintainers.offline ];
mainProgram = "tcp-cutter";
};
}
@@ -1,19 +0,0 @@
--- a/src/gui/utility/Options.cpp
+++ b/src/gui/utility/Options.cpp
@@ -13,15 +13,7 @@
QSettings* opts = nullptr;
bool Options::isStandalone() {
-#ifdef VPKEDIT_BUILD_FOR_STRATA_SOURCE
- // Standalone mode is only used to check if we should write a physical config file.
- // If we're building for a Strata Source game, we should just use the system registry.
- // No need to pollute the bin folder!
- return false;
-#else
- QFileInfo nonportable(QApplication::applicationDirPath() + "/.nonportable");
- return !(nonportable.exists() && nonportable.isFile());
-#endif
+ return true;
}
void Options::setupOptions(QSettings& options) {
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "webdav";
version = "5.7.5";
version = "5.8.0";
src = fetchFromGitHub {
owner = "hacdias";
repo = "webdav";
tag = "v${version}";
hash = "sha256-iXU3ePALas/Z4caB1uhc5yW88zV/4iqv7qpOw4ZgZ3g=";
hash = "sha256-6G9NlQVYFDLuIxKJXq0Rcixx1AiDhTHUekumMNqXi44=";
};
vendorHash = "sha256-B78O13FPpkcuE808c2hLiIDPQdS5qlaw1dWLc9T7hvM=";
+2 -2
View File
@@ -12,13 +12,13 @@
stdenv.mkDerivation rec {
pname = "xv";
version = "6.0.2";
version = "6.0.3";
src = fetchFromGitHub {
owner = "jasper-software";
repo = "xv";
rev = "v${version}";
sha256 = "sha256-abmMrAxgccECsOi0eIy9/y0haPkUgbOl9wCgISLy5Rs=";
sha256 = "sha256-508P88Kac1W0xwjNblOjkYJri36ReZkjzrNzrrSBZjg=";
};
nativeBuildInputs = [ cmake ];
-109
View File
@@ -1,109 +0,0 @@
From 95ea43f1969d9f9ee50a701023b5f90cf36d3967 Mon Sep 17 00:00:00 2001
From: tranzystorekk <tranzystorek.io@protonmail.com>
Date: Thu, 3 Apr 2025 17:36:02 +0200
Subject: [PATCH] fix(deps): fix --locked build on rust 1.86
---
Cargo.lock | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 4b7bebbc67..83298ba165 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4084,7 +4084,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c17a3bd88f2155da63a1f2fcb8a56377a24f0b6dfed12733bb5f544e86f690c5"
dependencies = [
"leb128",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
]
[[package]]
@@ -4099,9 +4099,9 @@ dependencies = [
[[package]]
name = "wasmparser"
-version = "0.221.2"
+version = "0.221.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9845c470a2e10b61dd42c385839cdd6496363ed63b5c9e420b5488b77bd22083"
+checksum = "d06bfa36ab3ac2be0dee563380147a5b81ba10dd8885d7fbbc9eb574be67d185"
dependencies = [
"bitflags 2.5.0",
"hashbrown 0.15.2",
@@ -4129,7 +4129,7 @@ checksum = "a80742ff1b9e6d8c231ac7c7247782c6fc5bce503af760bca071811e5fc9ee56"
dependencies = [
"anyhow",
"termcolor",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
]
[[package]]
@@ -4172,7 +4172,7 @@ dependencies = [
"target-lexicon",
"trait-variant",
"wasm-encoder 0.221.2",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
"wasmtime-asm-macros",
"wasmtime-cache",
"wasmtime-component-macro",
@@ -4260,7 +4260,7 @@ dependencies = [
"smallvec",
"target-lexicon",
"thiserror 1.0.61",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
"wasmtime-environ",
"wasmtime-versioned-export-macros",
]
@@ -4287,7 +4287,7 @@ dependencies = [
"smallvec",
"target-lexicon",
"wasm-encoder 0.221.2",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
"wasmprinter",
"wasmtime-component-util",
]
@@ -4398,7 +4398,7 @@ dependencies = [
"gimli 0.31.1",
"object 0.36.7",
"target-lexicon",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
"wasmtime-cranelift",
"wasmtime-environ",
"winch-codegen",
@@ -4635,7 +4635,7 @@ dependencies = [
"smallvec",
"target-lexicon",
"thiserror 1.0.61",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
"wasmtime-cranelift",
"wasmtime-environ",
]
@@ -4893,9 +4893,9 @@ dependencies = [
[[package]]
name = "wit-parser"
-version = "0.221.2"
+version = "0.221.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbe1538eea6ea5ddbe5defd0dc82539ad7ba751e1631e9185d24a931f0a5adc8"
+checksum = "896112579ed56b4a538b07a3d16e562d101ff6265c46b515ce0c701eef16b2ac"
dependencies = [
"anyhow",
"id-arena",
@@ -4906,7 +4906,7 @@ dependencies = [
"serde_derive",
"serde_json",
"unicode-xid",
- "wasmparser 0.221.2",
+ "wasmparser 0.221.3",
]
[[package]]
@@ -40,7 +40,7 @@ lib.makeScope newScope (self: {
name = "${pname}-${version}";
src = self.fetchegg (eggData // { inherit pname; });
buildInputs = map (x: eggself.${x}) dependencies;
meta.homepage = "https://code.call-cc.org/cgi-bin/gitweb.cgi?p=eggs-5-latest.git;a=tree;f=${pname}/${version}";
meta.homepage = "https://wiki.call-cc.org/eggref/5/${pname}";
meta.description = synopsis;
meta.license =
(
@@ -1,200 +0,0 @@
From 6204ab9f989be3841c8c47e1e2cfe6a658fe16d5 Mon Sep 17 00:00:00 2001
From: Seth Michael Larson <seth@python.org>
Date: Tue, 28 Jan 2025 14:09:00 -0600
Subject: [PATCH 1/4] gh-105704: Disallow square brackets ( and ) in domain
names for parsed URLs
---
Lib/test/test_urlparse.py | 14 +++++++++++++
Lib/urllib/parse.py | 20 +++++++++++++++++--
...-01-28-14-08-03.gh-issue-105704.EnhHxu.rst | 4 ++++
3 files changed, 36 insertions(+), 2 deletions(-)
create mode 100644 Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
index 4516bdea6adb19..0f15a0998ff2ea 100644
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -1412,6 +1412,20 @@ def test_invalid_bracketed_hosts(self):
self.assertRaises(ValueError, urllib.parse.urlsplit, 'Scheme://user@[0439:23af::2309::fae7:1234]/Path?Query')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'Scheme://user@[0439:23af:2309::fae7:1234:2342:438e:192.0.2.146]/Path?Query')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'Scheme://user@]v6a.ip[/Path')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[v6a.ip]')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[v6a.ip].suffix')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[v6a.ip]/')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[v6a.ip].suffix/')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[v6a.ip]?')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[v6a.ip].suffix?')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]/')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix/')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]?')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix?')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://user@prefix.[v6a.ip]')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://user@[v6a.ip].suffix')
def test_splitting_bracketed_hosts(self):
p1 = urllib.parse.urlsplit('scheme://user@[v6a.ip]/path?query')
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
index c412c729852272..9d51f4c6812b57 100644
--- a/Lib/urllib/parse.py
+++ b/Lib/urllib/parse.py
@@ -439,6 +439,23 @@ def _checknetloc(netloc):
raise ValueError("netloc '" + netloc + "' contains invalid " +
"characters under NFKC normalization")
+def _check_bracketed_netloc(netloc):
+ # Note that this function must mirror the splitting
+ # done in NetlocResultMixins._hostinfo().
+ hostname_and_port = netloc.rpartition('@')[2]
+ before_bracket, have_open_br, bracketed = hostname_and_port.partition('[')
+ if have_open_br:
+ # No data is allowed before a bracket.
+ if before_bracket:
+ raise ValueError("Invalid IPv6 URL")
+ hostname, _, port = bracketed.partition(']')
+ # No data is allowed after the bracket but before the port delimiter.
+ if port and not port.startswith(":"):
+ raise ValueError("Invalid IPv6 URL")
+ else:
+ hostname, _, port = hostname_and_port.partition(':')
+ _check_bracketed_host(hostname)
+
# Valid bracketed hosts are defined in
# https://www.rfc-editor.org/rfc/rfc3986#page-49 and https://url.spec.whatwg.org/
def _check_bracketed_host(hostname):
@@ -505,8 +522,7 @@ def _urlsplit(url, scheme=None, allow_fragments=True):
(']' in netloc and '[' not in netloc)):
raise ValueError("Invalid IPv6 URL")
if '[' in netloc and ']' in netloc:
- bracketed_host = netloc.partition('[')[2].partition(']')[0]
- _check_bracketed_host(bracketed_host)
+ _check_bracketed_netloc(netloc)
if allow_fragments and '#' in url:
url, fragment = url.split('#', 1)
if '?' in url:
diff --git a/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst b/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
new file mode 100644
index 00000000000000..aaeac71678de87
--- /dev/null
+++ b/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
@@ -0,0 +1,4 @@
+When using ``urllib.parse.urlsplit()`` and ``urlparse()`` host parsing would
+not reject domain names containing square brackets (``[`` and ``]``). Square
+brackets are only valid for IPv6 and IPvFuture hosts according to `RFC 3986
+Section 3.2.2 <https://www.rfc-editor.org/rfc/rfc3986#section-3.2.2>`__.
From 3ab35e8d890e2c5d4e6b0c0299f94775a3ded9ae Mon Sep 17 00:00:00 2001
From: Seth Michael Larson <sethmichaellarson@gmail.com>
Date: Thu, 30 Jan 2025 09:50:14 -0600
Subject: [PATCH 2/4] Use Sphinx references
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
---
.../Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst b/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
index aaeac71678de87..fb8674f558db59 100644
--- a/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
+++ b/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
@@ -1,4 +1,4 @@
-When using ``urllib.parse.urlsplit()`` and ``urlparse()`` host parsing would
+When using :func:`urllib.parse.urlsplit()` and :func:`urllib.parse.urlparse()` host parsing would
not reject domain names containing square brackets (``[`` and ``]``). Square
brackets are only valid for IPv6 and IPvFuture hosts according to `RFC 3986
Section 3.2.2 <https://www.rfc-editor.org/rfc/rfc3986#section-3.2.2>`__.
From ebf92bb4d323d41778e5de6df177b26f18ecf7f9 Mon Sep 17 00:00:00 2001
From: Seth Michael Larson <seth@python.org>
Date: Thu, 30 Jan 2025 11:10:35 -0600
Subject: [PATCH 3/4] Add mismatched bracket test cases, fix news format
---
Lib/test/test_urlparse.py | 10 ++++++++++
.../2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst | 8 ++++----
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
index 0f15a0998ff2ea..f8ce61b2b49621 100644
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -1426,6 +1426,16 @@ def test_invalid_bracketed_hosts(self):
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix?')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://user@prefix.[v6a.ip]')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://user@[v6a.ip].suffix')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[v6a.ip')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://v6a.ip]')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://]v6a.ip[')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://]v6a.ip')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://v6a.ip[')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[v6a.ip')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://v6a.ip].suffix')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix]v6a.ip[suffix')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix]v6a.ip')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://v6a.ip[suffix')
def test_splitting_bracketed_hosts(self):
p1 = urllib.parse.urlsplit('scheme://user@[v6a.ip]/path?query')
diff --git a/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst b/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
index fb8674f558db59..bff1bc6b0d609c 100644
--- a/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
+++ b/Misc/NEWS.d/next/Security/2025-01-28-14-08-03.gh-issue-105704.EnhHxu.rst
@@ -1,4 +1,4 @@
-When using :func:`urllib.parse.urlsplit()` and :func:`urllib.parse.urlparse()` host parsing would
-not reject domain names containing square brackets (``[`` and ``]``). Square
-brackets are only valid for IPv6 and IPvFuture hosts according to `RFC 3986
-Section 3.2.2 <https://www.rfc-editor.org/rfc/rfc3986#section-3.2.2>`__.
+When using :func:`urllib.parse.urlsplit` and :func:`urllib.parse.urlparse` host
+parsing would not reject domain names containing square brackets (``[`` and
+``]``). Square brackets are only valid for IPv6 and IPvFuture hosts according to
+`RFC 3986 Section 3.2.2 <https://www.rfc-editor.org/rfc/rfc3986#section-3.2.2>`__.
From 2817b2e29c8b28a24f9eb97abce1e1b60b1162fa Mon Sep 17 00:00:00 2001
From: Seth Michael Larson <seth@python.org>
Date: Thu, 30 Jan 2025 13:01:19 -0600
Subject: [PATCH 4/4] Add more test coverage for ports
---
Lib/test/test_urlparse.py | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
index f8ce61b2b49621..b51cc006b73280 100644
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -1424,6 +1424,15 @@ def test_invalid_bracketed_hosts(self):
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix/')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]?')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix?')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]:a')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix:a')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]:a1')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix:a1')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]:1a')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix:1a')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]:')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[::1].suffix:/')
+ self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix.[::1]:?')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://user@prefix.[v6a.ip]')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://user@[v6a.ip].suffix')
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://[v6a.ip')
@@ -1438,14 +1447,16 @@ def test_invalid_bracketed_hosts(self):
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://v6a.ip[suffix')
def test_splitting_bracketed_hosts(self):
- p1 = urllib.parse.urlsplit('scheme://user@[v6a.ip]/path?query')
+ p1 = urllib.parse.urlsplit('scheme://user@[v6a.ip]:1234/path?query')
self.assertEqual(p1.hostname, 'v6a.ip')
self.assertEqual(p1.username, 'user')
self.assertEqual(p1.path, '/path')
+ self.assertEqual(p1.port, 1234)
p2 = urllib.parse.urlsplit('scheme://user@[0439:23af:2309::fae7%test]/path?query')
self.assertEqual(p2.hostname, '0439:23af:2309::fae7%test')
self.assertEqual(p2.username, 'user')
self.assertEqual(p2.path, '/path')
+ self.assertIs(p2.port, None)
p3 = urllib.parse.urlsplit('scheme://user@[0439:23af:2309::fae7:1234:192.0.2.146%test]/path?query')
self.assertEqual(p3.hostname, '0439:23af:2309::fae7:1234:192.0.2.146%test')
self.assertEqual(p3.username, 'user')
@@ -49,7 +49,7 @@ in
stdenv.mkDerivation rec {
pname = "libinput";
version = "1.27.1";
version = "1.28.1";
outputs = [
"bin"
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
owner = "libinput";
repo = "libinput";
rev = version;
hash = "sha256-3U+2a/uSoSj1t34uz7xO2QQtJExygKOhBL7BUGP0Fbo=";
hash = "sha256-kte5BzGEz7taW/ccnxmkJjXn3FeikzuD6Hm10l+X7c0=";
};
patches = [
@@ -1,143 +0,0 @@
From c1d1eed00099af8d858536b659864b7ccea41974 Mon Sep 17 00:00:00 2001
From: Paul Howarth <paul@city-fan.org>
Date: Sat, 13 Mar 2021 17:46:57 +0000
Subject: [PATCH 1/2] Update for Getopt-Long-Descriptive 0.106
GLD is now outputting text with wrapping depending on the terminal
width. This update is enough to get the tests to pass when running
within "expect", which provides a PTY. It's almost certainly not
enough for general use.
---
t/104_override_usage.t | 8 ++++++++
t/107_no_auto_help.t | 2 +-
t/109_help_flag.t | 2 +-
t/110_sort_usage_by_attr_order.t | 12 ++++++++++++
4 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/t/104_override_usage.t b/t/104_override_usage.t
index bc45029..6641540 100644
--- a/t/104_override_usage.t
+++ b/t/104_override_usage.t
@@ -61,9 +61,17 @@ use Test::Exception;
\t--foo INT A foo
}
:
+ $Getopt::Long::Descriptive::VERSION < 0.106 ?
qq{usage: 104_override_usage.t [-?] [long options...]
\t-? --[no-]usage --[no-]help Prints this usage information.
\t--foo INT A foo
+}
+ :
+ qq{usage: 104_override_usage.t [-?] [long options...]
+\t--[no-]help (or -?) Prints
+\t this usage information.
+\t aka --usage
+\t--foo INT A foo
}
];
diff --git a/t/107_no_auto_help.t b/t/107_no_auto_help.t
index 27f87f5..103df43 100644
--- a/t/107_no_auto_help.t
+++ b/t/107_no_auto_help.t
@@ -60,7 +60,7 @@ END {
warning_like {
throws_ok { Class->new_with_options }
#usage: 107_no_auto_help.t [-?] [long options...]
- qr/^usage: [\d\w]+\Q.t [-?] [long options...]\E.\s+\Q-? --\E(\[no-\])?usage --(\[no-\])?\Qhelp\E\s+\QPrints this usage information.\E.\s+--configfile/ms,
+ qr/^usage: [\d\w]+\Q.t [-?] [long options...]\E.\s+(\Q-? --\E(\[no-\])?usage )?--(\[no-\])?\Qhelp\E(\Q (or -?)\E)?\s+\QPrints this usage information.\E.(\s+\Qaka --usage\E.)?\s+--configfile/ms,
'usage information looks good';
}
qr/^Specified configfile \'this_value_unimportant\' does not exist, is empty, or is not readable$/,
diff --git a/t/109_help_flag.t b/t/109_help_flag.t
index 8c658e2..58dbca6 100644
--- a/t/109_help_flag.t
+++ b/t/109_help_flag.t
@@ -40,7 +40,7 @@ foreach my $args ( ['--help'], ['--usage'], ['--?'], ['-?'] )
local @ARGV = @$args;
throws_ok { MyClass->new_with_options() }
- qr/^usage: (?:[\d\w]+)\Q.t [-?] [long options...]\E.^\t\Q-? --\E(\[no-\])?usage --(\[no-\])?help\s+\QPrints this usage information.\E$/ms,
+ qr/^usage: (?:[\d\w]+)\Q.t [-?] [long options...]\E.^\s+(\Q-? --\E(\[no-\])?usage )?--(\[no-\])?help(\Q (or -?)\E)?\s+Prints ?(.\s+)?\Qthis usage information.\E.(\s+\Qaka --usage\E.)?$/ms,
'Help request detected; usage information properly printed';
}
diff --git a/t/110_sort_usage_by_attr_order.t b/t/110_sort_usage_by_attr_order.t
index e7dd177..7ec0c99 100644
--- a/t/110_sort_usage_by_attr_order.t
+++ b/t/110_sort_usage_by_attr_order.t
@@ -64,6 +64,18 @@ usage: 110_sort_usage_by_attr_order.t [-?] [long options...]
--baz STR Documentation for "baz"
USAGE
}
+if ( $Getopt::Long::Descriptive::VERSION >= 0.106 )
+{
+$expected = <<'USAGE';
+usage: 110_sort_usage_by_attr_order.t [-?] [long options...]
+ --[no-]help (or -?) Prints
+ this usage information.
+ aka --usage
+ --foo STR Documentation for "foo"
+ --bar STR Documentation for "bar"
+ --baz STR Documentation for "baz"
+USAGE
+}
$expected =~ s/^[ ]{4}/\t/xmsg;
is($obj->usage->text, $expected, 'Usage text has nicely sorted options');
From 45ae6aaabc5413e985860fbfcc8da3bdc929a054 Mon Sep 17 00:00:00 2001
From: Paul Howarth <paul@city-fan.org>
Date: Mon, 15 Mar 2021 10:43:14 +0000
Subject: [PATCH 2/2] Update for Getopt-Long-Descriptive 0.107
GLD's use of Term::ReadKey has been reverted, so this update should now
work reliably. Use with GLD 0.106 is not supported.
---
t/104_override_usage.t | 6 +++---
t/110_sort_usage_by_attr_order.t | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/t/104_override_usage.t b/t/104_override_usage.t
index 6641540..f7c6a31 100644
--- a/t/104_override_usage.t
+++ b/t/104_override_usage.t
@@ -61,15 +61,15 @@ use Test::Exception;
\t--foo INT A foo
}
:
- $Getopt::Long::Descriptive::VERSION < 0.106 ?
+ # Note: Getopt::Long::Descriptive 0.106 not supported
+ $Getopt::Long::Descriptive::VERSION < 0.107 ?
qq{usage: 104_override_usage.t [-?] [long options...]
\t-? --[no-]usage --[no-]help Prints this usage information.
\t--foo INT A foo
}
:
qq{usage: 104_override_usage.t [-?] [long options...]
-\t--[no-]help (or -?) Prints
-\t this usage information.
+\t--[no-]help (or -?) Prints this usage information.
\t aka --usage
\t--foo INT A foo
}
diff --git a/t/110_sort_usage_by_attr_order.t b/t/110_sort_usage_by_attr_order.t
index 7ec0c99..16cdaa1 100644
--- a/t/110_sort_usage_by_attr_order.t
+++ b/t/110_sort_usage_by_attr_order.t
@@ -64,12 +64,12 @@ usage: 110_sort_usage_by_attr_order.t [-?] [long options...]
--baz STR Documentation for "baz"
USAGE
}
-if ( $Getopt::Long::Descriptive::VERSION >= 0.106 )
+# Note: Getopt::Long::Descriptive 0.106 not supported
+if ( $Getopt::Long::Descriptive::VERSION >= 0.107 )
{
$expected = <<'USAGE';
usage: 110_sort_usage_by_attr_order.t [-?] [long options...]
- --[no-]help (or -?) Prints
- this usage information.
+ --[no-]help (or -?) Prints this usage information.
aka --usage
--foo STR Documentation for "foo"
--bar STR Documentation for "bar"
@@ -1,12 +0,0 @@
diff --git a/pyproject.toml b/pyproject.toml
index 107cab8..34cc544 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -66,7 +66,6 @@ long_description_content_type = "text/markdown"
addopts = "-v --doctest-modules"
doctest_optionflags = "NORMALIZE_WHITESPACE"
testpaths = [
- "docs",
"pysrc",
"pytests",
]
@@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "cashaddress";
version = "1.0.6-unstable-2015-05-19";
version = "1.0.6-unstable-2019-05-15";
pyproject = true;
disabled = pythonOlder "3.7";
@@ -27,11 +27,11 @@ buildPythonPackage rec {
pythonImportsCheck = [ "cashaddress" ];
meta = with lib; {
meta = {
description = "Python tool for convert bitcoin cash legacy addresses";
homepage = "https://github.com/oskyk/cashaddress";
changelog = "https://github.com/oskyk/cashaddress/releases/tag/${version}";
license = licenses.gpl3Only;
maintainers = with maintainers; [ fab ];
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ fab ];
};
}
@@ -1,47 +1,45 @@
{
lib,
buildPythonPackage,
pythonAtLeast,
fetchFromGitHub,
pythonOlder,
setuptools,
mock,
fetchpatch,
python,
pytestCheckHook,
}:
buildPythonPackage {
pname = "contexttimer";
version = "unstable-2019-03-30";
format = "setuptools";
disabled = pythonAtLeast "3.12";
version = "unstable-2024-09-05";
pyproject = true;
src = fetchFromGitHub {
owner = "brouberol";
repo = "contexttimer";
rev = "a866f420ed4c10f29abf252c58b11f9db6706100";
hash = "sha256-Fc1vK1KSZWgBPtBf5dVydF6dLHEGAOslWMV0FLRdj8w=";
rev = "8e77927b8b75365f8e2bc456d2457b3e47c67815";
hash = "sha256-LCyXJa+7XkfxzcLGonv1yfOW+gZhLFBAbBT+5IP39qA=";
};
patches = [
# https://github.com/brouberol/contexttimer/pull/16
(fetchpatch {
url = "https://github.com/brouberol/contexttimer/commit/dd65871f3f25a523a47a74f2f5306c57048592b0.patch";
hash = "sha256-vNBuFXvuvb6hWPzg4W4iyKbd4N+vofhxsKydEkc25E4=";
})
disabled = pythonOlder "3.12";
build-system = [ setuptools ];
preCheck = ''
substituteInPlace tests/test_timer.py \
--replace-fail "assertRegexpMatches" "assertRegex"
'';
nativeCheckInputs = [
mock
pytestCheckHook
];
pythonImportsCheck = [ "contexttimer" ];
nativeCheckInputs = [ mock ];
checkPhase = ''
${python.interpreter} -m unittest tests/test_timer.py
'';
meta = with lib; {
meta = {
homepage = "https://github.com/brouberol/contexttimer";
description = "Timer as a context manager";
license = licenses.gpl3Only;
maintainers = with maintainers; [ atila ];
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ atila ];
};
}
@@ -28,14 +28,14 @@
buildPythonPackage rec {
pname = "docling-core";
version = "2.30.1";
version = "2.31.2";
pyproject = true;
src = fetchFromGitHub {
owner = "docling-project";
repo = "docling-core";
tag = "v${version}";
hash = "sha256-HTWd3jEStoRlX9NYYEO3PmC9i/cn3k+SJ7RFP0fxa3M=";
hash = "sha256-O0GfEoWImDjehCPb8erBdY2gYalj2im8rxdJKEsbUs4=";
};
build-system = [
@@ -9,14 +9,14 @@
buildPythonPackage rec {
pname = "eheimdigital";
version = "1.1.0";
version = "1.2.0";
pyproject = true;
src = fetchFromGitHub {
owner = "autinerd";
repo = "eheimdigital";
tag = version;
hash = "sha256-dqQeRaPy9NtvRhmGUVBVzmORJNYxzM2X/ricJUBlCK0=";
hash = "sha256-Jg5jVJAH6y2yrospcPJwHc/B0yd5ZRSXC6T7gYk7Sxs=";
};
build-system = [ hatchling ];
@@ -12,7 +12,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "Farama-Foundation";
repo = pname;
repo = "jumpy";
rev = version;
hash = "sha256-tPQ/v2AVnAEC+08BVAvvgJ8Pj89nXZSn2tQ6nxXuSfA=";
};
@@ -20,7 +20,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "kellyjonbrazil";
repo = pname;
repo = "jc";
tag = "v${version}";
hash = "sha256-tv466jVjLtmn2U8t3sSyQLuzGcVf0RHtE+cFd8j8T5k=";
};
@@ -14,7 +14,7 @@ buildPythonPackage rec {
# no tests in PyPI tarball
src = fetchFromGitHub {
owner = "fxsjy";
repo = pname;
repo = "jieba";
rev = "v${version}";
sha256 = "028vmd6sj6wn9l1ilw7qfmlpyiysnlzdgdlhwxs6j4fvq0gyrwxk";
};
@@ -21,7 +21,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "Gorialis";
repo = pname;
repo = "jishaku";
tag = version;
hash = "sha256-+J8Tr8jPN9K3eHLOuJTaP3We5A1kiyn9/yI1KChbuMY=";
};
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "deepmind";
repo = pname;
repo = "jmp";
tag = "v${version}";
hash = "sha256-+PefZU1209vvf1SfF8DXiTvKYEnZ4y8iiIr8yKikx9Y=";
};
@@ -29,7 +29,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "openpreserve";
repo = pname;
repo = "jpylyzer";
rev = version;
hash = "sha256-P42qAks8suI/Xknwd8WAkymbGE7RApRa/a11J/V4LA0=";
};
@@ -16,7 +16,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "wbolster";
repo = pname;
repo = "jsonlines";
rev = version;
hash = "sha256-KNEJdAxEgd0NGPnk9J51C3yUN2e6Cvvevth0iKOMlhE=";
};
@@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "emlove";
repo = pname;
repo = "jsonrpc-async";
rev = version;
hash = "sha256-KOnycsOZFDEVj8CJDwGbdtbOpMPQMVdrXbHG0fzr9PI=";
};
@@ -27,7 +27,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "p1c2u";
repo = pname;
repo = "jsonschema-spec";
tag = version;
hash = "sha256-rCepDnVAOEsokKjWCuqDYbGIq6/wn4rsQRx5dXTUsYo=";
};
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "dcbaker";
repo = pname;
repo = "jsonstreams";
rev = version;
sha256 = "0qw74wz9ngz9wiv89vmilbifsbvgs457yn1bxnzhrh7g4vs2wcav";
};
@@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "weiwei";
repo = pname;
repo = "junitparser";
rev = version;
hash = "sha256-rhDP05GSWT4K6Z2ip8C9+e3WbvBJOwP0vctvANBs7cw=";
};
@@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "alexferl";
repo = pname;
repo = "justbackoff";
rev = "v${version}";
sha256 = "097j6jxgl4b3z46x9y9z10643vnr9v831vhagrxzrq6nviil2z6l";
};
@@ -13,7 +13,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "mulkieran";
repo = pname;
repo = "justbases";
tag = "v${version}";
hash = "sha256-XraUh3beI2JqKPRHYN5W3Tn3gg0GJCwhnhHIOFdzh6U=";
};
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "mulkieran";
repo = pname;
repo = "justbytes";
tag = "v${version}";
hash = "sha256-+jwIK1ZU+j58VoOfZAm7GdFy7KHU28khwzxhYhcws74=";
};
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "jackrosenthal";
repo = pname;
repo = "kajiki";
tag = "v${version}";
hash = "sha256-EbXe4Jh2IKAYw9GE0kFgKVv9c9uAOiFFYaMF8CGaOfg=";
};
@@ -29,7 +29,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "daanzu";
repo = pname;
repo = "kaldi-active-grammar";
rev = "v${version}";
sha256 = "0lilk6yjzcy31avy2z36bl9lr60gzwhmyqwqn8akq11qc3mbffsk";
};
@@ -16,7 +16,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "CERT-Polska";
repo = pname;
repo = "karton-asciimagic";
tag = "v${version}";
hash = "sha256-sY5ik9efzLBa6Fbh17Vh4q7PlwOGYjuodU9yvp/8E3k=";
};
@@ -16,7 +16,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "CERT-Polska";
repo = pname;
repo = "karton-config-extractor";
tag = "v${version}";
hash = "sha256-a9wSw25q0blgAkR2s3brW7jGHJSLjx1yXjMmhMJNUFk=";
};
@@ -19,7 +19,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "CERT-Polska";
repo = pname;
repo = "karton-dashboard";
tag = "v${version}";
hash = "sha256-VzBC7IATF8QBtTXMv4vmorAzBlImEsayjenQ2Uz5jIo=";
};
@@ -16,7 +16,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "CERT-Polska";
repo = pname;
repo = "karton-mwdb-reporter";
tag = "v${version}";
hash = "sha256-KJh9uJzVGYEEk1ed56ynKA/+dK9ouDB7L06xERjfjdc=";
};
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "CERT-Polska";
repo = pname;
repo = "karton-yaramatcher";
tag = "v${version}";
hash = "sha256-URGW8FyJZ3ktrwolls5ElSWn8FD6vWCA+Eu0aGtPh6U=";
};
@@ -11,7 +11,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "boppreh";
repo = pname;
repo = "keyboard";
rev = "v${version}";
hash = "sha256-U4GWhPp28azBE3Jn9xpLxudOKx0PjnYO77EM2HsJ9lM=";
};
@@ -2,37 +2,49 @@
lib,
buildPythonPackage,
fetchFromGitHub,
pytest,
future,
pyparsing,
pytestCheckHook,
setuptools,
}:
buildPythonPackage {
buildPythonPackage rec {
pname = "kinparse";
version = "unstable-2019-12-18";
format = "setuptools";
version = "1.2.3";
pyproject = true;
src = fetchFromGitHub {
owner = "xesscorp";
repo = "kinparse";
rev = "eeb3f346d57a67a471bdf111f39bef8932644481";
sha256 = "1nrjnybwzy93c79yylcwmb4lvkx7hixavnjwffslz0zwn32l0kx3";
tag = version;
hash = "sha256-170e2uhqpk6u/hahivWYubr3Ptb8ijymJSxhxrAfuyI=";
};
# Remove python2 build support as it breaks python >= 3.13
postPatch = ''
substituteInPlace setup.cfg \
--replace-fail "universal = 1" "universal = 0"
'';
build-system = [ setuptools ];
dependencies = [ pyparsing ];
pythonRemoveDeps = [ "future" ];
preCheck = ''
substituteInPlace tests/test_kinparse.py \
--replace-fail "data/" "$src/tests/data/"
'';
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "kinparse" ];
nativeCheckInputs = [ pytest ];
propagatedBuildInputs = [
future
pyparsing
];
meta = with lib; {
meta = {
description = "Parser for KiCad EESCHEMA netlists";
mainProgram = "kinparse";
homepage = "https://github.com/xesscorp/kinparse";
license = licenses.mit;
maintainers = with maintainers; [ matthuszagh ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ matthuszagh ];
};
}
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "Ousret";
repo = pname;
repo = "kiss-headers";
tag = version;
hash = "sha256-WeAzlC1yT+0nPSuB278z8T0XvPjbre051f/Rva5ujAk=";
};
@@ -1,45 +0,0 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
kivy,
}:
buildPythonPackage {
pname = "kivy-garden-modernmenu";
version = "0-unstable-2019-12-10";
pyproject = true;
src = fetchFromGitHub {
owner = "kivy-garden";
repo = "modernmenu";
rev = "681c3bf68b9ce2ebe653c2e6a9fcd2407bfe3e00";
hash = "sha256-0d4UhmRtuYwnYoZajjExavlvqkhGamiEQ8GjHWYnO88=";
};
strictDeps = true;
build-system = [
setuptools
];
checkInputs = [
kivy
];
pythonImportsCheck = [
"kivy_garden.modernmenu"
];
preInstallCheck = ''
export HOME=$PWD
'';
meta = {
description = "Stylized menu system for Kivy";
homepage = "https://github.com/kivy-garden/modernmenu";
license = lib.licenses.mit;
teams = [ lib.teams.ngi ];
};
}
@@ -22,7 +22,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "jonashaag";
repo = pname;
repo = "klaus";
rev = version;
hash = "sha256-GflSDhBmMsQ34o3ApraEJ6GmlXXP2kK6WW3lsfr6b7g=";
};
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "mrcagney";
repo = pname;
repo = "kml2geojson";
rev = version;
hash = "sha256-iJEcXpvy+Y3MkxAF2Q1Tkcx8GxUVjeVzv6gl134zdiI=";
};
@@ -17,8 +17,8 @@ buildPythonPackage rec {
disabled = pythonOlder "3.9";
src = fetchFromGitHub {
owner = pname;
repo = pname;
owner = "kornia";
repo = "kornia";
tag = "v${version}";
hash = "sha256-pMCGL33DTnMLlxRbhBhRuR/ZA575+kbUJ59N3nuqpdI=";
};
@@ -112,6 +112,7 @@ buildPythonPackage rec {
# requires bs4, aka BeautifulSoup
"test_importable_all"
# flaky
"test_llm_caching"
"test_llm_caching_async"
];
@@ -19,7 +19,7 @@ buildPythonPackage {
src = fetchFromGitHub {
owner = "gen-ko";
repo = pname;
repo = "lanms-neo";
rev = "6510e19e731a1e105d42b2fbda64de41c169ce2e";
hash = "sha256-0fs4RNN1ptiir7GfR9B8HK0VqTkk5PbVJxgKiDId3po=";
};
@@ -21,7 +21,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "tmontaigu";
repo = pname;
repo = "laszip-python";
rev = version;
hash = "sha256-MiPzL9TDCf1xnCv7apwdfcpkFnBRi4PO/atTQxqL8cw=";
};
@@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "saltstack";
repo = pname;
repo = "libnacl";
rev = "v${version}";
hash = "sha256-phECLGDcBfDi/r2y0eGtqgIX/hvirtBqO8UUvEJ66zo=";
};
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "portugueslab";
repo = pname;
repo = "lightparam";
rev = "v${version}";
sha256 = "13hlkvjcyz2lhvlfqyavja64jccbidshhs39sl4fibrn9iq34s3i";
};
@@ -16,7 +16,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "alexdelorenzo";
repo = pname;
repo = "limiter";
rev = "v${version}";
hash = "sha256-2Et4ozVf9t+tp2XtLbDk/LgLIU+jQAEAlU8hA5lpxdk=";
};
@@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "randy3k";
repo = pname;
repo = "lineedit";
rev = "v${version}";
sha256 = "fq2NpjIQkIq1yzXEUxi6cz80kutVqcH6MqJXHtpTFsk=";
};
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "tsutsu3";
repo = pname;
repo = "linkify-it-py";
tag = "v${version}";
hash = "sha256-BLwIityUZDVdSbvTpLf6QUlZUavWzG/45Nfffn18/vU=";
};
@@ -26,8 +26,8 @@ buildPythonPackage rec {
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = pname;
repo = pname;
owner = "liquidctl";
repo = "liquidctl";
tag = "v${version}";
hash = "sha256-ifYPUAF0lR9aCwiseNQZXbq+d+CXD/MwnZQhAM1TRLI=";
};
@@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "stared";
repo = pname;
repo = "livelossplot";
tag = "v${version}";
hash = "sha256-qC1FBFJyf2IlDIffJ5Xs89WcN/GFA/8maODhc1u2xhA=";
};
@@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "noamgat";
repo = pname;
repo = "lm-format-enforcer";
tag = "v${version}";
hash = "sha256-8BsfA1R/X+wA0H0MqQKn+CljUIT8VdoInoczSGvu74o=";
};
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchFromSourcehut {
owner = "~cnx";
repo = pname;
repo = "loca";
rev = version;
sha256 = "1l6jimw3wd81nz1jrzsfw1zzsdm0jm998xlddcqaq0h38sx69w8g";
};

Some files were not shown because too many files have changed in this diff Show More