How should -e or -E be used ?
I’m getting ERROR even for commands that look legit.
Search gave pretty little, so I suspect something on my system, but even in a pristine bash:
bash --noprofile --norc
bash-4.4$ julia --startup-file=no -E 'a = 1'
ERROR: UndefVarError: a not defined
bash-4.4$ julia --startup-file=no -E '1;'
1
and all of this is typed, no copy/paste.
Another one:
julia --startup-file=no -e 'using InteractiveUtils; InteractiveUtils.versioninfo()'
ERROR: syntax: incomplete: premature end of input
All of these commands work fine in the REPL, same julia, same terminal.
julia> using InteractiveUtils; InteractiveUtils.versioninfo()
Julia Version 1.6.1
It’s not recent; Quote from old notes, using julia-1.5:
julia -e "using LanguageServer; runserver()"
ERROR: syntax: incomplete: **premature** end of input
julia -e "using Plots; s=1"
ERROR: syntax: incomplete: **premature** end of input
Weird. Searched. Nevermind.
Trying to automatize the procedure,
I forgot to append _build to distinguish between the build tree and the install tree.
(the prefix is the build directory; it should be different ?)
Procedure used to install the version that fails
bash
git fetch --all --prune
git tag # to find the latest version
julia_version=1.6.1
git reset --hard #Forcibly remove any changes to any files under version control
git clean -x -f -d #Forcibly remove any file or directory not under version control
git checkout v$julia_version
# need to remove all files from the build
# (cf. https://github.com/JuliaLang/julia/blob/9f22a3b4ce9c38bc73d7fc82aa0d61e286162c1a/doc/build/build.md)
# write prefix=/path/to/install/folder into Make.user and then run make install.
# If there is a version of Julia already installed in this folder,
# you should delete it before running make install.
build_dir=/usr/local/build/julia-${julia_version}
echo $build_dir
rm -rf ${build_dir}
make O=${build_dir} configure
# those errors are normal:
# find: ‘/usr/local/build/julia-1.6.1/base’: No such file or directory
# ...
cd ${build_dir}
echo "prefix=${build_dir}" > Make.user
make -j $(nproc)
make install
# quit this shell, to cleanup variables
exit
Let me fix it and report back.
Edit:
procedure with separate build and install directories
bash
git fetch --all --prune
git tag # to find the latest version
julia_version=1.6.1
git reset --hard #Forcibly remove any changes to any files under version control
git clean -x -f -d #Forcibly remove any file or directory not under version control
git checkout v$julia_version
# need to remove all files from the build
(cf. https://github.com/JuliaLang/julia/blob/9f22a3b4ce9c38bc73d7fc82aa0d61e286162c1a/doc/build/build.md)
write prefix=/path/to/install/folder into Make.user and then run make install.
If there is a version of Julia already installed in this folder, you should delete it before running make install.
install_dir=/usr/local/build/julia-${julia_version}
echo $install_dir
rm -rf ${install_dir}
build_dir=${install_dir}_build
echo $build_dir
rm -rf ${build_dir}
make O=${build_dir} configure
# those errors are normal:
# find: ‘/usr/local/build/julia-1.6.0/base’: No such file or directory
# ...
cd ${build_dir}
echo "prefix=${install_dir}" > Make.user
make -j $(nproc)
make install
# quit this shell, to cleanup variables
exit