diff options
author | Franco Masotti | 2017-02-17 12:21:16 +0100 |
---|---|---|
committer | Franco Masotti | 2017-02-17 12:21:16 +0100 |
commit | 278bf947e7a08220bdadc69206f9ea10db34439c (patch) | |
tree | c927ca2239c6b2c180d0aa366f46d46ffa138c48 | |
download | aur-278bf947e7a08220bdadc69206f9ea10db34439c.tar.gz |
Added files.
-rw-r--r-- | .SRCINFO | 25 | ||||
-rw-r--r-- | .install | 25 | ||||
-rw-r--r-- | PKGBUILD | 55 | ||||
-rwxr-xr-x | install_web_iface_deps.pl | 38 | ||||
-rw-r--r-- | run.pl | 45 | ||||
-rwxr-xr-x | run.sh | 179 | ||||
-rw-r--r-- | swish-cplint.service | 43 |
7 files changed, 410 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..529f487a0e5f --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,25 @@ +pkgbase = swish-cplint-bin + pkgdesc = SWI-Prolog for SHaring: a SWI-Prolog web IDE integrated with the cplint suite - precompiled version + pkgver = r1789.2563692 + pkgrel = 1 + url = https://github.com/friguzzi/swish + install = .install + arch = x86_64 + license = BSD + makedepends = git + makedepends = sed + makedepends = unzip + makedepends = curl + depends = libxinerama + depends = libxpm + depends = git + depends = graphviz + depends = swi-prolog-devel + depends = rserve-sandbox-docker-bin + conflicts = swish + conflicts = swish-cplint + source = git+https://github.com/friguzzi/swish#branch=master + md5sums = SKIP + +pkgname = swish-cplint-bin + diff --git a/.install b/.install new file mode 100644 index 000000000000..c4aeefd3c07c --- /dev/null +++ b/.install @@ -0,0 +1,25 @@ +post_install() { + # Add swish user and group with a home directory (which will contain all + # the packs). + getent group swish &>/dev/null || groupadd -r swish >/dev/null + getent passwd swish &>/dev/null || useradd -m -d /home/swish \ +-r -g swish swish >/dev/null + + # Add swish user to the rserve group. If this is not done, access to the + # socket will be forbidden. + gpasswd -a swish rserve >/dev/null + + chown -R swish:swish /usr/share/swish-cplint + + printf "\n\n%s\n\n" "To initialize and download all the necessary \ +components you must run: \ +sudo -u swish swish-cplint -i" + printf "%s\n\n" "You can then start and enable \ +swish-cplint.service to run the server." + +} + +post_remove() { + printf "\n\n%s\n" "You can remove /home/swish." + printf "%s\n\n" "You can also remove swish user and group." +} diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..79ae28318d8f --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,55 @@ +# Maintainer: Franco Masotti <franco dot masotti at student dot unife dot it> +# Contributor: Franco Masotti <franco dot masotti at student dot unife dot it> +pkgname=swish-cplint-bin +pkgver=r1789.2563692 +pkgrel=1 +pkgdesc="SWI-Prolog for SHaring: a SWI-Prolog web IDE integrated with the cplint suite - precompiled version" +arch=('x86_64') +url="https://github.com/friguzzi/swish" +license=('BSD') +depends=('libxinerama' + 'libxpm' + 'git' + 'graphviz' + 'swi-prolog-devel' + 'rserve-sandbox-docker-bin') +makedepends=('git' + 'sed' + 'unzip' + 'curl') +conflicts=('swish' + 'swish-cplint') +install=.install +source=('git+https://github.com/friguzzi/swish#branch=master') +md5sums=('SKIP') + +build() { + cd ${srcdir}/swish + # Unzip in swish/web/bower_components + curl -o swish-bower-components.zip \ + http://www.swi-prolog.org/download/swish/swish-bower-components.zip + unzip swish-bower-components.zip + rm -rf swish-bower-components.zip + # Patch + cp ../../run.pl . + cp ../../run.sh . + cp ../../install_web_iface_deps.pl . +} + +pkgver () { + cd ${srcdir}/swish + ( set -o pipefail + git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' || + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + ) +} + +package() { + cd ${srcdir} + install -d "${pkgdir}"/usr/share/"${pkgname%-bin}" + install -d "${pkgdir}"/usr/bin + cp -r swish/* "${pkgdir}"/usr/share/"${pkgname%-bin}" + install -D -m644 swish/LICENSE "${pkgdir}"/usr/share/licenses/"${pkgname%-bin}"/LICENSE + install -D -m644 ../"${pkgname%-bin}".service ${pkgdir}/usr/lib/systemd/system/"${pkgname%-bin}".service + ln -s /usr/share/"${pkgname%-bin}"/run.sh "${pkgdir}"/usr/bin/"${pkgname%-bin}" +} diff --git a/install_web_iface_deps.pl b/install_web_iface_deps.pl new file mode 100755 index 000000000000..3c60b3e489e2 --- /dev/null +++ b/install_web_iface_deps.pl @@ -0,0 +1,38 @@ +#!/usr/bin/env swipl + +/* + * + * install_web_iface_deps.pl + * + * Copyright (C) 2016 frnmst (Franco Masotti) <franco.masotti@student.unife.it> + * + * This file is part of cplint-installer. + * + * cplint-installer is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * cplint-installer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with cplint-installer. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/* Package directory will be the default one */ +:- initialization main. + +install:- + pack_install(aleph, [url('https://github.com/friguzzi/aleph.git'),interactive(false)]), + pack_install(real, [url('http://stoics.org.uk/~nicos/sware/packs/real/real-2.0.tgz'),interactive(false)]), + pack_install('cplint_r', [url('https://github.com/frnmst/cplint_r.git'),interactive(false)]). + +main:- + catch(install, E, (print_message(error, E), fail)), + halt. +main:- + halt(1). diff --git a/run.pl b/run.pl new file mode 100644 index 000000000000..c1252e1f2457 --- /dev/null +++ b/run.pl @@ -0,0 +1,45 @@ +/* + * + * run.pl + * + * Copyright (C) 2016 frnmst (Franco Masotti) <franco.masotti@student.unife.it> + * + * This file is part of cplint-installer. + * + * cplint-installer is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * cplint-installer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with cplint-installer. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/* Patch to run the server in backround. This file should replace the one + * provided in the repository. + */ + +:- use_module(server). +:- use_module('lib/r_swish'). +:- use_module(library(r/r_sandbox)). + +% Using `localhost:3050`, we only bind to localhost interface! +% Use plain `3050` (or any port number you like) to make the server +% accessible from all network interfaces. + +%:- initialization server(localhost:3050). +:- initialization main. + +main:- + server(3050), + wait. + +wait:- + thread_get_message(_), + halt. diff --git a/run.sh b/run.sh new file mode 100755 index 000000000000..359f1e31d970 --- /dev/null +++ b/run.sh @@ -0,0 +1,179 @@ +#!/usr/bin/env sh + +# +# run.sh +# +# Copyright (C) 2016 frnmst (Franco Masotti) <franco.masotti@student.unife.it> +# +# This file is part of cplint-installer. +# +# cplint-installer is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cplint-installer is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cplint-installer. If not, see <http://www.gnu.org/licenses/>. +# +# + +# This is the file called from the /usr/bin/swish-cplint symlink + +pkg_dir="/usr/share/swish-cplint" +pid_file="/run/swish-cplint/swish-cplint.pid" +installed_file=""$pkg_dir"/installed" +deps_installer=""$pkg_dir"/install_web_iface_deps.pl" +user="swish" +group="swish" + +help() +{ + cat<<-EOF +swish-cplint [OPTION] +SWI-Prolog for SHaring: a SWI-Prolog web IDE integrated with the cplint suite + +Only a single option is permitted. + -h print this help + -i install dependencies + -k kill swish-cplint + -s start swish-cplint + +Exit status: + 0 if OK, + 1 some error occurred. + +Full documentation at: <https://github.com/friguzzi/swish> +and at: <https://github.com/friguzzi/cplint> +EOF +} + +init() +{ + printf "%s\n" "This may take a while." + pushd "$pkg_dir" + $deps_installer + if [ $? -eq 0 ]; then + echo "# Don't touch this file" > "$installed_file" + echo "true" >> "$installed_file" + else + 1>&2 printf "%s\n" "Install web dependencies error" + exit 1 + fi +} + +installed() +{ + if [ ! -f "$installed_file" ]; then + 1>&2 printf "%s\n" "You need to run \ +'sudo -u swish swish-cplint -i' \ +first" + exit 1 + fi +} + +killd() +{ + # kill action only if process exists. + if [ -f "$pid_file" ]; then + pid=$(cat "$pid_file") + ps -q $pid > /dev/null + if [ $? -eq 0 ]; then + kill -s TERM $pid + fi + fi +} + +remove() +{ + : +} + +startd() +{ + local pid="" + + # The following means installed && { ... } + installed + { + ( + cd "$pkg_dir" + exec swipl --quiet -f "$pkg_dir"/run.pl + ) & + pid="$!" + } 1>&2 + + write_pid_file "$pid" +} + +# +# shared_functions.sh +# +# Copyright (C) 2016 frnmst (Franco Masotti) <franco.masotti@student.unife.it> +# +# This file is part of swish-installer. +# +# swish-installer is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# swish-installer is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with swish-installer. If not, see <http://www.gnu.org/licenses/>. +# +# + +# This file is used by the various run.sh. + +check_running_user_and_group() +{ + if [ "$(id -un)" = "$user" ] && [ "$(id -gn)" = "$group" ]; then + : + else + printf "User must be "$user"\n" + printf "Group must be "$group"\n" + return 1 + fi +} + +write_pid_file() +{ + local pid="$1" + + if [ -n "$pid" ]; then + printf "Server running with pid $pid\n" + printf "$pid\n" > "$pid_file" + else + printf "Server error\n" + return 1 + fi +} + +option_parser() +{ + getopts ":hikrs" opt "$@" + case "$opt" in + h ) help ;; + i ) init ;; + k ) killd ;; + r ) remove ;; + s ) startd ;; + ? ) help; return 1 ;; + esac +} + +main() +{ + check_running_user_and_group && option_parser "$@" +} + +main "$@" diff --git a/swish-cplint.service b/swish-cplint.service new file mode 100644 index 000000000000..ccfca324ee00 --- /dev/null +++ b/swish-cplint.service @@ -0,0 +1,43 @@ +# +# swish-cplint.service +# +# Copyright (C) 2016 frnmst (Franco Masotti) <franco.masotti@student.unife.it> +# +# This file is part of cplint-installer. +# +# cplint-installer is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cplint-installer is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cplint-installer. If not, see <http://www.gnu.org/licenses/>. +# +# + +# To be placed in /usr/lib/systemd/system/swish-cplint.service + +[Unit] +Description=Cplint on SWISH +Documentation=http://github.com/friguzzi/cplint https://github.com/friguzzi/swish +Requires=rserve-sandbox-docker.service +After=rserve-sandbox-docker.service + +[Service] +ExecStart=/usr/bin/swish-cplint -s +ExecStop=/usr/bin/swish-cplint -k +Type=forking +PIDFile=/run/swish-cplint/swish-cplint.pid +User=swish +Group=swish +RuntimeDirectory=swish-cplint + +[Install] +Also=rserve-sandbox-docker.service +WantedBy=default.target + |