summary refs log tree commit diff
path: root/pkgs/applications/virtualization/bochs/default.nix
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@protonmail.com>2021-06-28 01:03:36 -0300
committerAndersonTorres <torres.anderson.85@protonmail.com>2021-06-28 01:04:53 -0300
commit31487e434b317195d22e2e9b4810a46285df0782 (patch)
tree83d3617f0701abb85bd40e41768511b1df6dc25f /pkgs/applications/virtualization/bochs/default.nix
parentbb62664a1a5c8e35842d58504a9aa31abadad336 (diff)
downloadnixpkgs-31487e434b317195d22e2e9b4810a46285df0782.tar
nixpkgs-31487e434b317195d22e2e9b4810a46285df0782.tar.gz
nixpkgs-31487e434b317195d22e2e9b4810a46285df0782.tar.bz2
nixpkgs-31487e434b317195d22e2e9b4810a46285df0782.tar.lz
nixpkgs-31487e434b317195d22e2e9b4810a46285df0782.tar.xz
nixpkgs-31487e434b317195d22e2e9b4810a46285df0782.tar.zst
nixpkgs-31487e434b317195d22e2e9b4810a46285df0782.zip
bochs: refactor and prepare it for next release
Diffstat (limited to 'pkgs/applications/virtualization/bochs/default.nix')
-rw-r--r--pkgs/applications/virtualization/bochs/default.nix157
1 files changed, 87 insertions, 70 deletions
diff --git a/pkgs/applications/virtualization/bochs/default.nix b/pkgs/applications/virtualization/bochs/default.nix
index 3a8e9dc0bee..e614b3da2b0 100644
--- a/pkgs/applications/virtualization/bochs/default.nix
+++ b/pkgs/applications/virtualization/bochs/default.nix
@@ -1,23 +1,24 @@
-{ lib, stdenv, fetchurl
-, pkg-config, libtool
-, gtk2, libGLU, libGL, readline, libX11, libXpm
-, docbook_xml_dtd_45, docbook_xsl
-, sdlSupport ? true, SDL2 ? null
-, termSupport ? true, ncurses ? null
-, wxSupport ? true, wxGTK ? null
-, wgetSupport ? false, wget ? null
-, curlSupport ? false, curl ? null
+{ lib
+, stdenv
+, fetchurl
+, SDL2
+, curl
+, docbook_xml_dtd_45
+, docbook_xsl
+, gtk2
+, libGL
+, libGLU
+, libX11
+, libXpm
+, libtool
+, ncurses
+, pkg-config
+, readline
+, wget
+, wxGTK
 }:
 
-assert sdlSupport -> (SDL2 != null);
-assert termSupport -> (ncurses != null);
-assert wxSupport -> (gtk2 != null && wxGTK != null);
-assert wgetSupport -> (wget != null);
-assert curlSupport -> (curl != null);
-
-with lib;
 stdenv.mkDerivation rec {
-
   pname = "bochs";
   version = "2.6.11";
 
@@ -27,18 +28,33 @@ stdenv.mkDerivation rec {
   };
 
   patches = [
+    # A flip between two lines of code, in order to compile with GLIBC 2.26
     ./bochs-2.6.11-glibc-2.26.patch
-    ./fix-build-smp.patch
+    # Fix compilation for MSYS2 GCC 10; remove it when the next version arrives
     ./bochs_fix_narrowing_conv_warning.patch
+    # SMP-enabled configs; remove it when the next version arrives
+    ./fix-build-smp.patch
   ];
 
-  buildInputs =
-  [ pkg-config libtool gtk2 libGLU libGL readline libX11 libXpm docbook_xml_dtd_45 docbook_xsl ]
-  ++ optionals termSupport [ ncurses ]
-  ++ optionals sdlSupport [ SDL2 ]
-  ++ optionals wxSupport [ wxGTK ]
-  ++ optionals wgetSupport [ wget ]
-  ++ optionals curlSupport [ curl ];
+  nativeBuildInputs = [
+    docbook_xml_dtd_45
+    docbook_xsl
+    pkg-config
+  ];
+  buildInputs = [
+    SDL2
+    curl
+    gtk2
+    libGL
+    libtool
+    libGLU
+    libX11
+    libXpm
+    ncurses
+    readline
+    wget
+    wxGTK
+  ];
 
   configureFlags = [
     "--with-x=yes"
@@ -64,49 +80,51 @@ stdenv.mkDerivation rec {
     # Dangerous options - they are marked as "incomplete/experimental" on Bochs documentation
     "--enable-3dnow=no"
     "--enable-monitor-mwait=no"
-    "--enable-raw-serial=no" ]
-    # Boolean flags
-    ++ optionals termSupport [ "--with-term" ]
-    ++ optionals sdlSupport [ "--with-sdl2" ]
-    ++ optionals wxSupport [ "--with-wx" ]
+    "--enable-raw-serial=no"
+
     # These are completely configurable, and they don't depend of external tools
-    ++ [ "--enable-cpu-level=6" # from 3 to 6
-         "--enable-largefile"
-         "--enable-idle-hack"
-         "--enable-plugins=no" # Plugins are a bit buggy in Bochs
-         "--enable-a20-pin"
-         "--enable-x86-64"
-         "--enable-smp"
-         "--enable-large-ramfile"
-         "--enable-repeat-speedups"
-         "--enable-handlers-chaining"
-         "--enable-trace-linking"
-         "--enable-configurable-msrs"
-         "--enable-show-ips"
-         "--enable-debugger" #conflicts with gdb-stub option
-         "--enable-disasm"
-         "--enable-debugger-gui"
-         "--enable-gdb-stub=no" # conflicts with debugger option
-         "--enable-iodebug"
-         "--enable-fpu"
-         "--enable-svm"
-         "--enable-avx"
-         "--enable-evex"
-         "--enable-x86-debugger"
-         "--enable-pci"
-         "--enable-usb"
-         "--enable-usb-ohci"
-         "--enable-usb-ehci"
-         "--enable-usb-xhci"
-         "--enable-ne2000"
-         "--enable-pnic"
-         "--enable-e1000"
-         "--enable-clgd54xx"
-         "--enable-voodoo"
-         "--enable-cdrom"
-         "--enable-sb16"
-         "--enable-es1370"
-         "--enable-busmouse" ];
+    "--enable-a20-pin"
+    "--enable-avx"
+    "--enable-busmouse"
+    "--enable-cdrom"
+    "--enable-clgd54xx"
+    "--enable-configurable-msrs"
+    "--enable-cpu-level=6" # from 3 to 6
+    "--enable-debugger" #conflicts with gdb-stub option
+    "--enable-debugger-gui"
+    "--enable-disasm"
+    "--enable-e1000"
+    "--enable-es1370"
+    "--enable-evex"
+    "--enable-fpu"
+    "--enable-gdb-stub=no" # conflicts with debugger option
+    "--enable-handlers-chaining"
+    "--enable-idle-hack"
+    "--enable-iodebug"
+    "--enable-large-ramfile"
+    "--enable-largefile"
+    "--enable-ne2000"
+    "--enable-pci"
+    "--enable-plugins=no" # Plugins are a bit buggy in Bochs
+    "--enable-pnic"
+    "--enable-repeat-speedups"
+    "--enable-sb16"
+    "--enable-show-ips"
+    "--enable-smp"
+    "--enable-svm"
+    "--enable-trace-linking"
+    "--enable-usb"
+    "--enable-usb-ehci"
+    "--enable-usb-ohci"
+    "--enable-usb-xhci"
+    "--enable-voodoo"
+    "--enable-x86-64"
+    "--enable-x86-debugger"
+  ]
+  # Boolean flags
+  ++ lib.optionals (SDL2 != null) [ "--with-sdl2" ]
+  ++ lib.optionals (ncurses != null) [ "--with-term" ]
+  ++ lib.optionals (gtk2 != null && wxGTK != null) [ "--with-wx" ];
 
   NIX_CFLAGS_COMPILE="-I${gtk2.dev}/include/gtk-2.0/ -I${libtool}/include/";
   NIX_LDFLAGS="-L${libtool.lib}/lib";
@@ -115,19 +133,18 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with lib; {
+    homepage = "http://bochs.sourceforge.io/";
     description = "An open-source IA-32 (x86) PC emulator";
     longDescription = ''
       Bochs is an open-source (LGPL), highly portable IA-32 PC emulator, written
       in C++, that runs on most popular platforms. It includes emulation of the
       Intel x86 CPU, common I/O devices, and a custom BIOS.
     '';
-    homepage = "http://bochs.sourceforge.net/";
     license = licenses.lgpl2Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.unix;
   };
 }
 # TODO: plugins
-# TODO: svga support - the Bochs sources explicitly cite /usr/include/vga.h
 # TODO: a better way to organize the options