diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/mozart/binary.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/mozart/binary.nix | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/mozart/binary.nix b/nixpkgs/pkgs/development/compilers/mozart/binary.nix new file mode 100644 index 000000000000..ef6cd1160b33 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/mozart/binary.nix @@ -0,0 +1,79 @@ +{ stdenv, fetchurl, makeWrapper +, boost, gmp +, tcl-8_5, tk-8_5 +, emacs +}: + +let + version = "2.0.0"; + + binaries = { + "x86_64-linux" = fetchurl { + url = "mirror://sourceforge/project/mozart-oz/v${version}-alpha.0/mozart2-${version}-alpha.0+build.4105.5c06ced-x86_64-linux.tar.gz"; + sha256 = "0rsfrjimjxqbwprpzzlmydl3z3aiwg5qkb052jixdxjyad7gyh5z"; + }; + }; +in + +stdenv.mkDerivation { + name = "mozart-binary-${version}"; + + preferLocalBuild = true; + + src = binaries."${stdenv.hostPlatform.system}" or (throw "unsupported system: ${stdenv.hostPlatform.system}"); + + libPath = stdenv.lib.makeLibraryPath + [ stdenv.cc.cc + boost + gmp + tcl-8_5 + tk-8_5 + ]; + + TK_LIBRARY = "${tk-8_5}/lib/tk8.5"; + + buildInputs = [ makeWrapper ]; + + buildCommand = '' + mkdir $out + tar xvf $src -C $out --strip-components=1 + + for exe in $out/bin/{ozemulator,ozwish} ; do + patchelf --set-interpreter $(< $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath $libPath \ + $exe + done + + wrapProgram $out/bin/ozwish \ + --set OZHOME $out \ + --set TK_LIBRARY $TK_LIBRARY + + wrapProgram $out/bin/ozemulator --set OZHOME $out + + ${stdenv.lib.optionalString (emacs != null) '' + wrapProgram $out/bin/oz --suffix PATH ":" ${stdenv.lib.makeBinPath [ emacs ]} + ''} + + sed -i $out/share/applications/oz.desktop \ + -e "s,Exec=oz %u,Exec=$out/bin/oz %u," + + gzip -9n $out/share/mozart/elisp"/"*.elc + + patchShebangs $out + ''; + + meta = with stdenv.lib; { + homepage = http://www.mozart-oz.org/; + description = "Multiplatform implementation of the Oz programming language"; + longDescription = '' + The Mozart Programming System combines ongoing research in + programming language design and implementation, constraint logic + programming, distributed computing, and human-computer + interfaces. Mozart implements the Oz language and provides both + expressive power and advanced functionality. + ''; + license = licenses.mit; + platforms = attrNames binaries; + hydraPlatforms = []; + }; +} |