summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Strawn2019-04-10 10:58:57 -0600
committerDavid Strawn2019-04-10 11:09:55 -0600
commita7670bf8768b6fb3b1947c9ebf0e4c80810fcd6c (patch)
tree3316e775eb1d3b5e755a0ae893153b9042820b35
downloadaur-a7670bf8768b6fb3b1947c9ebf0e4c80810fcd6c.tar.gz
Initial Commit
Provides PKGBUILD for the most recent release as of writing 0.4.4.
-rw-r--r--.SRCINFO59
-rw-r--r--.gitignore4
-rw-r--r--PKGBUILD168
-rwxr-xr-xmetals-client.sh23
-rwxr-xr-xmetals-emacs.sh5
-rwxr-xr-xmetals-sublime.sh5
-rwxr-xr-xmetals-vim.sh5
-rwxr-xr-xmetals-vscode.sh5
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 $@