Unverified Commit ab324de2 authored by Atemu's avatar Atemu Committed by GitHub
Browse files

x16: adopt, fix build on GCC 14, modernize (#408332)

parents 10862bc5 0405671c
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -2,9 +2,11 @@
  lib,
  stdenv,
  fetchFromGitHub,
  fetchpatch2,
  SDL2,
  callPackage,
  zlib,
  nix-update-script,
}:

stdenv.mkDerivation (finalAttrs: {
@@ -14,10 +16,19 @@ stdenv.mkDerivation (finalAttrs: {
  src = fetchFromGitHub {
    owner = "X16Community";
    repo = "x16-emulator";
    rev = "r${finalAttrs.version}";
    tag = "r${finalAttrs.version}";
    hash = "sha256-E4TosRoORCWLotOIXROP9oqwqo1IRSa6X13GnmuxE9A=";
  };

  # Fix build on GCC 14
  # TODO: Remove for next release as it should already be included in upstream
  patches = [
    (fetchpatch2 {
      url = "https://github.com/X16Community/x16-emulator/commit/3da83c93d46a99635cf73a6f9fdcf1bd4a4ae04f.patch";
      hash = "sha256-DZItqq7B1lXZ6VFsQUdQKn0wt1HaX4ymq2pI2DamY3w=";
    })
  ];

  postPatch = ''
    substituteInPlace Makefile \
      --replace-fail '/bin/echo' 'echo'
@@ -48,14 +59,16 @@ stdenv.mkDerivation (finalAttrs: {
    run = (callPackage ./run.nix { }) {
      inherit (finalAttrs.finalPackage) emulator rom;
    };

    updateScript = nix-update-script { };
  };

  meta = {
    homepage = "https://cx16forum.com/";
    description = "Official emulator of CommanderX16 8-bit computer";
    changelog = "https://github.com/X16Community/x16-emulator/blob/r${finalAttrs.version}/RELEASES.md";
    changelog = "https://github.com/X16Community/x16-emulator/blob/${finalAttrs.src.rev}/RELEASES.md";
    license = lib.licenses.bsd2;
    maintainers = with lib.maintainers; [ ];
    maintainers = with lib.maintainers; [ pluiedev ];
    mainProgram = "x16emu";
    inherit (SDL2.meta) platforms;
    broken = stdenv.hostPlatform.isAarch64; # ofborg fails to compile it
+4 −2
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
  cc65,
  lzsa,
  python3,
  nix-update-script,
}:

stdenv.mkDerivation (finalAttrs: {
@@ -47,13 +48,14 @@ stdenv.mkDerivation (finalAttrs: {
    # upstream project recommends emulator and rom to be synchronized; passing
    # through the version is useful to ensure this
    inherit (finalAttrs) version;
    updateScript = nix-update-script { };
  };

  meta = {
    homepage = "https://github.com/X16Community/x16-rom";
    description = "ROM file for CommanderX16 8-bit computer";
    license = lib.licenses.bsd2;
    maintainers = with lib.maintainers; [ ];
    maintainers = with lib.maintainers; [ pluiedev ];
    inherit (cc65.meta) platforms;
    broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64;
  };
+5 −13
Original line number Diff line number Diff line
{
  runtimeShell,
  symlinkJoin,
  writeTextFile,
  writeShellScriptBin,
}:

{ emulator, rom }:
@@ -9,18 +9,10 @@
assert emulator.version == rom.version;

let
  runScript = writeTextFile {
    name = "run-x16";
    text = ''
      #!${runtimeShell}

  runScript = writeShellScriptBin "run-x16" ''
    defaultRom="${rom}/share/x16-rom/rom.bin"

    exec "${emulator}/bin/x16emu" -rom $defaultRom "$@"
  '';
    executable = true;
    destination = "/bin/run-x16";
  };
in
symlinkJoin {
  pname = "run-x16";