Unverified Commit 50895a47 authored by Artturin's avatar Artturin Committed by GitHub
Browse files

Merge pull request #310664 from JohnRTitor/dosbox

dosbox-staging: 0.80.1 -> 0.81.1
parents f6aad30d 1a0c12d4
Loading
Loading
Loading
Loading
+71 −123
Original line number Diff line number Diff line
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, SDL2
, SDL2_image
, SDL2_net
, alsa-lib
, copyDesktopItems
, darwin
, fluidsynth
, glib
, gtest
, iir1
, libGL
, libGLU
, libjack2
, libmt32emu
, libogg
, libpng
, libpulseaudio
, libslirp
, libsndfile
, makeDesktopItem
, makeWrapper
, meson
, ninja
, opusfile
, pkg-config
, speexdsp
{
  lib,
  stdenv,
  fetchFromGitHub,
  SDL2,
  SDL2_image,
  SDL2_net,
  alsa-lib,
  darwin,
  fluidsynth,
  glib,
  gtest,
  iir1,
  libGL,
  libGLU,
  libjack2,
  libmt32emu,
  libogg,
  libpng,
  zlib-ng,
  libpulseaudio,
  libslirp,
  libsndfile,
  makeWrapper,
  meson,
  ninja,
  opusfile,
  pkg-config,
  speexdsp,
  nix-update-script,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "dosbox-staging";
  version = "0.80.1";
  version = "0.81.1";

  src = fetchFromGitHub {
    owner = "dosbox-staging";
    repo = "dosbox-staging";
    rev = "v${finalAttrs.version}";
    hash = "sha256-I90poBeLSq1c8PXyjrx7/UcbfqFNnnNiXfJdWhLPGMc=";
    hash = "sha256-XGssEyX+AVv7/ixgGTRtPFjsUSX0FT0fhP+TXsFl2fY=";
  };

  patches = [
    # Pull missind SDL2_net dependency:
    #   https://github.com/dosbox-staging/dosbox-staging/pull/2358
    (fetchpatch {
      name = "sdl2-net.patch";
      url = "https://github.com/dosbox-staging/dosbox-staging/commit/1b02f187a39263f4b0285323dcfe184bccd749c2.patch";
      hash = "sha256-Ev97xApInu6r5wvI9Q7FhkSXqtMW/rwJj48fExvqnT0=";
    })

    # Pull missing SDL2_image dependency:
    #   https://github.com/dosbox-staging/dosbox-staging/pull/2239
    (fetchpatch {
      name = "sdl2-image.patch";
      url = "https://github.com/dosbox-staging/dosbox-staging/commit/ca8b7a906d29a3f8ce956c4af7dc829a6ac3e229.patch";
      hash = "sha256-WtTVSWWSlfXrdPVsnlDe4P5K/Fnj4QsOzx3Wo/Kusmg=";
      includes = [ "src/gui/meson.build" ];
    })
  ]
  # Pagesize detection via syscall; remove when next stable version arrives
  ++ [
    (fetchpatch {
      # Added as a parent commit of 7e20f6e
      # Fix ppc64le backend and 64K page size support (#2828)
      name = "meson-add-ppc64.patch";
      url = "https://github.com/dosbox-staging/dosbox-staging/commit/765bcc2b1d87050a4ea366bf22e1db075ad5660b.patch";
      hash = "sha256-RtkidyF7w6RrPmCKK4Bd+3FtAn/+/38xk2cl32+yzxw=";
      includes = [ "meson.build" ];
    })
    (fetchpatch {
      # Added as a parent commit of 7e20f6e
      # Account for debian powerpc prefix (instead of ppc)
      name = "meson-powerpc64le.patch";
      url = "https://github.com/dosbox-staging/dosbox-staging/commit/d44aa7441cd871ffac08974f22af7a735a839288.patch";
      hash = "sha256-oMZtfmB1CRlDWyXwEWc3XzC+XxKazXDgo+jUiNBoJDw=";
      includes = [ "meson.build" ];
    })
    (fetchpatch {
      # Added as a parent commit of 7e20f6e
      # Restore the PowerPC dynrec core to working order
      name = "meson-option-write-or-execute.patch";
      url = "https://github.com/dosbox-staging/dosbox-staging/commit/ef86642de390839afc77b2b591a6ea9ac43909b3.patch";
      hash = "sha256-htOKEaXRRy28XNMX/t6uFTBLCkTr7YPtfmI9UyIBiz4=";
      includes = [ "meson_options.txt" ];
    })
    (fetchpatch {
      # Use a system call to detect the page size
      name = "meson-detect-pagesize-by-syscall.patch";
      url = "https://github.com/dosbox-staging/dosbox-staging/commit/7e20f6e401956a7a308f1b3462294d7ac9fa5db8.patch";
      hash = "sha256-QW9lpHWCYSlQFgTqX/UxHAAWisz4wfPrdjLqROn/wR0=";
    })
  ];

  nativeBuildInputs = [
    copyDesktopItems
    gtest
    makeWrapper
    meson
@@ -102,7 +49,8 @@ stdenv.mkDerivation (finalAttrs: {
    pkg-config
  ];

  buildInputs = [
  buildInputs =
    [
      fluidsynth
      glib
      iir1
@@ -112,6 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
      libmt32emu
      libogg
      libpng
      zlib-ng
      libpulseaudio
      libslirp
      libsndfile
@@ -120,25 +69,20 @@ stdenv.mkDerivation (finalAttrs: {
      SDL2_image
      SDL2_net
      speexdsp
  ] ++ lib.optionals stdenv.isLinux [
    alsa-lib
  ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
    ]
    ++ lib.optionals stdenv.isLinux [ alsa-lib ]
    ++ lib.optionals stdenv.isDarwin (
      with darwin.apple_sdk.frameworks;
      [
        AudioUnit
        Carbon
        Cocoa
  ]);
      ]
    );

  desktopItems = [
    (makeDesktopItem {
      name = "dosbox-staging";
      exec = "dosbox-staging";
      icon = "dosbox-staging";
      comment = "x86 dos emulator enhanced";
      desktopName = "DosBox-Staging";
      genericName = "DOS emulator";
      categories = [ "Emulator" "Game" ];
    })
  ];
  postInstall = ''
    install -Dm644 $src/contrib/linux/dosbox-staging.desktop $out/share/applications/
  '';

  postFixup = ''
    # Rename binary, add a wrapper, and copy manual to avoid conflict with
@@ -154,6 +98,8 @@ stdenv.mkDerivation (finalAttrs: {
    popd
  '';

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

  meta = {
    homepage = "https://dosbox-staging.github.io/";
    description = "A modernized DOS emulator";
@@ -164,9 +110,11 @@ stdenv.mkDerivation (finalAttrs: {
      practices.
    '';
    license = lib.licenses.gpl2Plus;
    maintainers = with lib.maintainers; [ joshuafern AndersonTorres ];
    maintainers = with lib.maintainers; [
      joshuafern
      AndersonTorres
    ];
    platforms = lib.platforms.unix;
    priority = 101;
  };
})
# TODO: report upstream about not finding SDL2_net