lol

Merge pull request #250397 from TomaSajt/dyalog

dyalog: init at 18.2.45405

authored by

Weijia Wang and committed by
GitHub
67dc6203 b6e03193

+264
+8
pkgs/by-name/dy/dyalog/dyalogscript.patch
··· 1 + --- a/scriptbin/dyalogscript 2 + +++ b/scriptbin/dyalogscript 3 + @@ -5,1 +5,1 @@ 4 + -INSTALLDIR="/opt/mdyalog/18.2/64/unicode" 5 + +INSTALLDIR="@installdir@" 6 + @@ -40,1 +40,1 @@ 7 + -: ${SCRIPTDIR:=$INSTALLDIR} 8 + +SCRIPTDIR="@scriptdir@"
+31
pkgs/by-name/dy/dyalog/mapl.patch
··· 1 + diff --git a/mapl b/mapl 2 + index c9d3727..de24c77 100755 3 + --- a/mapl 4 + +++ b/mapl 5 + @@ -20,26 +20,8 @@ SHORTVERSION=182U64 6 + LONGVERSION="18.2 64-bit Unicode" 7 + REL="`echo "${LONGVERSION}" | sed 's/ .*$//'`" 8 + 9 + -# Find the Dyalog installation directory 10 + -if [ "$(uname)" = Linux ]; then 11 + - # this script location, canonical. 12 + - THIS="$(readlink -f $0)" 13 + -else 14 + - # this script location. 15 + - THIS="$0" 16 + -fi 17 + -export DYALOG=$(cd $(dirname $THIS) && pwd) 18 + - 19 + export APL_LANGUAGE_BAR_FILE=${DYALOG}/languagebar.json 20 + 21 + -if [ "$(uname)" = Linux ]; then 22 + - if [ "x" = "x${LD_LIBRARY_PATH}" ]; then 23 + - export LD_LIBRARY_PATH="${DYALOG}" 24 + - else 25 + - export LD_LIBRARY_PATH="${DYALOG}:${LD_LIBRARY_PATH}" 26 + - fi 27 + -fi 28 + - 29 + # Setup the configuration directory 30 + MYCONFIGDIR=${HOME}/.dyalog 31 + if [ ! -d "${MYCONFIGDIR}" ] ; then
+225
pkgs/by-name/dy/dyalog/package.nix
··· 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + , fetchurl 5 + 6 + , config 7 + , acceptLicense ? config.dyalog.acceptLicense or false 8 + 9 + , autoPatchelfHook 10 + , dpkg 11 + , makeWrapper 12 + 13 + , copyDesktopItems 14 + , makeDesktopItem 15 + 16 + , glib 17 + , ncurses5 18 + 19 + , dotnet-sdk_6 20 + , dotnetSupport ? false 21 + 22 + , alsa-lib 23 + , gtk2 24 + , libXdamage 25 + , libXtst 26 + , libXScrnSaver 27 + , nss 28 + , htmlRendererSupport ? false 29 + 30 + , R 31 + , rPackages 32 + , rSupport ? false 33 + 34 + , unixODBC 35 + , sqaplSupport ? false 36 + 37 + , zeroFootprintRideSupport ? false 38 + 39 + , enableDocs ? false 40 + }: 41 + 42 + let 43 + dyalogHome = "$out/lib/dyalog"; 44 + 45 + rscproxy = rPackages.buildRPackage { 46 + name = "rscproxy"; 47 + src = fetchFromGitHub { 48 + owner = "Dyalog"; 49 + repo = "rscproxy"; 50 + rev = "31de3323fb8596ff5ecbf4bacd030e542cfd8133"; 51 + hash = "sha256-SVoBoAWUmQ+jWaTG7hdmyRq6By4RnmmgWZXoua19/Kg="; 52 + }; 53 + }; 54 + 55 + makeWrapperArgs = [ 56 + "--set DYALOG ${dyalogHome}" 57 + # also needs to be set when the `-script` flag is used 58 + "--add-flags DYALOG=${dyalogHome}" 59 + # needed for default user commands to work 60 + "--add-flags SESSION_FILE=${dyalogHome}/default.dse" 61 + ] 62 + ++ lib.optionals dotnetSupport [ 63 + # needs to be set to run .NET Bridge 64 + "--set DOTNET_ROOT ${dotnet-sdk_6}" 65 + # .NET Bridge files are runtime dependencies, but cannot be patchelf'd 66 + "--prefix LD_LIBRARY_PATH : ${dyalogHome}" 67 + ] 68 + ++ lib.optionals rSupport [ 69 + # RConnect resolves R from PATH 70 + "--prefix PATH : ${R}/bin" 71 + # RConnect uses `ldd` to find `libR.so` 72 + "--prefix LD_LIBRARY_PATH : ${R}/lib/R/lib" 73 + # RConnect uses `rscproxy` to communicate with R 74 + "--prefix R_LIBS_SITE : ${rscproxy}/library" 75 + ]; 76 + 77 + licenseUrl = "https://www.dyalog.com/uploads/documents/Developer_Software_Licence.pdf"; 78 + 79 + licenseDisclaimer = '' 80 + Dyalog is a licenced software. Dyalog licences do not include a licence to distribute Dyalog with your work. 81 + For non-commercial purposes, a Basic Licence is granted when you accept the conditions and download a free copy of Dyalog. 82 + 83 + More details about the license can be found here: ${licenseUrl} 84 + 85 + If you agree to these terms, you can either override this package: 86 + `dyalog.override { acceptLicense = true; }` 87 + 88 + or you can set the following nixpkgs config option: 89 + `config.dyalog.acceptLicense = true;` 90 + ''; 91 + in 92 + stdenv.mkDerivation (finalAttrs: { 93 + pname = "dyalog"; 94 + version = "18.2.45405"; 95 + shortVersion = lib.versions.majorMinor finalAttrs.version; 96 + 97 + src = 98 + assert !acceptLicense -> throw licenseDisclaimer; 99 + fetchurl { 100 + url = "https://download.dyalog.com/download.php?file=${finalAttrs.shortVersion}/linux_64_${finalAttrs.version}_unicode.x86_64.deb"; 101 + sha256 = "sha256-pA/WGTA6YvwG4MgqbiPBLKSKPtLGQM7BzK6Bmyz5pmM="; 102 + }; 103 + 104 + outputs = [ "out" ] ++ lib.optional enableDocs "doc"; 105 + 106 + postUnpack = '' 107 + sourceRoot=$sourceRoot/opt/mdyalog/${finalAttrs.shortVersion}/64/unicode 108 + ''; 109 + 110 + patches = [ ./dyalogscript.patch ./mapl.patch ]; 111 + 112 + postPatch = lib.optionalString dotnetSupport '' 113 + # Patch to use .NET 6.0 instead of .NET Core 3.1 (can be removed when Dyalog 19.0 releases) 114 + substituteInPlace Dyalog.Net.Bridge.*.json --replace "3.1" "6.0" 115 + ''; 116 + 117 + nativeBuildInputs = [ 118 + autoPatchelfHook 119 + copyDesktopItems 120 + dpkg 121 + makeWrapper 122 + ]; 123 + 124 + buildInputs = [ 125 + glib # Used by Conga and .NET Bridge 126 + ncurses5 # Used by the dyalog binary 127 + ] 128 + ++ lib.optionals htmlRendererSupport [ 129 + alsa-lib 130 + gtk2 131 + libXdamage 132 + libXtst 133 + libXScrnSaver 134 + nss 135 + ] 136 + ++ lib.optionals sqaplSupport [ 137 + unixODBC 138 + ]; 139 + 140 + # See which files are not really important: `https://github.com/Dyalog/DyalogDocker/blob/master/rmfiles.sh` 141 + installPhase = '' 142 + runHook preInstall 143 + 144 + mkdir -p ${dyalogHome} 145 + cp -r aplfmt aplkeys apltrans fonts Library PublicCACerts SALT StartupSession ${dyalogHome} 146 + cp aplkeys.sh default.dse dyalog dyalog.rt dyalog.dcfg.template dyalog.ver.dcfg.template languagebar.json mapl startup.dyalog ${dyalogHome} 147 + 148 + mkdir ${dyalogHome}/lib 149 + cp lib/{conga34_64.so,dyalog64.so,libconga34ssl64.so} ${dyalogHome}/lib 150 + 151 + # Only keep the most useful workspaces 152 + mkdir ${dyalogHome}/ws 153 + cp ws/{conga,dfns,isolate,loaddata,salt,sharpplot,util}.dws ${dyalogHome}/ws 154 + '' 155 + + lib.optionalString dotnetSupport '' 156 + cp libnethost.so Dyalog.Net.Bridge.* ${dyalogHome} 157 + '' 158 + + lib.optionalString htmlRendererSupport '' 159 + cp -r locales swiftshader ${dyalogHome} 160 + cp libcef.so libEGL.so libGLESv2.so chrome-sandbox natives_blob.bin snapshot_blob.bin icudtl.dat v8_context_snapshot.bin *.pak ${dyalogHome} 161 + cp lib/htmlrenderer.so ${dyalogHome}/lib 162 + '' 163 + + lib.optionalString rSupport '' 164 + cp ws/rconnect.dws ${dyalogHome}/ws 165 + '' 166 + + lib.optionalString sqaplSupport '' 167 + cp lib/cxdya64u64u.so ${dyalogHome}/lib 168 + cp ws/sqapl.dws ${dyalogHome}/ws 169 + cp odbc.ini.sample sqapl.err sqapl.ini ${dyalogHome} 170 + '' 171 + + lib.optionalString zeroFootprintRideSupport '' 172 + cp -r RIDEapp ${dyalogHome} 173 + '' 174 + + lib.optionalString enableDocs '' 175 + mkdir -p $doc/share/doc/dyalog 176 + cp -r help/* $doc/share/doc/dyalog 177 + ln -s $doc/share/doc/dyalog ${dyalogHome}/help 178 + '' 179 + + '' 180 + install -Dm644 dyalog.svg $out/share/icons/hicolor/scalable/apps/dyalog.svg 181 + 182 + makeWrapper ${dyalogHome}/dyalog $out/bin/dyalog ${lib.concatStringsSep " " makeWrapperArgs} 183 + makeWrapper ${dyalogHome}/mapl $out/bin/mapl ${lib.concatStringsSep " " makeWrapperArgs} 184 + 185 + install -Dm755 scriptbin/dyalogscript $out/bin/dyalogscript 186 + substituteInPlace $out/bin/dyalogscript \ 187 + --subst-var-by installdir ${dyalogHome} \ 188 + --subst-var-by scriptdir $out/bin 189 + 190 + runHook postInstall 191 + ''; 192 + 193 + preFixup = lib.optionalString htmlRendererSupport '' 194 + # `libudev.so` is a runtime dependency of CEF 195 + patchelf ${dyalogHome}/libcef.so --add-needed libudev.so 196 + ''; 197 + 198 + desktopItems = [ 199 + (makeDesktopItem { 200 + name = "dyalog"; 201 + desktopName = "Dyalog"; 202 + exec = finalAttrs.meta.mainProgram; 203 + comment = finalAttrs.meta.description; 204 + icon = "dyalog"; 205 + categories = [ "Development" ]; 206 + genericName = "APL interpreter"; 207 + terminal = true; 208 + }) 209 + ]; 210 + 211 + meta = { 212 + changelog = "https://dyalog.com/dyalog/dyalog-versions/${lib.replaceStrings [ "." ] [ "" ] finalAttrs.shortVersion}.htm"; 213 + description = "The Dyalog APL interpreter"; 214 + homepage = "https://www.dyalog.com"; 215 + license = { 216 + fullName = "Dyalog License"; 217 + url = licenseUrl; 218 + free = false; 219 + }; 220 + mainProgram = "dyalog"; 221 + maintainers = with lib.maintainers; [ tomasajt markus1189 ]; 222 + platforms = [ "x86_64-linux" ]; 223 + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; 224 + }; 225 + })