Skip to content

Commit 900aed9

Browse files
authored
Merge pull request mixxxdj#15065 from acolombier/sync-branch-2.6-to-main
Sync branch 2.6 to main
2 parents f542d93 + 11d060b commit 900aed9

24 files changed

Lines changed: 643 additions & 194 deletions

.github/workflows/build.yml

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,31 @@ name: Build
44

55
on:
66
workflow_call:
7+
inputs:
8+
publish:
9+
type: boolean
10+
default: false
11+
secrets:
12+
AZURE_CLIENT_ID:
13+
required: false
14+
AZURE_CLIENT_SECRET:
15+
required: false
16+
AZURE_TENANT_ID:
17+
required: false
18+
DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY:
19+
required: false
20+
DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD:
21+
required: false
22+
MACOS_CODESIGN_CERTIFICATE_P12_BASE64:
23+
required: false
24+
MACOS_CODESIGN_CERTIFICATE_PASSWORD:
25+
required: false
26+
MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD:
27+
required: false
28+
NETLIFY_BUILD_HOOK:
29+
required: false
30+
RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY:
31+
required: false
732

833
permissions:
934
contents: read # to fetch code (actions/checkout)
@@ -49,7 +74,6 @@ jobs:
4974
-DQML=OFF
5075
-DWAVPACK=ON
5176
-DVCPKG_TARGET_TRIPLET=x64-osx-min1100-release
52-
-DVCPKG_DEFAULT_HOST_TRIPLET=x64-osx-min1100-release
5377
# TODO: Fix this broken test on macOS
5478
ctest_args: --exclude-regex DirectoryDAOTest.relocateDirectory
5579
cpack_generator: DragNDrop
@@ -74,7 +98,6 @@ jobs:
7498
-DQML=ON
7599
-DWAVPACK=ON
76100
-DVCPKG_TARGET_TRIPLET=arm64-osx-min1100-release
77-
-DVCPKG_DEFAULT_HOST_TRIPLET=x64-osx-min1100-release
78101
# TODO: Fix this broken test on macOS
79102
crosscompile: true
80103
cpack_generator: DragNDrop
@@ -103,7 +126,6 @@ jobs:
103126
-DQML=ON
104127
-DWAVPACK=ON
105128
-DVCPKG_TARGET_TRIPLET=x64-windows-release
106-
-DVCPKG_DEFAULT_HOST_TRIPLET=x64-windows-release
107129
cc: cl
108130
cxx: cl
109131
# TODO: Fix these broken tests on Windows
@@ -400,8 +422,8 @@ jobs:
400422
if: always() && steps.package.outcome == 'failure' && runner.os == 'windows'
401423
uses: actions/upload-artifact@v4
402424
with:
403-
name: logs-packages-wix
404-
path: D:/a/mixxx/mixxx/build/_CPack_Packages/win64/WIX/wix.log
425+
name: ${{ matrix.os }}-logs-packages-wix
426+
path: ${{ github.workspace }}/build/_CPack_Packages/win64/WIX/wix.log
405427

406428
- name: "[Ubuntu] Import PPA GPG key"
407429
if: startsWith(matrix.os, 'ubuntu') && env.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY != null
@@ -458,7 +480,7 @@ jobs:
458480
# also generates metadata for file artifact and write it to the job
459481
# output using the artifacts_slug value.
460482
id: prepare_deploy
461-
if: github.event_name == 'push' && matrix.artifacts_path != null
483+
if: inputs.publish && matrix.artifacts_path != null
462484
shell: bash
463485
run: >
464486
if [[ "${GITHUB_REF}" =~ ^refs/tags/.* ]];
@@ -479,7 +501,7 @@ jobs:
479501
- name: "[Windows] Install rsync and openssh"
480502
env:
481503
SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }}
482-
if: runner.os == 'Windows' && github.event_name == 'push' && env.SSH_PRIVATE_KEY != null
504+
if: runner.os == 'Windows' && inputs.publish && env.SSH_PRIVATE_KEY != null
483505
run: |
484506
if (Test-Path "C:\msys64\usr\bin") {
485507
$msysPath="C:\msys64"
@@ -514,7 +536,7 @@ jobs:
514536
Add-Content -Path "$Env:GITHUB_ENV" -Value "PATH=$Env:PATH"
515537
516538
- name: "Set up SSH Agent"
517-
if: github.event_name == 'push' && env.SSH_PRIVATE_KEY != null
539+
if: inputs.publish && env.SSH_PRIVATE_KEY != null
518540
shell: bash
519541
env:
520542
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
@@ -529,7 +551,7 @@ jobs:
529551
530552
- name: "[macOS/Windows] Upload build to downloads.mixxx.org"
531553
# skip deploying Ubuntu builds to downloads.mixxx.org because these are deployed to the PPA
532-
if: runner.os != 'Linux' && github.event_name == 'push' && env.SSH_AUTH_SOCK != null
554+
if: runner.os != 'Linux' && inputs.publish && env.SSH_AUTH_SOCK != null
533555
shell: bash --login -eo pipefail "{0}"
534556
run: rsync --verbose --recursive --checksum --times --delay-updates "deploy/" "${SSH_USER}@${SSH_HOST}:${DESTDIR}/"
535557
env:
@@ -575,7 +597,7 @@ jobs:
575597
- name: "Collect Artifacts Metadata & Write Manifest"
576598
# Retrieve the metadata from the matrix job's outputs, merge them into a
577599
# single JSON document and then deploy to the server.
578-
if: github.event_name == 'push' && env.SSH_PASSWORD != null
600+
if: inputs.publish && env.SSH_PASSWORD != null
579601
run: >
580602
if [[ "${GITHUB_REF}" =~ ^refs/tags/.* ]];
581603
then
@@ -593,7 +615,7 @@ jobs:
593615
SSH_PASSWORD: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }}
594616

595617
- name: "Set up SSH Agent"
596-
if: github.event_name == 'push' && env.SSH_PRIVATE_KEY != null && env.MANIFEST_DIRTY != null && env.MANIFEST_DIRTY != '0'
618+
if: inputs.publish && env.SSH_PRIVATE_KEY != null && env.MANIFEST_DIRTY != null && env.MANIFEST_DIRTY != '0'
597619
shell: bash
598620
env:
599621
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
@@ -607,7 +629,7 @@ jobs:
607629
echo "SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> "${GITHUB_ENV}"
608630
609631
- name: "Deploy Manifest"
610-
if: github.event_name == 'push' && env.SSH_AUTH_SOCK != null
632+
if: inputs.publish && env.SSH_AUTH_SOCK != null
611633
shell: bash
612634
run: rsync --verbose --recursive --checksum --times --delay-updates "deploy/" "${SSH_USER}@${SSH_HOST}:${DESTDIR}/"
613635
env:

.github/workflows/develop.yml

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: Pull request or branch build
2+
3+
on:
4+
pull_request:
5+
types:
6+
- opened
7+
- synchronize
8+
- reopened
9+
- edited
10+
push:
11+
branches:
12+
- "*"
13+
- "!main"
14+
- "![0-9].[0-9]"
15+
workflow_dispatch:
16+
17+
permissions:
18+
contents: read # to fetch code (actions/checkout)
19+
checks: write # to create new checks (coverallsapp/github-action)
20+
21+
jobs:
22+
stop-build:
23+
name: Check if build should be stopped
24+
runs-on: ubuntu-latest
25+
outputs:
26+
result: ${{ github.event_name == 'push' && steps.stop-build.outputs.result || 'false' }}
27+
steps:
28+
- name: Check if there is an open PR for this branch
29+
id: stop-build
30+
if: ${{ github.event_name == 'push' }}
31+
uses: actions/github-script@v7
32+
env:
33+
ORGANIZATION: mixxxdj
34+
REPOSITORY: mixxx
35+
with:
36+
script: |
37+
try {
38+
const branch = context.ref.replace('refs/heads/', '');
39+
const { data: pullRequests } = await github.rest.pulls.list({
40+
owner: process.env.ORGANIZATION,
41+
repo: process.env.REPOSITORY,
42+
head: `${context.repo.owner}:${branch}`,
43+
state: 'open'
44+
});
45+
console.log(`There is ${pullRequests.length} PR open upstream for branch '${context.repo.owner}:${branch}'`);
46+
return pullRequests.length != 0;
47+
} catch (error) {
48+
console.log(`Didn't find a PR for branch '${context.repo.owner}:${branch}' on '${process.env.ORGANIZATION}/${process.env.REPOSITORY}'.`);
49+
return false;
50+
}
51+
52+
pre-commit:
53+
if: needs.stop-build.outputs.result == 'false'
54+
needs:
55+
- stop-build
56+
uses: ./.github/workflows/pre-commit.yml
57+
with:
58+
pull_request: ${{ github.event_name == 'pull_request' }}
59+
60+
checks:
61+
if: needs.stop-build.outputs.result == 'false'
62+
needs:
63+
- stop-build
64+
uses: ./.github/workflows/checks.yml
65+
66+
git:
67+
if: github.event_name == 'pull_request'
68+
uses: ./.github/workflows/git.yml
69+
70+
build:
71+
if: needs.stop-build.outputs.result == 'false'
72+
needs:
73+
- stop-build
74+
uses: ./.github/workflows/build.yml
75+
76+
# This task is used as a probe for auto merge
77+
# In the future, it could also be used to perform a status update (e.g once the whole CI is passing + is ready for review, add a specific label such as `need review`)
78+
ready:
79+
name: Ready to merge
80+
needs:
81+
- pre-commit
82+
- checks
83+
- git
84+
- build
85+
runs-on: ubuntu-latest
86+
steps:
87+
- name: Ready to go
88+
run: "exit 0"

.github/workflows/pre-commit.yml

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ name: pre-commit
44

55
on:
66
workflow_call:
7+
inputs:
8+
pull_request:
9+
type: boolean
10+
default: false
711

812
permissions:
913
contents: read # to fetch code (actions/checkout)
@@ -36,26 +40,19 @@ jobs:
3640
git config --global --add safe.directory "${GITHUB_WORKSPACE}"
3741
git config --global --list
3842
39-
- name: "Detect code style issues (push)"
43+
- name: "Detect code style issues"
4044
uses: pre-commit/action@v3.0.1
41-
if: github.event_name == 'push'
42-
# There are too many files in the repo that have formatting issues. We'll
43-
# disable these checks for now when pushing directly (but still run these
44-
# on Pull Requests!).
4545
env:
46-
SKIP: clang-format,eslint,no-commit-to-branch
47-
48-
- name: "Detect code style issues (pull_request)"
49-
uses: pre-commit/action@v3.0.1
50-
if: github.event_name == 'pull_request'
51-
env:
52-
SKIP: no-commit-to-branch
46+
# There are too many files in the repo that have formatting issues. We'll
47+
# disable these checks for now when pushing directly (but still run these
48+
# on Pull Requests!).
49+
SKIP: ${{ inputs.pull_request && 'no-commit-to-branch' || 'clang-format,eslint,no-commit-to-branch' }}
5350
# https://github.com/paleite/eslint-plugin-diff?tab=readme-ov-file#ci-setup
54-
ESLINT_PLUGIN_DIFF_COMMIT: ${{ github.event.pull_request.base.ref }}
51+
ESLINT_PLUGIN_DIFF_COMMIT: ${{ inputs.pull_request && github.event.pull_request.base.ref || '' }}
5552
with:
5653
# HEAD is the not yet integrated PR merge commit +refs/pull/xxxx/merge
5754
# HEAD^1 is the PR target branch and HEAD^2 is the HEAD of the source branch
58-
extra_args: --from-ref HEAD^1 --to-ref HEAD
55+
extra_args: ${{ inputs.pull_request && '--from-ref HEAD^1 --to-ref HEAD' || '' }}
5956

6057
- name: "Generate patch file"
6158
if: failure()

.github/workflows/pull-request.yml

Lines changed: 0 additions & 36 deletions
This file was deleted.

.github/workflows/release.yml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ env:
1414
ACTIVE_VERSIONS: |-
1515
{"2.5": "2.6", "2.6": "main"}
1616
17+
# Global allowed scopes for all actions
18+
permissions:
19+
contents: write # to sync branches
20+
pull-requests: write # to sync branches
21+
checks: write # to create new checks (coverallsapp/github-action)
22+
1723
jobs:
1824
checks:
1925
uses: ./.github/workflows/checks.yml
@@ -23,9 +29,22 @@ jobs:
2329

2430
build:
2531
uses: ./.github/workflows/build.yml
32+
with:
33+
publish: true
34+
secrets:
35+
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
36+
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
37+
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
38+
DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }}
39+
DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }}
40+
MACOS_CODESIGN_CERTIFICATE_P12_BASE64: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_P12_BASE64 }}
41+
MACOS_CODESIGN_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_PASSWORD }}
42+
MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD }}
43+
NETLIFY_BUILD_HOOK: ${{ secrets.NETLIFY_BUILD_HOOK }}
44+
RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }}
2645

2746
sync:
28-
if: ${{ github.ref != 'refs/heads/main' }}
47+
if: ${{ github.ref != 'refs/heads/main' }} && ${{ github.repository == 'mixxxdj/mixxx' }}
2948
uses: ./.github/workflows/sync_branches.yml
3049
secrets:
31-
pat_token: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }}
50+
MIXXX_BRANCH_SYNC_PAT: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }}

.github/workflows/sync_branches.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
workflow_call:
55
secrets:
66
# PAT setup with content:write and pull_request:write
7-
pat_token:
7+
MIXXX_BRANCH_SYNC_PAT:
88
required: true
99

1010
permissions: {}
@@ -13,7 +13,8 @@ env:
1313
SYNC_COMMITTER_EMAIL: bot@mixxx.org
1414
SYNC_COMMITTER_NAME: Mixxx Bot
1515

16-
# This variable stores the map of Mixxx branches that still being developed. The key is the branch receiving support and the value is the next version in line
16+
# This variable stores the map of Mixxx branches that still being developed.
17+
# The key is the branch receiving support and the value is the next version in line
1718
# NOTE: this must be valid JSON!
1819
ACTIVE_VERSIONS: |-
1920
{"2.5": "2.6", "2.6": "main"}
@@ -41,7 +42,7 @@ jobs:
4142
- name: "Check out repository"
4243
uses: actions/checkout@v4.1.7
4344
with:
44-
token: ${{ secrets.pat_token }}
45+
token: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }}
4546
fetch-depth: 0
4647
persist-credentials: true
4748

@@ -99,7 +100,7 @@ jobs:
99100
FROM_BRANCH: ${{ github.ref_name }}
100101
TO_BRANCH: ${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }}
101102
SYNC_BRANCH: sync-branch-${{ github.ref_name }}-to-${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }}
102-
GITHUB_TOKEN: ${{ secrets.pat_token }}
103+
GITHUB_TOKEN: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }}
103104
PULL_REQUEST_TITLE: Merge changes from `${{ github.ref_name }}` into `${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }}`
104105
PULL_REQUEST_BODY: |
105106
New content has landed in the `${{ github.ref_name }}` branch, so let's merge the changes into `${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }}`

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,23 @@
333333
* Fix: import proper QtQml.Models module instead of qmllabs [#14675](https://github.com/mixxxdj/mixxx/pull/14675)
334334
* qmlwaveform: Fix moc in Qt 6.9.0 [#14649](https://github.com/mixxxdj/mixxx/pull/14649)
335335

336+
## [2.5.3](https://github.com/mixxxdj/mixxx/milestone/50) (unreleased)
337+
338+
### Controller Mappings
339+
340+
* Traktor Kontrol S4 Mk3: tempo offset per deck [#14882](https://github.com/mixxxdj/mixxx/pull/14882)
341+
* Traktor Kontrol S4 Mk3: don`t duplicate beatloop_activate behaviour [#14992](https://github.com/mixxxdj/mixxx/pull/14992)
342+
* Traktor Kontrol S3: allow full library navigation [#14980](https://github.com/mixxxdj/mixxx/pull/14980)
343+
344+
### Misc
345+
346+
* Broadcast preferences: make setting string translatable [#15023](https://github.com/mixxxdj/mixxx/pull/15023)
347+
* Sound Hardware preference: add (?) linking to Sound APIs in the manual [#14935](https://github.com/mixxxdj/mixxx/pull/14935)
348+
* xwax: do not try to "correct" for drift in absolute mode. [#14960](https://github.com/mixxxdj/mixxx/pull/14960)
349+
* Fix column header text assignment [#14944](https://github.com/mixxxdj/mixxx/pull/14944)
350+
* Remove runtime assert to not risk crashes [#15000](https://github.com/mixxxdj/mixxx/pull/15000)
351+
* Windows: Update build environment to Visual Studio 2022 [#15006](https://github.com/mixxxdj/mixxx/pull/15006)
352+
336353
## [2.5.2](https://github.com/mixxxdj/mixxx/milestone/49) (2025-06-13)
337354

338355
### Library

0 commit comments

Comments
 (0)