commit d66a01e7dabb776f71f2c25f14120af9359a1031
parent 5daa98303465d7510c1fc9fe048a1a41e70bfe6f
Author: Silas Brack <silasbrack@gmail.com>
Date: Sun, 8 Mar 2026 13:54:42 +0100
Add support for more architectures
Diffstat:
2 files changed, 73 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
@@ -8,29 +8,82 @@ permissions:
contents: write
jobs:
- build:
- name: Build packages
- runs-on: ubuntu-latest
+ build-nix:
+ name: Build ${{ matrix.target }}
+ runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- - system: x86_64-linux
+ - target: x86_64-unknown-linux-gnu
+ runner: ubuntu-latest
+ system: x86_64-linux
+ package: default
+ - target: x86_64-unknown-linux-musl
+ runner: ubuntu-latest
+ system: x86_64-linux
+ package: x86_64-linux-musl
+ - target: aarch64-unknown-linux-gnu
+ runner: ubuntu-latest
+ system: x86_64-linux
+ package: aarch64-linux
+ - target: x86_64-apple-darwin
+ runner: macos-13
+ system: x86_64-darwin
+ package: default
+ - target: aarch64-apple-darwin
+ runner: macos-latest
+ system: aarch64-darwin
+ package: default
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- # - uses: DeterminateSystems/magic-nix-cache-action@main
- - run: nix --print-build-logs build .#packages.$SYSTEM.default
- env:
- SYSTEM: ${{ matrix.system }}
+ - run: nix --print-build-logs build .#packages.${{ matrix.system }}.${{ matrix.package }}
- name: Prepare release artifact
if: startsWith(github.ref, 'refs/tags/')
- run: cp result/bin/mkv mkv-${{ matrix.system }}
+ run: cp result/bin/mkv mkv-${{ matrix.target }}
- - name: Create release
+ - name: Upload artifact
+ if: startsWith(github.ref, 'refs/tags/')
+ uses: actions/upload-artifact@v4
+ with:
+ name: mkv-${{ matrix.target }}
+ path: mkv-${{ matrix.target }}
+
+ build-windows:
+ name: Build x86_64-pc-windows-msvc
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: dtolnay/rust-toolchain@stable
+
+ - run: cargo build --release
+
+ - name: Prepare release artifact
if: startsWith(github.ref, 'refs/tags/')
+ run: cp target/release/mkv.exe mkv-x86_64-pc-windows-msvc.exe
+
+ - name: Upload artifact
+ if: startsWith(github.ref, 'refs/tags/')
+ uses: actions/upload-artifact@v4
+ with:
+ name: mkv-x86_64-pc-windows-msvc
+ path: mkv-x86_64-pc-windows-msvc.exe
+
+ release:
+ name: Create release
+ needs: [build-nix, build-windows]
+ runs-on: ubuntu-latest
+ if: startsWith(github.ref, 'refs/tags/')
+ steps:
+ - uses: actions/download-artifact@v4
+ with:
+ path: artifacts
+ merge-multiple: true
+
+ - name: Create release
uses: softprops/action-gh-release@v2
with:
- files: mkv-${{ matrix.system }}
+ files: artifacts/*
diff --git a/flake.nix b/flake.nix
@@ -12,14 +12,17 @@
darwinBuildInputs = pkgs.lib.optionals pkgs.stdenv.hostPlatform.isDarwin [
pkgs.libiconv
];
- mkv = pkgs.rustPlatform.buildRustPackage {
+ mkMkv = pkgs': pkgs'.rustPlatform.buildRustPackage {
pname = "mkv";
version = "0.1.0";
cargoLock.lockFile = ./Cargo.lock;
src = pkgs.lib.cleanSource ./.;
- buildInputs = darwinBuildInputs;
+ buildInputs = pkgs'.lib.optionals pkgs'.stdenv.hostPlatform.isDarwin [
+ pkgs'.libiconv
+ ];
doCheck = false;
};
+ mkv = mkMkv pkgs;
in
{
devShells.default = pkgs.mkShell {
@@ -33,5 +36,9 @@
packages.default = mkv;
checks.default = mkv.overrideAttrs { doCheck = true; };
}
+ // pkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux {
+ packages.x86_64-linux-musl = mkMkv pkgs.pkgsCross.musl64;
+ packages.aarch64-linux = mkMkv pkgs.pkgsCross.aarch64-multiplatform;
+ }
);
}