wolframresearch / wolfram-app-discovery-rs Goto Github PK
View Code? Open in Web Editor NEWLocate local installations of the Wolfram Language.
License: Apache License 2.0
Locate local installations of the Wolfram Language.
License: Apache License 2.0
I tried using this on our local cluster (Linux), which provides several different Mathematica versions via modules. I tried it with Mathematica 12.3 (which happened to be the most recent version available).
It was initially unable to find the installation:
$ wolfram-app-discovery default
warning: error looking for Wolfram apps in '/usr/local/Wolfram': No such file or directory (os error 2)
warning: error looking for Wolfram apps in '/opt/Wolfram': No such file or directory (os error 2)
Error: Error(Undiscoverable { resource: "default Wolfram Language installation", environment_variable: Some("WOLFRAM_APP_DIRECTORY") })
this is despite the binary directory being in the PATH. For example:
WolframKernel -noprompt -run "WriteString[\$Output,\$InstallationDirectory];Exit[]"
gives me the correct directory.
I then set the WOLFRAM_APP_DIRECTORY
environment variable. This then gave the following error:
$ wolfram-app-discovery default
Error: Error(Other("Unable to determine Wolfram app type from LICENSE.txt: first line was: \"Wolfram Mathematica License Agreement\""))
OS: Pop!_OS 22.04
Wolfram products: Mathematica 13.1 and 12.0
Issue:
WolframApp::try_default() returns an Error on Linux and Other operating systems when try_wolframscript_installation_directory() is successful because WolframApp::from_installation_directory(dir) errors for these system types. This is incorrect behavior, since wolframscript is discoverable on $PATH thus wolfram_app_discovery::discover_with_filter should be given a chance to locate it.
I am working on a Pull Request that will add minimal extra logic within try_default() to solve the problem.
Using Wolfram Engine installed by Homebrew (brew install --cask wolfram-engine
), I get the following error:
thread 'main' panicked at 'wolframscript exited with non-success status code: exit status: 255', src/lib.rs:1218:9
stack backtrace:
0: 0x100d01ec6 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h0a1c410dd2eebc30
1: 0x100d1a1ba - core::fmt::write::hfa389e524187f2c6
2: 0x100cff2fc - std::io::Write::write_fmt::h366bfde824bc90c5
3: 0x100d01caa - std::sys_common::backtrace::print::hc90b083c930997af
4: 0x100d03313 - std::panicking::default_hook::{{closure}}::h75efc5c6aebec0e0
5: 0x100d03068 - std::panicking::default_hook::hc8ee2f0ee4fbe744
6: 0x100d03a4f - std::panicking::rust_panic_with_hook::h479ead1480e59d8d
7: 0x100d03814 - std::panicking::begin_panic_handler::{{closure}}::h69ffc77690b7f126
8: 0x100d02368 - std::sys_common::backtrace::__rust_end_short_backtrace::h7fbeef7420a96564
9: 0x100d034dd - _rust_begin_unwind
10: 0x100d23283 - core::panicking::panic_fmt::h9b5d807e24bcaaed
11: 0x100c8e6a7 - wolfram_app_discovery::WolframApp::try_default_with_filter::hef1227a40160ade8
12: 0x100c7169f - wolfram_app_discovery::main::haa4810c74479aee4
13: 0x100c6d72b - std::sys_common::backtrace::__rust_begin_short_backtrace::hb68d3b8234a767b2
14: 0x100c7ad4b - std::rt::lang_start::{{closure}}::h6b6f4c676d08f646
15: 0x100cfa680 - std::rt::lang_start_internal::h72dc55d09e0a2397
16: 0x100c76e3c - _main
https://github.com/JuliaInterop/MathLink.jl/actions/runs/4635530121/jobs/8202662463#step:7:89
Suggestion: Add functionality to output the result as JSON
Hi,
the program has trouble locating Wolfram Language installation on Linux. Locating Wolfram application using wolfram_app_discovery::WolframApp
leads to an error
thread 'main' panicked at 'unable to locate any Wolfram applications: Error(UnsupportedPlatform { operation: "WolframApp::from_installation_directory()" })'
According to the section Configuration it should be sufficient to add the correct path to .bashrc, such as
export WOLFRAM_APP_DIRECTORY="/usr/local/Wolfram/Mathematica/13.0/Executables/"
this also leads to the error above.
For more details, the result from RUST_BACKTRACE=1
:
thread 'main' panicked at 'unable to locate any Wolfram applications: Error(UnsupportedPlatform { operation: "WolframApp::from_app_directory()" })', src/main.rs:8:6
stack backtrace:
0: rust_begin_unwind
at /rustc/1.65.0/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at /rustc/1.65.0/library/core/src/panicking.rs:142:14
2: core::result::unwrap_failed
at /rustc/1.65.0/library/core/src/result.rs:1785:5
3: core::result::Result<T,E>::expect
at /rustc/1.65.0/library/core/src/result.rs:1064:23
4: tutorial::main
at ./src/main.rs:7:15
5: core::ops::function::FnOnce::call_once
at /rustc/1.65.0/library/core/src/ops/function.rs:248:5
Thanks for any advice on fixing this issue.
I would like to use this as part of https://github.com/JuliaInterop/MathLink.jl/ for finding the WSTP dynamic library. I can find the "WSTP CompilerAdditions directory" which is close, but it seems like the location of the dynamic library from here can be different on different OSes.
When I attempt to run:
wolfram-app-discovery default --raw-value kernel-executable-path
using the wolframresearch/wolframengine:latest
container, I get the following error:
Error(UnsupportedPlatform { operation: "WolframApp::from_installation_directory()", target_os: Linux })
See https://github.com/JuliaInterop/MathLink.jl/actions/runs/4635469327/jobs/8202551385#step:7:86 for the full log
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.