summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Strawn2019-12-04 17:11:47 -0700
committerGitHub2019-12-04 17:11:47 -0700
commit5f9d71b23dc0a64c2959a9f8d41335e8020d51bb (patch)
tree910e13455d779d21b2059bde41747bed166b3d22
parentccf2e56d89230f5e9f2d2e7238b6a4648b337f89 (diff)
parent7c28f0697a4569b652fc46e147d9f8446705d084 (diff)
downloadaur-5f9d71b23dc0a64c2959a9f8d41335e8020d51bb.tar.gz
Merge pull request #16 from isomarcte/allow-customization-of-jdk
Allow Customization Of JDK Which Runs Metals
-rw-r--r--.SRCINFO20
-rw-r--r--PKGBUILD85
-rwxr-xr-xmetals-client.sh56
-rw-r--r--metals.install23
4 files changed, 128 insertions, 56 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ba40436a8d50..69eaf8c7fb6c 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,15 +1,19 @@
pkgbase = metals
pkgdesc = Language Server For Scala
pkgver = 0.7.6
- pkgrel = 1
+ pkgrel = 2
url = https://scalameta.org/metals/
+ install = metals.install
arch = any
license = Apache
makedepends = sbt
makedepends = sed
makedepends = grep
makedepends = coreutils
- depends = java-environment=8
+ makedepends = java-environment>=8
+ makedepends = java-environment<11
+ depends = java-environment>=8
+ depends = java-environment<=11
depends = findutils
depends = python
optdepends = bloop
@@ -21,42 +25,42 @@ pkgbase = metals
source = metals-sublime.sh
source = version-fix.patch
md5sums = db95071e1788d0e5ae6bf86e52dac4b7
- md5sums = 211b84fdf059d0d783962208de791b9f
+ md5sums = 6cf70cf0eff052c61653bc21bfb38f4e
md5sums = ad97e9262c7b22dd71b017a6402f612a
md5sums = 000bd73ebc3ea46b23e2c418ef97f4c7
md5sums = 83b5669127510100d6e7ab4094877a6e
md5sums = 38c34ab96f6cf637f7be9f72b7400983
md5sums = 1dc2df1ba655e6091e1895bcd8e1f9a9
sha1sums = 455dbbef2517b62f2cbba63cf2e9738229ceb4de
- sha1sums = 371559f416fcc9f44ce402ebe9f3361a2dc10ecd
+ sha1sums = d860dce31bf983fa21ab3fbca67e0dc90958acb3
sha1sums = b498568936dcfd03a06d7b41f76bbb7fffbc3bdf
sha1sums = 3882901e88f4a85f85d67dcda53f83c89d4563c6
sha1sums = f2d0e8aa2744697d4dad0a7c10f835fe5814524b
sha1sums = b2577ac4ee93e3a611558294378c185227ed8321
sha1sums = 3a82ef7743d4c643643b39ad24fcc295ecb39988
sha224sums = 1252a6dd399a5173bbc64062ac7eb151311817244ee35925eefe9e25
- sha224sums = 3d3989507f163f8469c0722138a6527cd7a7a03a88a7bfe24e4a0efb
+ sha224sums = ef780036872b5e25f64f581d8b79168d14350cb63d6d6516c2a5afcc
sha224sums = 43d2f6b0b4b7ef539f5109b1127dcd88828f2f8ae0b9c052899af1c9
sha224sums = a99d9457fd6cf582b349e56e5e8e9cece30e33ff6866c5969f090f5e
sha224sums = 6ffcb9ee870dd260f90e333082e90b9b30212f1f21dd3d3a0048a67e
sha224sums = fff5cbeed72e44f9159872f59a0ca0a19fc81a8ed943500373e9108e
sha224sums = f40296b2d59f16477c4f521aefea6bcd3782c5dd6f8bcc980d29f124
sha256sums = d5d87a0a0b7e803b1cf70f4a0350ef1da1f2ec171a93ac112bade1232ce643ab
- sha256sums = 3385550782d3adc620017bbc36b4a5392e36b262f3340f0b46dedae831f352cd
+ sha256sums = 6cdb3b53174f4272532f5d3a26d5564073aa38baa624d103ca79865577ab4ba0
sha256sums = b3579e68cee7f23f6f6a12fe0bc6396f1722434d23ce3c58e7c9fac2233cd1d3
sha256sums = e9bbc61ec99dc0893560a12a8a0f56c9f27016895e177a164019ab9174fe94e2
sha256sums = c2213c8d4a1a0fe5bb12d5bcde53ab04d9b0aa08ddcabd60de938a8d480e49d5
sha256sums = fb42157046a11089fa69e0120ae83ff3bc354709e2add4644fe3fc60aa80c984
sha256sums = 1cb95a05c4a9c62ba050941b6b879c1dde00db5e69efe72c7b1fa76e05b75f70
sha384sums = 269da0f6f5c5eb8063cd9de87ed6580b90fee1e9626996f0a066f080abfb22a3d5c514fdd42573b9c21693a316d37c75
- sha384sums = 60b649309a372a998de83b63f02f1a741f87c385ca58f7bb0af8ea9f61d741415ef4aae927426ae2fd33b8826d482080
+ sha384sums = 132773ee9b7b95c8726075769652f5fc69c229548736d0a0ad9301836e9b2c78485021454bf42ca1ff642dcf1789b029
sha384sums = 762dd7c73e994b74ebeb5c975ca0b53ddf4cbf181664d465bd9c543798333dcc4939c360a4b5b8b1b162810ea363d288
sha384sums = 6bee0d21d0fcf3d8f5ee14545be63fb2bbababb0665020540daafc708939bbc539ab940cfe122b2281156bc78d401768
sha384sums = 26859b59a04e38a5e7d02e188643765d06b893385232895f5b1435fb3d4fa4d676e8d43bbc80360f9ee7a2ee01e64d2c
sha384sums = 8b9204ce4a60890eb94f0fe673504a9a10c583b9814e844da14b8d1313db7f8cf7d5f9a7b8db0bbd25fb2f9263e434b7
sha384sums = 20ed1c9f5d5de0466805e51e42de10a34975296e8ec0479403ad9296dfbcc4cf618ee528574f1ac22304c0c5fb5b3a84
sha512sums = b6141d805816b7107081115a7a5418ca07a120d4cc35c9e30457655e2560a9bf938bb413c4963f85c50e9b251049b2fa1e32a67a40f2fcb1a26b1b9020a22090
- sha512sums = 940f46d12b74935ae0cb8ba8fdddfe83dc1e278babcce6cc62a2a8159fb0d0d28d0a01ecc2d23ef98bc26595d5f366a9c85effcefd0b761ece232eb0ee79a484
+ sha512sums = 8528f1eddf680f1569106395b9fce97c07dd12f3f3f64683b9c02c79e74da0ec4a9f4c5cd2031e11d98c03deb01011394333795bf448148c5b9ae199af041539
sha512sums = bd26818e43627c4e20aa931663b4623e45ade0930a29952d6508fa6e1302f5140afed7f57a796c12da3e9ae256ff7c0b3eb2e5075b00ceda9d2e4ddc22e89205
sha512sums = 16d01a820f1ed93ae46194d3d77187adf6fd4e9764fcf99554430e3e2f2af4cc2b6f7918f595febd3c5e6a380bbfb930bb47a3dd2ba93c60b2ca1f874f264fee
sha512sums = 722770a6c30ccf75c73ae9be19655cdff00561c62bf15b619dfa618cdd636e97aaf5a6aca1297add4e6a54274cd49e81781d98a59986526d0077a6c64855562d
diff --git a/PKGBUILD b/PKGBUILD
index 5df4c86536eb..0e7949f4de03 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,15 +6,15 @@
# Maintainer: David Strawn <isomarcte a__t gmail d__o__t c__o__m>
pkgname='metals'
pkgver='0.7.6'
-pkgrel=1
+pkgrel=2
epoch=
pkgdesc='Language Server For Scala'
url='https://scalameta.org/metals/'
arch=(any)
license=('Apache')
groups=()
-depends=('java-environment=8' 'findutils' 'python')
-makedepends=('sbt' 'sed' 'grep' 'coreutils')
+depends=('java-environment>=8' 'java-environment<=11' 'findutils' 'python')
+makedepends=('sbt' 'sed' 'grep' 'coreutils' 'java-environment>=8' 'java-environment<11')
checkdepends=()
optdepends=('bloop')
provides=()
@@ -27,48 +27,49 @@ changelog=
source=("https://github.com/scalameta/$pkgname/archive/v$pkgver.tar.gz" 'metals-client.sh' 'metals-emacs.sh' 'metals-vim.sh' 'metals-vscode.sh' 'metals-sublime.sh' 'version-fix.patch')
noextract=()
md5sums=('db95071e1788d0e5ae6bf86e52dac4b7'
- '211b84fdf059d0d783962208de791b9f'
+ '6cf70cf0eff052c61653bc21bfb38f4e'
'ad97e9262c7b22dd71b017a6402f612a'
'000bd73ebc3ea46b23e2c418ef97f4c7'
'83b5669127510100d6e7ab4094877a6e'
'38c34ab96f6cf637f7be9f72b7400983'
'1dc2df1ba655e6091e1895bcd8e1f9a9')
sha1sums=('455dbbef2517b62f2cbba63cf2e9738229ceb4de'
- '371559f416fcc9f44ce402ebe9f3361a2dc10ecd'
+ 'd860dce31bf983fa21ab3fbca67e0dc90958acb3'
'b498568936dcfd03a06d7b41f76bbb7fffbc3bdf'
'3882901e88f4a85f85d67dcda53f83c89d4563c6'
'f2d0e8aa2744697d4dad0a7c10f835fe5814524b'
'b2577ac4ee93e3a611558294378c185227ed8321'
'3a82ef7743d4c643643b39ad24fcc295ecb39988')
sha224sums=('1252a6dd399a5173bbc64062ac7eb151311817244ee35925eefe9e25'
- '3d3989507f163f8469c0722138a6527cd7a7a03a88a7bfe24e4a0efb'
+ 'ef780036872b5e25f64f581d8b79168d14350cb63d6d6516c2a5afcc'
'43d2f6b0b4b7ef539f5109b1127dcd88828f2f8ae0b9c052899af1c9'
'a99d9457fd6cf582b349e56e5e8e9cece30e33ff6866c5969f090f5e'
'6ffcb9ee870dd260f90e333082e90b9b30212f1f21dd3d3a0048a67e'
'fff5cbeed72e44f9159872f59a0ca0a19fc81a8ed943500373e9108e'
'f40296b2d59f16477c4f521aefea6bcd3782c5dd6f8bcc980d29f124')
sha256sums=('d5d87a0a0b7e803b1cf70f4a0350ef1da1f2ec171a93ac112bade1232ce643ab'
- '3385550782d3adc620017bbc36b4a5392e36b262f3340f0b46dedae831f352cd'
+ '6cdb3b53174f4272532f5d3a26d5564073aa38baa624d103ca79865577ab4ba0'
'b3579e68cee7f23f6f6a12fe0bc6396f1722434d23ce3c58e7c9fac2233cd1d3'
'e9bbc61ec99dc0893560a12a8a0f56c9f27016895e177a164019ab9174fe94e2'
'c2213c8d4a1a0fe5bb12d5bcde53ab04d9b0aa08ddcabd60de938a8d480e49d5'
'fb42157046a11089fa69e0120ae83ff3bc354709e2add4644fe3fc60aa80c984'
'1cb95a05c4a9c62ba050941b6b879c1dde00db5e69efe72c7b1fa76e05b75f70')
sha384sums=('269da0f6f5c5eb8063cd9de87ed6580b90fee1e9626996f0a066f080abfb22a3d5c514fdd42573b9c21693a316d37c75'
- '60b649309a372a998de83b63f02f1a741f87c385ca58f7bb0af8ea9f61d741415ef4aae927426ae2fd33b8826d482080'
+ '132773ee9b7b95c8726075769652f5fc69c229548736d0a0ad9301836e9b2c78485021454bf42ca1ff642dcf1789b029'
'762dd7c73e994b74ebeb5c975ca0b53ddf4cbf181664d465bd9c543798333dcc4939c360a4b5b8b1b162810ea363d288'
'6bee0d21d0fcf3d8f5ee14545be63fb2bbababb0665020540daafc708939bbc539ab940cfe122b2281156bc78d401768'
'26859b59a04e38a5e7d02e188643765d06b893385232895f5b1435fb3d4fa4d676e8d43bbc80360f9ee7a2ee01e64d2c'
'8b9204ce4a60890eb94f0fe673504a9a10c583b9814e844da14b8d1313db7f8cf7d5f9a7b8db0bbd25fb2f9263e434b7'
'20ed1c9f5d5de0466805e51e42de10a34975296e8ec0479403ad9296dfbcc4cf618ee528574f1ac22304c0c5fb5b3a84')
sha512sums=('b6141d805816b7107081115a7a5418ca07a120d4cc35c9e30457655e2560a9bf938bb413c4963f85c50e9b251049b2fa1e32a67a40f2fcb1a26b1b9020a22090'
- '940f46d12b74935ae0cb8ba8fdddfe83dc1e278babcce6cc62a2a8159fb0d0d28d0a01ecc2d23ef98bc26595d5f366a9c85effcefd0b761ece232eb0ee79a484'
+ '8528f1eddf680f1569106395b9fce97c07dd12f3f3f64683b9c02c79e74da0ec4a9f4c5cd2031e11d98c03deb01011394333795bf448148c5b9ae199af041539'
'bd26818e43627c4e20aa931663b4623e45ade0930a29952d6508fa6e1302f5140afed7f57a796c12da3e9ae256ff7c0b3eb2e5075b00ceda9d2e4ddc22e89205'
'16d01a820f1ed93ae46194d3d77187adf6fd4e9764fcf99554430e3e2f2af4cc2b6f7918f595febd3c5e6a380bbfb930bb47a3dd2ba93c60b2ca1f874f264fee'
'722770a6c30ccf75c73ae9be19655cdff00561c62bf15b619dfa618cdd636e97aaf5a6aca1297add4e6a54274cd49e81781d98a59986526d0077a6c64855562d'
'9f32d0ead26fad866f52209c0f6dabdaa3481bafd6121134b2fde6e95a80b5d2757c17ca6f1804b6e060b839efa9a9f7d342d48ad8d22b767e13c585e209045b'
'c2d0773b135b1f271de9af160edb52046ad4ed5e81223c7cc6caa98360b69999727ac564f358bdafa90ab32f4b7764279fcdd4c2ee420dfca4569c3ba864086b')
validpgpkeys=()
+install=metals.install
prepare() {
cd "$pkgname-$pkgver"
@@ -82,23 +83,32 @@ prepare() {
build() {
export COURSIER_CACHE="./.cache/coursier/v1"
export CI="TRUE" # Needed so the build will not think it is a SNAPSHOT
+ export JAVA_TOOL_OPTIONS="${JAVA_TOOL_OPTIONS} -Dsbt.supershell=false"
+
local -r _ORG_PATH="$PATH"
local -r _SBT_DIR="./.sbt"
local -r _SBT_IVY="./.ivy2"
- local -r _OPENJDK_JRE_8_PATH='/usr/lib/jvm/java-8-openjdk/jre/bin/'
+ local -r -a _JAVA_ARCH_PACKAGE_PATHS=('/usr/lib/jvm/java-10-openjdk/bin'
+ '/usr/lib/jvm/java-8-openjdk/jre/bin'
+ )
+ local -r _LEN="${#_JAVA_ARCH_PACKAGE_PATHS[@]}"
+
cd "$pkgname-$pkgver"
- # If openjdk-8 is installed, attempt to use that to build. The
- # build requires a java 8 environment. It is possible that even if
- # openjdk8 is missing another java8 environment is setup, thus in
- # the event that we can't find the openjdk8 jre, we'll just use
- # whatever is set hoping that it is a version 8 jre.
- if [ -d "$_OPENJDK_JRE_8_PATH" ]
- then
- export PATH="$_OPENJDK_JRE_8_PATH:$PATH"
- else
- echo 'Unable to find OpenJDK8 JRE. Attempting with the default JRE, but if it is not a version 8 JRE this will probably fail.'
- fi
+ # Attempt to build with a JDK supported by metals
+ local _INDEX=0
+ while [ $_INDEX -lt "$_LEN" ]
+ do
+ local _PACKAGE_PATH="${_JAVA_ARCH_PACKAGE_PATHS[$_INDEX]}"
+ if [ -d "$_PACKAGE_PATH" ]
+ then
+ export PATH="$_PACKAGE_PATH:$PATH"
+ break
+ else
+ _INDEX=$((_INDEX + 1))
+ continue
+ fi
+ done
# When run with some AUR helpers, in particular `yay`, for a
# reason I do not understand `sbt` will regularly attempt to
@@ -127,6 +137,7 @@ check() {
package() {
export COURSIER_CACHE='./.cache/coursier/v1'
export CI="TRUE" # Needed so the build will not think it is a SNAPSHOT
+ export JAVA_TOOL_OPTIONS="${JAVA_TOOL_OPTIONS} -Dsbt.supershell=false"
## Constants ##
local -r _SBT_DIR='./.sbt'
@@ -139,20 +150,28 @@ package() {
local -r _USR_BIN="$pkgdir/usr/bin"
local -r _TEMP_FILE="$(mktemp)"
local -r _LAUNCHER_SCRIPTS=('metals-client.sh' 'metals-emacs.sh' 'metals-vim.sh' 'metals-vscode.sh' 'metals-sublime.sh')
- local -r _OPENJDK_JRE_8_PATH='/usr/lib/jvm/java-8-openjdk/jre/bin/'
local -r _ORG_PATH="$PATH"
+ local -r -a _JAVA_ARCH_PACKAGE_PATHS=('/usr/lib/jvm/java-10-openjdk/bin'
+ '/usr/lib/jvm/java-8-openjdk/jre/bin'
+ )
+
+ local -r _LEN="${#_JAVA_ARCH_PACKAGE_PATHS[@]}"
+
+ # Attempt to build with a JDK supported by metals
+ local _INDEX=0
+ while [ $_INDEX -lt "$_LEN" ]
+ do
+ local _PACKAGE_PATH="${_JAVA_ARCH_PACKAGE_PATHS[$_INDEX]}"
+ if [ -d "$_PACKAGE_PATH" ]
+ then
+ export PATH="$_PACKAGE_PATH:$PATH"
+ break
+ else
+ _INDEX=$((_INDEX + 1))
+ continue
+ fi
+ done
- # If openjdk-8 is install, attempt to use that to build. The build
- # requires a java 8 environment. It is possible that even if
- # openjdk8 is missing another java8 environment is setup, thus in
- # the event that we can't find the openjdk8 jre, we'll just use
- # whatever is set hoping that it is a version 8 jre.
- if [ -d "$_OPENJDK_JRE_8_PATH" ]
- then
- export PATH="$_OPENJDK_JRE_8_PATH:$PATH"
- else
- echo 'Unable to find OpenJDK8 JRE. Attempting with the default JRE, but if it is not a version 8 JRE this will probably fail.'
- fi
## Change Into Correct Directory ##
pushd "$pkgname-$pkgver"
diff --git a/metals-client.sh b/metals-client.sh
index 2fa41894550a..16717d53f49c 100755
--- a/metals-client.sh
+++ b/metals-client.sh
@@ -4,29 +4,55 @@ set -e
declare -r _INSTALL_DIR='/usr/share/java/metals'
declare _CP="$_INSTALL_DIR/lib:$_INSTALL_DIR/metals"
-declare -r -A _JAVA_8_ARCH_RUNTIME_TO_PACKAGE=([java-8-openjdk]='jre8-openjdk-headless')
-declare -r _JAVA_RUNTIME_PATH_PREFIX='/usr/lib/jvm'
-declare -r -A _JAVA_8_ARCH_PACKAGE_PATH_SUFFIXES=([jre8-openjdk-headless]='/java-8-openjdk/jre/bin')
-function ensure_java_8 {
- for _PACKAGE in "${_JAVA_8_ARCH_RUNTIME_TO_PACKAGE[@]}"
- do
- if [ -z "$_PACKAGE" ]
+# This is an ordered array of JDK paths to attempt to use if
+# METALS_JDK_PATH is unset. They are based off of the default
+# installation locations of the various JDKs in Arch Linux.
+#
+# We only explicitly try known working versions, at the time of
+# writing that is >= 8 and <= 11. We prefer newer versions to older
+# ones.
+declare -r -a _JAVA_ARCH_PACKAGE_PATHS=('/usr/lib/jvm/java-11-openjdk/bin'
+ '/usr/lib/jvm/java-10-openjdk/bin'
+ '/usr/lib/jvm/java-8-openjdk/jre/bin'
+ )
+
+function ensure_comaptible_jdk {
+ local -r _LEN="${#_JAVA_ARCH_PACKAGE_PATHS[@]}"
+ local _INDEX=0
+ local _PACKAGE_PATH
+
+ if [ -n "$METALS_JDK_PATH" ]
+ then
+ if [ -d "$METALS_JDK_PATH" ]
then
- continue
+ if [ -x "${METALS_JDK_PATH}/java" ]
+ then
+ export PATH="$METALS_JDK_PATH:$PATH"
+ return 0
+ else
+ echo "Directory specified at METALS_JDK_PATH=${METALS_JDK_PATH} does not contain an executable file named \"java\"." 1>&2
+ exit 1
+ fi
else
- local _PACKAGE_SUFFIX="${_JAVA_8_ARCH_PACKAGE_PATH_SUFFIXES[${_PACKAGE}]}"
- local _PACKAGE_PATH="$_JAVA_RUNTIME_PATH_PREFIX$_PACKAGE_SUFFIX"
- if [ -n "$_PACKAGE_SUFFIX" ] && [ -d "$_PACKAGE_PATH" ]
+ echo "METALS_JDK_PATH value set in environment, but $METALS_JDK_PATH is not a directory." 1>&2
+ exit 2
+ fi
+ else
+ while [ $_INDEX -lt "$_LEN" ]
+ do
+ _PACKAGE_PATH="${_JAVA_ARCH_PACKAGE_PATHS[$_INDEX]}"
+ if [ -d "$_PACKAGE_PATH" ]
then
export PATH="$_PACKAGE_PATH:$PATH"
return 0
else
+ _INDEX=$((_INDEX + 1))
continue
fi
- fi
- done
- echo 'Unable to find a Java 8 environment with certainty. Attempt to use the current environment.' 1>&2
+ done
+ echo 'Unable to find a Java >=8 and <=11 environment to use with certainty. To use Metals you should have a JDK >=8 and <=11 installed. Attempting to use the current environment.' 1>&2
+ fi
}
function build_cp {
@@ -37,7 +63,7 @@ function build_cp {
}
function main {
- ensure_java_8
+ ensure_comaptible_jdk
build_cp
diff --git a/metals.install b/metals.install
new file mode 100644
index 000000000000..6faf1fb878c2
--- /dev/null
+++ b/metals.install
@@ -0,0 +1,23 @@
+function metals_jdk_info {
+ cat <<EOF
+
+The JDK which will be used to run metals will be the newest one which
+is supported by metals and installed on your system.
+
+If you would like to use a different JDK set the METALS_JDK_PATH to
+the /bin directory for the JDK install.
+
+For example, if you wanted to use JDK 13 (not currently supported by
+metals) then you would set
+METALS_JDK_PATH="/usr/lib/jvm/java-13-openjdk/bin" in the environment.
+
+EOF
+}
+
+post_install() {
+ metals_jdk_info
+}
+
+post_upgrade() {
+ metals_jdk_info
+}