diff options
author | David Strawn | 2019-04-10 10:58:57 -0600 |
---|---|---|
committer | David Strawn | 2019-04-10 11:09:55 -0600 |
commit | a7670bf8768b6fb3b1947c9ebf0e4c80810fcd6c (patch) | |
tree | 3316e775eb1d3b5e755a0ae893153b9042820b35 | |
download | aur-a7670bf8768b6fb3b1947c9ebf0e4c80810fcd6c.tar.gz |
Initial Commit
Provides PKGBUILD for the most recent release as of writing 0.4.4.
-rw-r--r-- | .SRCINFO | 59 | ||||
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | PKGBUILD | 168 | ||||
-rwxr-xr-x | metals-client.sh | 23 | ||||
-rwxr-xr-x | metals-emacs.sh | 5 | ||||
-rwxr-xr-x | metals-sublime.sh | 5 | ||||
-rwxr-xr-x | metals-vim.sh | 5 | ||||
-rwxr-xr-x | metals-vscode.sh | 5 |
8 files changed, 274 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..613995eb14a2 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,59 @@ +pkgbase = metals + pkgdesc = Language Server For Scala + pkgver = 0.4.4 + pkgrel = 1 + url = https://scalameta.org/metals/ + arch = any + license = Apache + makedepends = sbt + makedepends = sed + makedepends = grep + makedepends = coreutils + depends = java-environment=8 + depends = findutils + depends = python + source = https://github.com/scalameta/metals/archive/v0.4.4.tar.gz + source = metals-client.sh + source = metals-emacs.sh + source = metals-vim.sh + source = metals-vscode.sh + source = metals-sublime.sh + md5sums = dd997e9d688f22fe888966800a8ecb54 + md5sums = d680f9edd2d896048f077cfb8b023ac5 + md5sums = a883291ea3ae425c2c51b8310c7e4d1b + md5sums = dcb3e81e16b90333647d3bc052ce1ece + md5sums = b1d64c236e20f91fbbaa06a32dbb72e7 + md5sums = 2d7e382b962b705bcd5862f7182574fe + sha1sums = 779b02af5af4a61f0449f4f0f8f7f7a30aa81ed7 + sha1sums = dafd89307afc8f75fa6c15903f84e400bf4d69a4 + sha1sums = 9e0f0f83edd2dacc1053f66297e4f2c16618c48e + sha1sums = 214de4e3e38cffce813ba4eafcaf5ca641d95d50 + sha1sums = f3fd084eee605caa54fdeb3787dab7c359c75e32 + sha1sums = 42ee89665251bf99935c91283750fe431f7713c4 + sha224sums = 043ea513e2493a2710db34a7a168591663f3a2e3bf379d1575b69193 + sha224sums = 1638081b5bcca4919152528b1b6a340518fc326ed973e7832c80b41c + sha224sums = 4df1908182071dc2359d0ced412c7ab11ee81cd1d2f1039436776e92 + sha224sums = c78851f0f0f1839563ae32e9b9bfa1221165e93050036a52017a5fd9 + sha224sums = 909f6b8caecfcb587c982e55f4ded982a8cb7493e79b621bb6dc9b34 + sha224sums = d4ae4cba4aaa5d2ad1baf45d7a4aa4dce894569ca5fba5e9d63f2a95 + sha256sums = db394fe330c6ff2282b4c4a9b0194dcf8796039e13cfc493383d5f5becd3e865 + sha256sums = 1277ef9c0cefdb769cfb4e6182a8aa55542cae9604b8f8f3dc98c909d8160572 + sha256sums = f8f895cb11d0b9af2b5320acf5862fb878f3ba94324bca35278b8aa31b32020c + sha256sums = 351f317247124f1ba05680520ca6cacb9c8ed9259d50505aa5127018bcad620d + sha256sums = a60cfc3f0fc6fde8309ee7cd9c4a2bdf58668314cee8bdbc7938809e3de4e6c4 + sha256sums = 1f587cc96100d560a43da35127ed1b5d2e36d14211f20e7931029abcab64d430 + sha384sums = 8942d46070eed792f48cb3744003759e620b7adbbe57f2b0c1291574d427d2462ca1a410cbf6081c2a1cfb253f6f2d7d + sha384sums = 090dce5f166dd210e22ded19eb0150cb35c390d07f2b93bb824cf4fadf4c188788246c264a59aab2f908258f81c0389d + sha384sums = ae8b87a65ee897708134374f976d6b704d48f1f525e036de12cc793ab6960d2bcc176a57be886b0204ddba7c94b93214 + sha384sums = 5c7aa52760f882910dca99f046c1b4384d36e72b40709a513345087ade967a0668a1b003e23320c57200fefb65772016 + sha384sums = 71326bea2d7905bce5a1a4a495108af53b06cc162c86da46a62e85666ce7a78b25e7258219dc953da08743d050e86a60 + sha384sums = 1235abb496221584c8b11b987460c7683ab160210b86d7a5acf117ad9c3315733795bc10af73844f731c20f1c25c64c7 + sha512sums = e965b9dd43b1cf7f5d166839c8f89874eaea03c9e93f3098a011fd19ba59eab0bc781a30669eb16512cce2a17397aa98c05f84e4993428b3e546db68ba9e496e + sha512sums = 6cad8b806c5111604381d8ce760db9da8afd46312b8916678af65ace65e531b402e481e457bb7265bc3a3699f08b612b7b231755934af9bd7ee221b902e0dcd7 + sha512sums = 95232be1232d3189a82cc0fe6af1d00fffd8334908e6d166143c69c0eda8e3a24674ce06d85e36213bc6a7044ae2f6a76d94a0715852aaf78b205a08112b403a + sha512sums = 1f1b034051fb65170bfd3f33cb8eb8a2f75018c1d32ef3a404e876427c3c94dd3beeb17d050a3898e803ad1f789b1b6f8258c0e81b4688b4fc17eb8d8f977522 + sha512sums = 70a0cc5eb6b9a3b64a056524a1187626628e248f9fe419b00aaa1d665af482aa18c6e1c84570b1d1d196f0b143f2ccf91f26bc0c332e8f46120ce1cd5d68b676 + sha512sums = 485f0360f0a25de9e397e44a987fdb2c5872de62568215f225572d0d0607dcab1ceb15d350b917c27c822caf89bdb24abf1433240ceca25867e0a6696d41f240 + +pkgname = metals + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..6ba7113a8f90 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/src/ +/pkg/ +/*.log +/metals-*.tar.xz diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..97195c03c37b --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,168 @@ +# This is an example PKGBUILD file. Use this as a start to creating your own, +# and remove these comments. For more information, see 'man PKGBUILD'. +# NOTE: Please fill out the license field for your package! If it is unknown, +# then please put 'unknown'. + +# Maintainer: David Strawn <isomarcte a__t gmail d__o__t c__o__m> +pkgname='metals' +pkgver='0.4.4' +pkgrel=1 +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') +checkdepends=() +optdepends=() +provides=() +conflicts=() +replaces=() +backup=() +options=() +install= +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') +noextract=() +md5sums=('dd997e9d688f22fe888966800a8ecb54' + 'd680f9edd2d896048f077cfb8b023ac5' + 'a883291ea3ae425c2c51b8310c7e4d1b' + 'dcb3e81e16b90333647d3bc052ce1ece' + 'b1d64c236e20f91fbbaa06a32dbb72e7' + '2d7e382b962b705bcd5862f7182574fe') +sha1sums=('779b02af5af4a61f0449f4f0f8f7f7a30aa81ed7' + 'dafd89307afc8f75fa6c15903f84e400bf4d69a4' + '9e0f0f83edd2dacc1053f66297e4f2c16618c48e' + '214de4e3e38cffce813ba4eafcaf5ca641d95d50' + 'f3fd084eee605caa54fdeb3787dab7c359c75e32' + '42ee89665251bf99935c91283750fe431f7713c4') +sha224sums=('043ea513e2493a2710db34a7a168591663f3a2e3bf379d1575b69193' + '1638081b5bcca4919152528b1b6a340518fc326ed973e7832c80b41c' + '4df1908182071dc2359d0ced412c7ab11ee81cd1d2f1039436776e92' + 'c78851f0f0f1839563ae32e9b9bfa1221165e93050036a52017a5fd9' + '909f6b8caecfcb587c982e55f4ded982a8cb7493e79b621bb6dc9b34' + 'd4ae4cba4aaa5d2ad1baf45d7a4aa4dce894569ca5fba5e9d63f2a95') +sha256sums=('db394fe330c6ff2282b4c4a9b0194dcf8796039e13cfc493383d5f5becd3e865' + '1277ef9c0cefdb769cfb4e6182a8aa55542cae9604b8f8f3dc98c909d8160572' + 'f8f895cb11d0b9af2b5320acf5862fb878f3ba94324bca35278b8aa31b32020c' + '351f317247124f1ba05680520ca6cacb9c8ed9259d50505aa5127018bcad620d' + 'a60cfc3f0fc6fde8309ee7cd9c4a2bdf58668314cee8bdbc7938809e3de4e6c4' + '1f587cc96100d560a43da35127ed1b5d2e36d14211f20e7931029abcab64d430') +sha384sums=('8942d46070eed792f48cb3744003759e620b7adbbe57f2b0c1291574d427d2462ca1a410cbf6081c2a1cfb253f6f2d7d' + '090dce5f166dd210e22ded19eb0150cb35c390d07f2b93bb824cf4fadf4c188788246c264a59aab2f908258f81c0389d' + 'ae8b87a65ee897708134374f976d6b704d48f1f525e036de12cc793ab6960d2bcc176a57be886b0204ddba7c94b93214' + '5c7aa52760f882910dca99f046c1b4384d36e72b40709a513345087ade967a0668a1b003e23320c57200fefb65772016' + '71326bea2d7905bce5a1a4a495108af53b06cc162c86da46a62e85666ce7a78b25e7258219dc953da08743d050e86a60' + '1235abb496221584c8b11b987460c7683ab160210b86d7a5acf117ad9c3315733795bc10af73844f731c20f1c25c64c7') +sha512sums=('e965b9dd43b1cf7f5d166839c8f89874eaea03c9e93f3098a011fd19ba59eab0bc781a30669eb16512cce2a17397aa98c05f84e4993428b3e546db68ba9e496e' + '6cad8b806c5111604381d8ce760db9da8afd46312b8916678af65ace65e531b402e481e457bb7265bc3a3699f08b612b7b231755934af9bd7ee221b902e0dcd7' + '95232be1232d3189a82cc0fe6af1d00fffd8334908e6d166143c69c0eda8e3a24674ce06d85e36213bc6a7044ae2f6a76d94a0715852aaf78b205a08112b403a' + '1f1b034051fb65170bfd3f33cb8eb8a2f75018c1d32ef3a404e876427c3c94dd3beeb17d050a3898e803ad1f789b1b6f8258c0e81b4688b4fc17eb8d8f977522' + '70a0cc5eb6b9a3b64a056524a1187626628e248f9fe419b00aaa1d665af482aa18c6e1c84570b1d1d196f0b143f2ccf91f26bc0c332e8f46120ce1cd5d68b676' + '485f0360f0a25de9e397e44a987fdb2c5872de62568215f225572d0d0607dcab1ceb15d350b917c27c822caf89bdb24abf1433240ceca25867e0a6696d41f240') +validpgpkeys=() + +build() { + export COURSIER_CACHE="${srcdir}/.cache/coursier/v1" + + local -r _SBT_DIR="${srcdir}/.sbt" + local -r _SBT_IVY="${srcdir}/.ivy2" + cd "$pkgname-$pkgver" + sbt -sbt-dir "$_SBT_DIR" -ivy "$_SBT_IVY" clean compile +} + +check() { + export COURSIER_CACHE="${srcdir}/.cache/coursier/v1" + + local -r _SBT_DIR="${srcdir}/.sbt" + local -r _SBT_IVY="${srcdir}/.ivy2" + cd "$pkgname-$pkgver" + ## Tests on most recent release currently fail + # sbt test +} + +package() { + export COURSIER_CACHE='../.cache/coursier/v1' + + ## Constants ## + local -r _SBT_DIR='../.sbt' + local -r _SBT_IVY='../.ivy2' + local -r _TARGET_DIR='/usr/share/java/metals' + local -r _DEST_DIR="${pkgdir}${_TARGET_DIR}" + local -r _BIN_DEST_DIR="${_DEST_DIR}/bin" + local -r _LIB_DEST_DIR="${_DEST_DIR}/lib" + local -r _JAR_DEST_DIR="${_DEST_DIR}/jars" + 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') + + ## Variables ## + local LIB_NAME + + ## Change Into Correct Directory ## + pushd "$pkgname-$pkgver" + + ## Create lib And bin Directories ## + install -d "$_LIB_DEST_DIR" + install -d "$_BIN_DEST_DIR" + + ## Install Class Files And Jars ## + + ### Determine Dependencies ### + + # If you're reading this and you know of a better way to get all + # the dependencies from SBT directly, please let me know. + sbt -sbt-dir "$_SBT_DIR" -ivy "$_SBT_IVY" compile 'show metals/dependencyClasspath' 2>/dev/null | grep Attributed | sed 's/^[^\*]\+\* Attributed(\([^)]\+\).*/\1/g' > "$_TEMP_FILE" + while read dep + do + local _SANATIZED_DEP="${dep##*${pkgname}-${pkgver}/}" + # Sort out directories from modules from third-party jars. + if [ -d "$_SANATIZED_DEP" ] + then + pushd "$_SANATIZED_DEP" + cp -r ./* "${_LIB_DEST_DIR}/" + popd + else + if [ ! -e "$_JAR_DEST_DIR" ] + then + install -d "${_JAR_DEST_DIR}" + fi + local _JAR_PATH="${dep##*/maven2}" + + install -D "$_SANATIZED_DEP" "${_JAR_DEST_DIR}${_JAR_PATH}" + fi + done<"$_TEMP_FILE" + + ## Install Metals Class Files ## + + install -d "${_DEST_DIR}/metals" + pushd 'metals/target/scala-2.12/classes' + cp -r ./* "${_DEST_DIR}/metals/" + popd + + ## Install And Symlink Launcher Scripts ## + for launcher in ${_LAUNCHER_SCRIPTS[@]} + do + local _LINK_NAME="${launcher##*/}" + _LINK_NAME="${launcher%%.*}" + if [ ! -e "$_USR_BIN" ] + then + install -d "${_USR_BIN}" + fi + install -m 755 "../${launcher}" "$_BIN_DEST_DIR" + ln -s "${_TARGET_DIR}/bin/${launcher}" "${_USR_BIN}/${_LINK_NAME}" + done + + ## Ensure Correct Permissions ## + + chown root:root -R "$_DEST_DIR" + chmod u=rwX -R "$_DEST_DIR" + chmod u=rwX -R "$_BIN_DEST_DIR" + chmod og=rX -R "$_DEST_DIR" + + ## Cleanup ## + rm "$_TEMP_FILE" + popd +} diff --git a/metals-client.sh b/metals-client.sh new file mode 100755 index 000000000000..7dc9ee7cdb4a --- /dev/null +++ b/metals-client.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +declare -r _INSTALL_DIR='/usr/share/java/metals' +declare _CP="${_INSTALL_DIR}/lib:${_INSTALL_DIR}/metals" + +function build_cp { + for name in $(find ${_INSTALL_DIR}/jars -regex '.*\.jar') + do + _CP="${name}:${_CP}" + done +} + +function main { + build_cp + + # Java options taken from metals-emacs documentation + # https://scalameta.org/metals/docs/editors/emacs.HTML + java -XX:+UseG1GC -XX:+UseStringDeduplication -Xss4m -Xms100m -Dmetals.client="${_METALS_CLIENT}" -cp "$_CP" scala.meta.metals.Main $@ +} + +main $@ diff --git a/metals-emacs.sh b/metals-emacs.sh new file mode 100755 index 000000000000..5230d48dfc56 --- /dev/null +++ b/metals-emacs.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +_METALS_CLIENT=emacs metals-client $@ diff --git a/metals-sublime.sh b/metals-sublime.sh new file mode 100755 index 000000000000..5461b7c11a3d --- /dev/null +++ b/metals-sublime.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +_METALS_CLIENT=sublime metals-client $@ diff --git a/metals-vim.sh b/metals-vim.sh new file mode 100755 index 000000000000..5cf5af575510 --- /dev/null +++ b/metals-vim.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +_METALS_CLIENT=vim-lsc metals-client $@ diff --git a/metals-vscode.sh b/metals-vscode.sh new file mode 100755 index 000000000000..0fc8ca0953dc --- /dev/null +++ b/metals-vscode.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +_METALS_CLIENT=vscode metals-client $@ |