diff options
author | David Strawn | 2019-12-04 17:11:47 -0700 |
---|---|---|
committer | GitHub | 2019-12-04 17:11:47 -0700 |
commit | 5f9d71b23dc0a64c2959a9f8d41335e8020d51bb (patch) | |
tree | 910e13455d779d21b2059bde41747bed166b3d22 | |
parent | ccf2e56d89230f5e9f2d2e7238b6a4648b337f89 (diff) | |
parent | 7c28f0697a4569b652fc46e147d9f8446705d084 (diff) | |
download | aur-5f9d71b23dc0a64c2959a9f8d41335e8020d51bb.tar.gz |
Merge pull request #16 from isomarcte/allow-customization-of-jdk
Allow Customization Of JDK Which Runs Metals
-rw-r--r-- | .SRCINFO | 20 | ||||
-rw-r--r-- | PKGBUILD | 85 | ||||
-rwxr-xr-x | metals-client.sh | 56 | ||||
-rw-r--r-- | metals.install | 23 |
4 files changed, 128 insertions, 56 deletions
@@ -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 @@ -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 +} |