dyalog: init at 18.2.45405
This commit is contained in:
8
pkgs/by-name/dy/dyalog/dyalogscript.patch
Normal file
8
pkgs/by-name/dy/dyalog/dyalogscript.patch
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
--- a/scriptbin/dyalogscript
|
||||||
|
+++ b/scriptbin/dyalogscript
|
||||||
|
@@ -5,1 +5,1 @@
|
||||||
|
-INSTALLDIR="/opt/mdyalog/18.2/64/unicode"
|
||||||
|
+INSTALLDIR="@installdir@"
|
||||||
|
@@ -40,1 +40,1 @@
|
||||||
|
-: ${SCRIPTDIR:=$INSTALLDIR}
|
||||||
|
+SCRIPTDIR="@scriptdir@"
|
||||||
31
pkgs/by-name/dy/dyalog/mapl.patch
Normal file
31
pkgs/by-name/dy/dyalog/mapl.patch
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
diff --git a/mapl b/mapl
|
||||||
|
index c9d3727..de24c77 100755
|
||||||
|
--- a/mapl
|
||||||
|
+++ b/mapl
|
||||||
|
@@ -20,26 +20,8 @@ SHORTVERSION=182U64
|
||||||
|
LONGVERSION="18.2 64-bit Unicode"
|
||||||
|
REL="`echo "${LONGVERSION}" | sed 's/ .*$//'`"
|
||||||
|
|
||||||
|
-# Find the Dyalog installation directory
|
||||||
|
-if [ "$(uname)" = Linux ]; then
|
||||||
|
- # this script location, canonical.
|
||||||
|
- THIS="$(readlink -f $0)"
|
||||||
|
-else
|
||||||
|
- # this script location.
|
||||||
|
- THIS="$0"
|
||||||
|
-fi
|
||||||
|
-export DYALOG=$(cd $(dirname $THIS) && pwd)
|
||||||
|
-
|
||||||
|
export APL_LANGUAGE_BAR_FILE=${DYALOG}/languagebar.json
|
||||||
|
|
||||||
|
-if [ "$(uname)" = Linux ]; then
|
||||||
|
- if [ "x" = "x${LD_LIBRARY_PATH}" ]; then
|
||||||
|
- export LD_LIBRARY_PATH="${DYALOG}"
|
||||||
|
- else
|
||||||
|
- export LD_LIBRARY_PATH="${DYALOG}:${LD_LIBRARY_PATH}"
|
||||||
|
- fi
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
# Setup the configuration directory
|
||||||
|
MYCONFIGDIR=${HOME}/.dyalog
|
||||||
|
if [ ! -d "${MYCONFIGDIR}" ] ; then
|
||||||
225
pkgs/by-name/dy/dyalog/package.nix
Normal file
225
pkgs/by-name/dy/dyalog/package.nix
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, fetchurl
|
||||||
|
|
||||||
|
, config
|
||||||
|
, acceptLicense ? config.dyalog.acceptLicense or false
|
||||||
|
|
||||||
|
, autoPatchelfHook
|
||||||
|
, dpkg
|
||||||
|
, makeWrapper
|
||||||
|
|
||||||
|
, copyDesktopItems
|
||||||
|
, makeDesktopItem
|
||||||
|
|
||||||
|
, glib
|
||||||
|
, ncurses5
|
||||||
|
|
||||||
|
, dotnet-sdk_6
|
||||||
|
, dotnetSupport ? false
|
||||||
|
|
||||||
|
, alsa-lib
|
||||||
|
, gtk2
|
||||||
|
, libXdamage
|
||||||
|
, libXtst
|
||||||
|
, libXScrnSaver
|
||||||
|
, nss
|
||||||
|
, htmlRendererSupport ? false
|
||||||
|
|
||||||
|
, R
|
||||||
|
, rPackages
|
||||||
|
, rSupport ? false
|
||||||
|
|
||||||
|
, unixODBC
|
||||||
|
, sqaplSupport ? false
|
||||||
|
|
||||||
|
, zeroFootprintRideSupport ? false
|
||||||
|
|
||||||
|
, enableDocs ? false
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
dyalogHome = "$out/lib/dyalog";
|
||||||
|
|
||||||
|
rscproxy = rPackages.buildRPackage {
|
||||||
|
name = "rscproxy";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Dyalog";
|
||||||
|
repo = "rscproxy";
|
||||||
|
rev = "31de3323fb8596ff5ecbf4bacd030e542cfd8133";
|
||||||
|
hash = "sha256-SVoBoAWUmQ+jWaTG7hdmyRq6By4RnmmgWZXoua19/Kg=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
makeWrapperArgs = [
|
||||||
|
"--set DYALOG ${dyalogHome}"
|
||||||
|
# also needs to be set when the `-script` flag is used
|
||||||
|
"--add-flags DYALOG=${dyalogHome}"
|
||||||
|
# needed for default user commands to work
|
||||||
|
"--add-flags SESSION_FILE=${dyalogHome}/default.dse"
|
||||||
|
]
|
||||||
|
++ lib.optionals dotnetSupport [
|
||||||
|
# needs to be set to run .NET Bridge
|
||||||
|
"--set DOTNET_ROOT ${dotnet-sdk_6}"
|
||||||
|
# .NET Bridge files are runtime dependencies, but cannot be patchelf'd
|
||||||
|
"--prefix LD_LIBRARY_PATH : ${dyalogHome}"
|
||||||
|
]
|
||||||
|
++ lib.optionals rSupport [
|
||||||
|
# RConnect resolves R from PATH
|
||||||
|
"--prefix PATH : ${R}/bin"
|
||||||
|
# RConnect uses `ldd` to find `libR.so`
|
||||||
|
"--prefix LD_LIBRARY_PATH : ${R}/lib/R/lib"
|
||||||
|
# RConnect uses `rscproxy` to communicate with R
|
||||||
|
"--prefix R_LIBS_SITE : ${rscproxy}/library"
|
||||||
|
];
|
||||||
|
|
||||||
|
licenseUrl = "https://www.dyalog.com/uploads/documents/Developer_Software_Licence.pdf";
|
||||||
|
|
||||||
|
licenseDisclaimer = ''
|
||||||
|
Dyalog is a licenced software. Dyalog licences do not include a licence to distribute Dyalog with your work.
|
||||||
|
For non-commercial purposes, a Basic Licence is granted when you accept the conditions and download a free copy of Dyalog.
|
||||||
|
|
||||||
|
More details about the license can be found here: ${licenseUrl}
|
||||||
|
|
||||||
|
If you agree to these terms, you can either override this package:
|
||||||
|
`dyalog.override { acceptLicense = true; }`
|
||||||
|
|
||||||
|
or you can set the following nixpkgs config option:
|
||||||
|
`config.dyalog.acceptLicense = true;`
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "dyalog";
|
||||||
|
version = "18.2.45405";
|
||||||
|
shortVersion = lib.versions.majorMinor finalAttrs.version;
|
||||||
|
|
||||||
|
src =
|
||||||
|
assert !acceptLicense -> throw licenseDisclaimer;
|
||||||
|
fetchurl {
|
||||||
|
url = "https://download.dyalog.com/download.php?file=${finalAttrs.shortVersion}/linux_64_${finalAttrs.version}_unicode.x86_64.deb";
|
||||||
|
sha256 = "sha256-pA/WGTA6YvwG4MgqbiPBLKSKPtLGQM7BzK6Bmyz5pmM=";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = [ "out" ] ++ lib.optional enableDocs "doc";
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
sourceRoot=$sourceRoot/opt/mdyalog/${finalAttrs.shortVersion}/64/unicode
|
||||||
|
'';
|
||||||
|
|
||||||
|
patches = [ ./dyalogscript.patch ./mapl.patch ];
|
||||||
|
|
||||||
|
postPatch = lib.optionalString dotnetSupport ''
|
||||||
|
# Patch to use .NET 6.0 instead of .NET Core 3.1 (can be removed when Dyalog 19.0 releases)
|
||||||
|
substituteInPlace Dyalog.Net.Bridge.*.json --replace "3.1" "6.0"
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoPatchelfHook
|
||||||
|
copyDesktopItems
|
||||||
|
dpkg
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
glib # Used by Conga and .NET Bridge
|
||||||
|
ncurses5 # Used by the dyalog binary
|
||||||
|
]
|
||||||
|
++ lib.optionals htmlRendererSupport [
|
||||||
|
alsa-lib
|
||||||
|
gtk2
|
||||||
|
libXdamage
|
||||||
|
libXtst
|
||||||
|
libXScrnSaver
|
||||||
|
nss
|
||||||
|
]
|
||||||
|
++ lib.optionals sqaplSupport [
|
||||||
|
unixODBC
|
||||||
|
];
|
||||||
|
|
||||||
|
# See which files are not really important: `https://github.com/Dyalog/DyalogDocker/blob/master/rmfiles.sh`
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p ${dyalogHome}
|
||||||
|
cp -r aplfmt aplkeys apltrans fonts Library PublicCACerts SALT StartupSession ${dyalogHome}
|
||||||
|
cp aplkeys.sh default.dse dyalog dyalog.rt dyalog.dcfg.template dyalog.ver.dcfg.template languagebar.json mapl startup.dyalog ${dyalogHome}
|
||||||
|
|
||||||
|
mkdir ${dyalogHome}/lib
|
||||||
|
cp lib/{conga34_64.so,dyalog64.so,libconga34ssl64.so} ${dyalogHome}/lib
|
||||||
|
|
||||||
|
# Only keep the most useful workspaces
|
||||||
|
mkdir ${dyalogHome}/ws
|
||||||
|
cp ws/{conga,dfns,isolate,loaddata,salt,sharpplot,util}.dws ${dyalogHome}/ws
|
||||||
|
''
|
||||||
|
+ lib.optionalString dotnetSupport ''
|
||||||
|
cp libnethost.so Dyalog.Net.Bridge.* ${dyalogHome}
|
||||||
|
''
|
||||||
|
+ lib.optionalString htmlRendererSupport ''
|
||||||
|
cp -r locales swiftshader ${dyalogHome}
|
||||||
|
cp libcef.so libEGL.so libGLESv2.so chrome-sandbox natives_blob.bin snapshot_blob.bin icudtl.dat v8_context_snapshot.bin *.pak ${dyalogHome}
|
||||||
|
cp lib/htmlrenderer.so ${dyalogHome}/lib
|
||||||
|
''
|
||||||
|
+ lib.optionalString rSupport ''
|
||||||
|
cp ws/rconnect.dws ${dyalogHome}/ws
|
||||||
|
''
|
||||||
|
+ lib.optionalString sqaplSupport ''
|
||||||
|
cp lib/cxdya64u64u.so ${dyalogHome}/lib
|
||||||
|
cp ws/sqapl.dws ${dyalogHome}/ws
|
||||||
|
cp odbc.ini.sample sqapl.err sqapl.ini ${dyalogHome}
|
||||||
|
''
|
||||||
|
+ lib.optionalString zeroFootprintRideSupport ''
|
||||||
|
cp -r RIDEapp ${dyalogHome}
|
||||||
|
''
|
||||||
|
+ lib.optionalString enableDocs ''
|
||||||
|
mkdir -p $doc/share/doc/dyalog
|
||||||
|
cp -r help/* $doc/share/doc/dyalog
|
||||||
|
ln -s $doc/share/doc/dyalog ${dyalogHome}/help
|
||||||
|
''
|
||||||
|
+ ''
|
||||||
|
install -Dm644 dyalog.svg $out/share/icons/hicolor/scalable/apps/dyalog.svg
|
||||||
|
|
||||||
|
makeWrapper ${dyalogHome}/dyalog $out/bin/dyalog ${lib.concatStringsSep " " makeWrapperArgs}
|
||||||
|
makeWrapper ${dyalogHome}/mapl $out/bin/mapl ${lib.concatStringsSep " " makeWrapperArgs}
|
||||||
|
|
||||||
|
install -Dm755 scriptbin/dyalogscript $out/bin/dyalogscript
|
||||||
|
substituteInPlace $out/bin/dyalogscript \
|
||||||
|
--subst-var-by installdir ${dyalogHome} \
|
||||||
|
--subst-var-by scriptdir $out/bin
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
preFixup = lib.optionalString htmlRendererSupport ''
|
||||||
|
# `libudev.so` is a runtime dependency of CEF
|
||||||
|
patchelf ${dyalogHome}/libcef.so --add-needed libudev.so
|
||||||
|
'';
|
||||||
|
|
||||||
|
desktopItems = [
|
||||||
|
(makeDesktopItem {
|
||||||
|
name = "dyalog";
|
||||||
|
desktopName = "Dyalog";
|
||||||
|
exec = finalAttrs.meta.mainProgram;
|
||||||
|
comment = finalAttrs.meta.description;
|
||||||
|
icon = "dyalog";
|
||||||
|
categories = [ "Development" ];
|
||||||
|
genericName = "APL interpreter";
|
||||||
|
terminal = true;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
changelog = "https://dyalog.com/dyalog/dyalog-versions/${lib.replaceStrings [ "." ] [ "" ] finalAttrs.shortVersion}.htm";
|
||||||
|
description = "The Dyalog APL interpreter";
|
||||||
|
homepage = "https://www.dyalog.com";
|
||||||
|
license = {
|
||||||
|
fullName = "Dyalog License";
|
||||||
|
url = licenseUrl;
|
||||||
|
free = false;
|
||||||
|
};
|
||||||
|
mainProgram = "dyalog";
|
||||||
|
maintainers = with lib.maintainers; [ tomasajt markus1189 ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||||
|
};
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user