Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add (mostly static) Linux build #48

Merged
merged 43 commits into from
Nov 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
1cb2d95
Add initial support for Linux
fwcd Nov 9, 2023
5922366
Add experimental Linux workflow
fwcd Nov 9, 2023
cec0fbd
Install APT dependencies
fwcd Nov 9, 2023
1943593
Fix package name
fwcd Nov 9, 2023
951e00a
Install `autoconf-archive` on Linux
fwcd Nov 9, 2023
976f110
Add missing dependencies for Qt build on Linux
fwcd Nov 9, 2023
4504eac
Add `mesa-common-dev`
fwcd Nov 9, 2023
47d2a5c
Try another package
fwcd Nov 9, 2023
e3f8ba1
Add release-mode triplet for x64-linux
fwcd Nov 9, 2023
f1e3d81
Revert "Add release-mode triplet for x64-linux"
fwcd Nov 9, 2023
4a3821a
Add missing `libudev-dev` dependency
fwcd Nov 10, 2023
06eef33
Add `libupower-glib-dev` dependency
fwcd Nov 10, 2023
cb26a81
Use patched Mixxx with XCB plugin
fwcd Nov 10, 2023
f30a209
Base mixxx branch on `main` again
fwcd Nov 10, 2023
29f6265
Add missing `libtool` dependency
fwcd Nov 10, 2023
a0c8ebe
Try linking a bunch of libraries manually
fwcd Nov 11, 2023
a5845c2
Add `libasound2-dev` to APT dependencies
fwcd Nov 11, 2023
5c11856
Remove extra flags again
fwcd Nov 11, 2023
6ff8fa8
Use `linux-static` integration branch (for now)
fwcd Nov 12, 2023
66d49aa
Update mixxx (link PortMidi with ALSA)
fwcd Nov 12, 2023
aa3f01c
Update mixxx (with the right PortMidi target)
fwcd Nov 12, 2023
e779f48
Update mixxx (add proper PortMidi targets)
fwcd Nov 12, 2023
f12eaba
Update mixxx (fix typo)
fwcd Nov 12, 2023
b7c7c55
Update mixxx (link udev)
fwcd Nov 12, 2023
e252090
Update mixxx (link hidraw with udev too)
fwcd Nov 12, 2023
12f803b
Update mixxx (sleef openmp)
fwcd Nov 12, 2023
e029027
Update mixxx (link OpenMP target)
fwcd Nov 12, 2023
7bd97ef
Update mixxx (Add proper FindUdev)
fwcd Nov 12, 2023
a917700
Update mixxx (fix missing udev vars)
fwcd Nov 12, 2023
35f4778
Update mixxx (reorder vorbis found)
fwcd Nov 12, 2023
609c4ec
Update mixxx (rename to libudev and find include path)
fwcd Nov 12, 2023
8ba4140
Update mixxx (use sleefdft)
fwcd Nov 12, 2023
7a95e4c
Update mixxx (fix typo)
fwcd Nov 12, 2023
c8c90d2
Always save ccache for faster builds
fwcd Nov 12, 2023
873272b
Update mixxx (try linking openmp the modern way)
fwcd Nov 12, 2023
081b499
Use `${{ env.HOME }}` instead of `$HOME`
fwcd Nov 12, 2023
fc42623
Update mixxx (use openmp flags)
fwcd Nov 12, 2023
7c8a94a
Specify ccache path in matrix
fwcd Nov 12, 2023
e5ee00c
Update mixxx (use proper sleefdft target)
fwcd Nov 12, 2023
74c4b83
Update mixxx (link openmp again)
fwcd Nov 13, 2023
5fcbea1
Update mixxx (link sleef into sleefdft)
fwcd Nov 13, 2023
72fd672
Include triplet in ccache key
fwcd Nov 13, 2023
d0833cd
Disable battery indicator in Linux build for now
fwcd Nov 13, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 30 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ jobs:
triplet: arm64-osx-min1100
host_triplet: x64-osx-min1015
overlay_ports: vcpkg/overlay/osx:vcpkg/overlay/ports
ccache_path: ~/Library/Caches/ccache
cpack_generator: DragNDrop
package_extension: dmg
cmake_args: >-
Expand All @@ -34,10 +35,24 @@ jobs:
triplet: x64-osx-min1015
host_triplet: x64-osx-min1015
overlay_ports: vcpkg/overlay/osx:vcpkg/overlay/ports
ccache_path: ~/Library/Caches/ccache
cpack_generator: DragNDrop
package_extension: dmg
cmake_args: >-
-DMACOS_BUNDLE=ON
- name: Linux (x86_64)
os: ubuntu-latest
triplet: x64-linux
host_triplet: x64-linux
overlay_ports: vcpkg/overlay/ports
ccache_path: ~/.ccache
cpack_generator: TGZ
package_extension: tar.gz
# On Linux we build without battery support since this pulls in a
# dependency on GLib which is tricky to get right in a static linking scenario.
# See https://github.com/fwcd/m1xxx/pull/48#issuecomment-1807378063
cmake_args: >-
-DBATTERY=OFF

name: '${{ matrix.name }}'
runs-on: '${{ matrix.os }}'
Expand All @@ -62,6 +77,9 @@ jobs:
done
echo "mixxx_version=$(scripts/mixxx-version)" >> "$GITHUB_ENV"
shell: bash
- name: Set up Linux build environment
if: runner.os == 'Linux'
run: ${{ env.SCRIPTS_ROOT }}/install-apt-deps
- name: Set up macOS build environment
if: runner.os == 'macOS'
run: |
Expand Down Expand Up @@ -121,12 +139,12 @@ jobs:
- name: Set up build cache
uses: actions/cache@v3
with:
path: $HOME/Library/Caches/ccache
key: ccache-${{ env.mixxx_commit }}-${{ github.ref }}-${{ github.run_number }}
path: ${{ matrix.ccache_path }}
key: ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-${{ github.ref }}-${{ github.run_number }}
restore-keys: |
ccache-${{ env.mixxx_commit }}-${{ github.ref }}-
ccache-${{ env.mixxx_commit }}-
ccache-
ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-${{ github.ref }}-
ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-
ccache-${{ matrix.triplet }}-
- name: Configure Mixxx build
run: >-
cmake
Expand All @@ -146,6 +164,13 @@ jobs:
- name: Build Mixxx
run: cmake --build build --target mixxx
working-directory: mixxx
- name: Save build cache
if: always()
uses: actions/cache/save@v3
with:
# TODO: Share the key with the setup step
path: ${{ matrix.ccache_path }}
key: ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-${{ github.ref }}-${{ github.run_number }}
- name: Package Mixxx
run: cpack -G ${{ matrix.cpack_generator }} -V && mv *.${{ matrix.package_extension }} "mixxx-${{ matrix.triplet }}-${{ env.mixxx_version }}.${{ matrix.package_extension }}"
working-directory: mixxx/build
Expand Down
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
branch = 2.5-rel
[submodule "mixxx"]
path = mixxx
url = https://github.com/mixxxdj/mixxx.git
branch = main
url = https://github.com/fwcd/mixxx.git
branch = linux-static
2 changes: 1 addition & 1 deletion mixxx
Submodule mixxx updated 45 files
+8 −16 .github/workflows/build.yml
+6 −0 cmake/modules/BundleInstall.cmake.in
+12 −0 cmake/modules/FindLibUSB.cmake
+61 −0 cmake/modules/FindLibudev.cmake
+10 −0 cmake/modules/FindPortAudio.cmake
+32 −3 cmake/modules/FindPortMidi.cmake
+31 −0 cmake/modules/FindSleef.cmake
+14 −0 cmake/modules/FindVorbis.cmake
+19 −0 cmake/modules/Findhidapi.cmake
+1 −2 cmake/modules/Findrubberband.cmake
+ packaging/certificates/macos_developer_id_codesign_certificate.p12.enc
+33 −53 packaging/macos/sign_notarize_staple.sh
+18 −0 res/skins/LateNight/classic/style/mark_intro.svg
+32 −0 res/skins/LateNight/classic/style/mark_loop.svg
+18 −0 res/skins/LateNight/classic/style/mark_outro.svg
+5 −0 res/skins/LateNight/waveform.xml
+4 −4 src/library/dao/trackdao.cpp
+2 −0 src/mixxxapplication.cpp
+0 −10 src/preferences/settingsmanager.cpp
+0 −2 src/preferences/settingsmanager.h
+17 −2 src/skin/legacy/legacyskinparser.cpp
+7 −2 src/util/translations.h
+1 −1 src/waveform/renderers/allshader/waveformrenderbeat.cpp
+1 −1 src/waveform/renderers/allshader/waveformrendererendoftrack.cpp
+1 −1 src/waveform/renderers/allshader/waveformrendererpreroll.cpp
+66 −230 src/waveform/renderers/allshader/waveformrendermark.cpp
+2 −3 src/waveform/renderers/allshader/waveformrendermark.h
+244 −13 src/waveform/renderers/waveformmark.cpp
+22 −6 src/waveform/renderers/waveformmark.h
+40 −0 src/waveform/renderers/waveformmarkset.cpp
+51 −4 src/waveform/renderers/waveformmarkset.h
+1 −1 src/waveform/renderers/waveformrenderbeat.cpp
+1 −1 src/waveform/renderers/waveformrendererendoftrack.cpp
+1 −1 src/waveform/renderers/waveformrendererpreroll.cpp
+44 −218 src/waveform/renderers/waveformrendermark.cpp
+10 −10 src/waveform/renderers/waveformsignalcolors.cpp
+11 −3 src/waveform/renderers/waveformwidgetrenderer.cpp
+7 −2 src/waveform/renderers/waveformwidgetrenderer.h
+5 −0 src/waveform/widgets/allshader/waveformwidget.cpp
+1 −0 src/waveform/widgets/allshader/waveformwidget.h
+1 −1 src/widget/whotcuebutton.cpp
+7 −0 src/widget/whotcuebutton.h
+13 −49 src/widget/woverview.cpp
+0 −3 src/widget/woverview.h
+21 −0 tools/mixxxdb_cleanup.sql
27 changes: 27 additions & 0 deletions scripts/install-apt-deps
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash

set -e

echo "==> Installing system dependencies with APT..."
sudo apt-get update
sudo apt-get install -y \
autoconf-archive \
autotools-dev \
ccache \
cmake \
libasound2-dev \
'^libxcb.*-dev' \
libx11-xcb-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libsleef-dev \
libudev-dev \
libupower-glib-dev \
libtool \
libxrender-dev \
libxi-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
mesa-common-dev \
nasm \
ninja-build
5 changes: 5 additions & 0 deletions scripts/install-vcpkg-deps
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ ROOT = Path(__file__).resolve().parent.parent

TRIPLET_OSS = {
'Darwin': 'osx',
'Linux': 'linux',
}

TRIPLET_ARCHS = {
'x86_64': 'x64',
'arm64': 'arm64',
'aarch64': 'arm64',
}

# Packages to be built for the target architecture
Expand Down Expand Up @@ -67,6 +69,9 @@ PLATFORM_PACKAGES = {
'hss1394',
'qtkeychain-qt6', # libgcrypt seems to be unsupported on iOS
],
'linux': [
'qtkeychain-qt6',
],
}

# Packages to be built for the host architecture when crosscompiling
Expand Down
Loading