about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/compilers/open-watcom-bin/default.nix67
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 69 insertions, 0 deletions
diff --git a/pkgs/development/compilers/open-watcom-bin/default.nix b/pkgs/development/compilers/open-watcom-bin/default.nix
new file mode 100644
index 000000000000..0cd80b6e1df3
--- /dev/null
+++ b/pkgs/development/compilers/open-watcom-bin/default.nix
@@ -0,0 +1,67 @@
+{ stdenvNoCC, fetchurl, qemu, expect, writeScript, ncurses }:
+
+let
+
+  # We execute the installer in qemu-user, because otherwise the
+  # installer fails to open itself due to a failed stat() call. This
+  # seems like an incompatibility of new Linux kernels to run this
+  # ancient binary.
+  performInstall = writeScript "perform-ow-install" ''
+    #!${expect}/bin/expect -f
+
+    spawn env TERMINFO=${ncurses}/share/terminfo TERM=vt100 ${qemu}/bin/qemu-i386 [lindex $argv 0]
+
+    # Wait for button saying "I agree" with escape sequences.
+    expect "gree"
+
+    # Navigate to "I Agree!" and hit enter.
+    send "\t\t\n"
+
+    expect "Install Open Watcom"
+
+    # Where do we want to install to.
+    send "$env(out)\n"
+
+    expect "will be installed"
+
+    # Select Full Installation, Next
+    send "fn"
+
+    expect "Setup will now copy"
+
+    # Next
+    send "n"
+
+    expect "completed successfully"
+    send "\n"
+  '';
+
+in
+stdenvNoCC.mkDerivation rec {
+  pname = "open-watcom-bin";
+  version = "1.9";
+
+  src = fetchurl {
+    url = "http://ftp.openwatcom.org/install/open-watcom-c-linux-${version}";
+    sha256 = "1wzkvc6ija0cjj5mcyjng5b7hnnc5axidz030c0jh05pgvi4nj7p";
+  };
+
+  dontUnpack = true;
+  dontBuild = true;
+  dontConfigure = true;
+
+  installPhase = ''
+    cp ${src} install-bin
+    chmod +x install-bin
+
+    ${performInstall} install-bin
+  '';
+
+  meta = with stdenvNoCC.lib; {
+    description = "A C/C++ Compiler (binary distribution)";
+    homepage = "http://www.openwatcom.org/";
+    license = licenses.watcom;
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    maintainers = [ maintainers.blitz ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f182b6d250cf..16962f5996fa 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8996,6 +8996,8 @@ in
     inherit (ocaml-ng.ocamlPackages_4_05) ocaml;
   };
 
+  open-watcom-bin = callPackage ../development/compilers/open-watcom-bin { };
+
   pforth = callPackage ../development/compilers/pforth {};
 
   picat = callPackage ../development/compilers/picat { };