diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix b/nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix new file mode 100644 index 000000000000..f9abdee2d148 --- /dev/null +++ b/nixpkgs/pkgs/applications/science/math/scilab-bin/default.nix @@ -0,0 +1,104 @@ +{ stdenv, fetchurl, lib, xorg }: + +let + name = "scilab-bin-${ver}"; + + ver = "6.0.2"; + + badArch = throw "${name} requires i686-linux or x86_64-linux"; + + architecture = + if stdenv.hostPlatform.system == "i686-linux" then + "i686" + else if stdenv.hostPlatform.system == "x86_64-linux" then + "x86_64" + else + badArch; +in +stdenv.mkDerivation { + inherit name; + + src = fetchurl { + url = "https://www.scilab.org/download/${ver}/scilab-${ver}.bin.linux-${architecture}.tar.gz"; + sha256 = + if stdenv.hostPlatform.system == "i686-linux" then + "0fgjc2ak3b2qi6yin3fy50qwk2bcj0zbz1h4lyyic9n1n1qcliib" + else if stdenv.hostPlatform.system == "x86_64-linux" then + "05clcdgry90drirl3swbxn5q36fmgknnhs6h5pr7mmrzfr6r818w" + else + badArch; + }; + + libPath = lib.makeLibraryPath [ + stdenv.cc.cc + xorg.libX11 + xorg.libXext + xorg.libXi + xorg.libXrender + xorg.libXtst + xorg.libXxf86vm + ]; + + phases = [ "unpackPhase" "fixupPhase" "installPhase" ]; + + fixupPhase = '' + sed -i 's|\$(/bin/|$(|g' bin/scilab + sed -i 's|/usr/bin/||g' bin/scilab + + sci="$out/opt/scilab-${ver}" + fullLibPath="$sci/lib/scilab:$sci/lib/thirdparty:$libPath" + fullLibPath="$fullLibPath:$sci/lib/thirdparty/redist" + + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath "$fullLibPath" bin/scilab-bin + find . -name '*.so' -type f | while read file; do + patchelf --set-rpath "$fullLibPath" "$file" 2>/dev/null + done + ''; + + installPhase = '' + mkdir -p "$out/opt/scilab-${ver}" + cp -r . "$out/opt/scilab-${ver}/" + + # Create bin/ dir + mkdir "$out/bin" + + # Creating executable symlinks + ln -s "$out/opt/scilab-${ver}/bin/scilab" "$out/bin/scilab" + ln -s "$out/opt/scilab-${ver}/bin/scilab-cli" "$out/bin/scilab-cli" + ln -s "$out/opt/scilab-${ver}/bin/scilab-adv-cli" "$out/bin/scilab-adv-cli" + + # Creating desktop config dir + mkdir -p "$out/share/applications" + + # Moving desktop config files + mv $out/opt/scilab-${ver}/share/applications/*.desktop $out/share/applications + + # Fixing Exec paths and launching each app with a terminal + sed -i -e "s|Exec=|Exec=$out/opt/scilab-${ver}/bin/|g" \ + -e "s|Terminal=.*$|Terminal=true|g" $out/share/applications/*.desktop + + # Moving icons to the appropriate locations + for path in $out/opt/scilab-${ver}/share/icons/hicolor/*/*/* + do + newpath=$(echo $path | sed 's|/opt/scilab-${ver}||g') + filename=$(echo $path | sed 's|.*/||g') + dir=$(echo $newpath | sed "s|$filename||g") + mkdir -p $dir + mv $path $newpath + done + + # Removing emptied folders + rm -rf $out/opt/scilab-${ver}/share/{applications,icons} + + # Moving other share/ folders + mv $out/opt/scilab-${ver}/share/{appdata,locale,mime} $out/share + ''; + + meta = { + homepage = "http://www.scilab.org/"; + description = "Scientific software package for numerical computations (Matlab lookalike)"; + # see http://www.scilab.org/legal_notice + license = "Scilab"; + }; +} |