From ef8b14a634ef9b639d9fcb411507d0795e9f74af Mon Sep 17 00:00:00 2001 From: "Matsievskiy S.V" Date: Tue, 12 May 2020 12:16:32 +0300 Subject: [PATCH] Add PackageCompiler project and compilation script This PR adds script for package compilation into binary --- contrib/.gitignore | 1 + contrib/JuliaLSP/Project.toml | 8 ++++ contrib/JuliaLSP/precompile_app.jl | 4 ++ contrib/JuliaLSP/src/JuliaLSP.jl | 12 ++++++ contrib/compile.sh | 62 ++++++++++++++++++++++++++++++ 5 files changed, 87 insertions(+) create mode 100644 contrib/.gitignore create mode 100644 contrib/JuliaLSP/Project.toml create mode 100644 contrib/JuliaLSP/precompile_app.jl create mode 100644 contrib/JuliaLSP/src/JuliaLSP.jl create mode 100755 contrib/compile.sh diff --git a/contrib/.gitignore b/contrib/.gitignore new file mode 100644 index 000000000..e6f181597 --- /dev/null +++ b/contrib/.gitignore @@ -0,0 +1 @@ +JuliaLSP_compiled diff --git a/contrib/JuliaLSP/Project.toml b/contrib/JuliaLSP/Project.toml new file mode 100644 index 000000000..155700f65 --- /dev/null +++ b/contrib/JuliaLSP/Project.toml @@ -0,0 +1,8 @@ +name = "JuliaLSP" +uuid = "9488cb22-ff86-4d62-8f4a-077fe1791049" +authors = ["Matsievskiy S.V. "] +version = "0.1.0" + +[deps] +LanguageServer = "2b0e0bc5-e4fd-59b4-8912-456d1b03d8d7" +SymbolServer = "cf896787-08d5-524d-9de7-132aaa0cb996" diff --git a/contrib/JuliaLSP/precompile_app.jl b/contrib/JuliaLSP/precompile_app.jl new file mode 100644 index 000000000..257d62a37 --- /dev/null +++ b/contrib/JuliaLSP/precompile_app.jl @@ -0,0 +1,4 @@ +using JuliaLSP + +push!(ARGS, "arg") +JuliaLSP.julia_main() diff --git a/contrib/JuliaLSP/src/JuliaLSP.jl b/contrib/JuliaLSP/src/JuliaLSP.jl new file mode 100644 index 000000000..d167f87ba --- /dev/null +++ b/contrib/JuliaLSP/src/JuliaLSP.jl @@ -0,0 +1,12 @@ +module JuliaLSP + +using LanguageServer, LanguageServer.SymbolServer + +function julia_main()::Cint + server = LanguageServer.LanguageServerInstance(stdin, stdout) + server.runlinter = true + run(server) + return 0 # if things finished successfully +end + +end # module diff --git a/contrib/compile.sh b/contrib/compile.sh new file mode 100755 index 000000000..603c4d660 --- /dev/null +++ b/contrib/compile.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +JULIABIN="julia" +JULIAPROJ="JuliaLSP" +JULIACOMP="JuliaLSP_compiled" + +REPO="https://github.com/julia-vscode/LanguageServer.jl" +BRANCH="master" + +HL='\033[1;4;31m' +NC='\033[0m' + +errorexit() { + echo -e ${HL}"$@"${NC} + exit 1 +} + +while [[ $# -gt 0 ]] + do + key="$1" + + case $key in + -j|--julia) + JULIABIN="$2" + shift + ;; + -b|--branch) + BRANCH="$2" + shift + ;; + -r|--repo) + REPO="$2" + shift + ;; + *) + echo -e "Usage:\ncompile.sh [-j|--julia ] [-b|--branch ]" >&2 + exit + ;; + esac + shift +done + +echo -e ${HL}Updating packages${NC} + +$JULIABIN --project=${JULIAPROJ} --startup-file=no --history-file=no -e \ + "import Pkg; + Pkg.add(Pkg.PackageSpec(url=\"${REPO}\", rev=\"${BRANCH}\")); + Pkg.update();" || errorexit Cannot update packages + +echo -e ${HL}Compiling...${NC} + +# Additional libs are needed for running tests +$JULIABIN --startup-file=no --history-file=no -e \ + "import Pkg; + Pkg.add(\"PackageCompiler\") + using PackageCompiler; + Pkg.activate(\"${JULIAPROJ}\"); + create_app(\"${JULIAPROJ}\", \"${JULIACOMP}\", + force=true, precompile_execution_file=\"../test/runtests.jl\");" \ + || errorexit Cannot compile packages + +echo -e ${HL}Compiled${NC}