net-misc/crossbar: initial pkg move

Add init scripts, conf.d and a sample config.json.
Improve the ebuild, add a pkg_config()
This commit is contained in:
Brian Dolbec
2017-09-16 00:06:48 +00:00
parent a72ba4fd5a
commit 3fb1500d20
7 changed files with 297 additions and 0 deletions

View File

@@ -0,0 +1 @@
DIST crossbar-17.6.1.post3.tar.gz 725054 SHA256 8d023af0a772404f4e57add5888583fc0068d62a7a2249bea4539a6d7b70fbd9 SHA512 c3efac2c7f7a41e6544eb98057afb249908453d6ddfb81c514f0705ed967374d50f844fe1a80395652b81a7c23abc90a03a0d6c88287f10cbfe99e64cb70919d WHIRLPOOL 08555f6cecbc57ab447569864cec75993fb8aea485ce7c85aefb1530b950b5913371e73d384e15ce539445f759c4f74a35457ef4ef2fc8791c0802325cebdc7b

View File

@@ -0,0 +1,156 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
# Not quite ready for py3, unconditionally deps on too many backported
# pkgs installed in newer pythons that shouldn't need them.
PYTHON_COMPAT=( python2_7 )
inherit user systemd distutils-r1
MY_PV="17.6.1.post3"
MY_P="${PN}-${MY_PV}"
DESCRIPTION="Crossbar.io - The Unified Application Router for the twisted framework"
HOMEPAGE="http://crossbar.io/ https://github.com/crossbario/crossbar https://pypi.python.org/pypi/crossbar"
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
LICENSE="AGPL-3"
SLOT="0"
KEYWORDS="~amd64"
IUSE="test"
RDEPEND="
>=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
>=dev-python/twisted-17.5.0[${PYTHON_USEDEP}]
$(python_gen_cond_dep '>=dev-python/enum34-1.1.6[${PYTHON_USEDEP}]' python2_7)
>=dev-python/txaio-2.8.0[${PYTHON_USEDEP}]
>=dev-python/pyasn1-0.2.3[${PYTHON_USEDEP}]
>=dev-python/pyasn1-modules-0.0.9[${PYTHON_USEDEP}]
>=dev-python/incremental-17.5.0[${PYTHON_USEDEP}]
>=dev-python/zope-interface-4.4.2[${PYTHON_USEDEP}]
<dev-python/hyper-h2-3.0.0[${PYTHON_USEDEP}]
>=dev-python/priority-1.3.0[${PYTHON_USEDEP}]
>=dev-python/service_identity-17.0.0[${PYTHON_USEDEP}]
>=dev-python/pyopenssl-17.1.0[${PYTHON_USEDEP}]
>=dev-python/cryptography-1.9.0[${PYTHON_USEDEP}]
>=dev-python/autobahn-17.6.2[${PYTHON_USEDEP}]
>=dev-python/jinja-2.9.6[${PYTHON_USEDEP}]
>=dev-python/treq-17.3.1[${PYTHON_USEDEP}]
>=dev-python/pyyaml-3.12[${PYTHON_USEDEP}]
>=dev-python/click-6.7[${PYTHON_USEDEP}]
>=dev-python/attrs-17.2.0[${PYTHON_USEDEP}]
>=dev-python/constantly-15.1.0[${PYTHON_USEDEP}]
$(python_gen_cond_dep '>=dev-python/ipaddress-1.0.18[${PYTHON_USEDEP}]' python2_7)
>=dev-python/cbor-1.0.0[${PYTHON_USEDEP}]
>=dev-python/bitstring-3.1.5[${PYTHON_USEDEP}]
>=dev-python/pygments-2.2.0[${PYTHON_USEDEP}]
>=dev-python/pytrie-0.3[${PYTHON_USEDEP}]
>=dev-python/psutil-5.2.2[${PYTHON_USEDEP}]
>=dev-python/py-ubjson-0.9.0[${PYTHON_USEDEP}]
>=dev-python/pynacl-1.1.2[${PYTHON_USEDEP}]
>=dev-python/pyqrcode-1.2.1[${PYTHON_USEDEP}]
>=dev-python/lmdb-0.92[${PYTHON_USEDEP}]
>=dev-python/mistune-0.7.4[${PYTHON_USEDEP}]
>=dev-python/netaddr-0.7.19[${PYTHON_USEDEP}]
>=dev-python/setproctitle-1.1.10[${PYTHON_USEDEP}]
>=dev-python/sdnotify-0.3.1[${PYTHON_USEDEP}]
>=dev-python/shutilwhich-1.1.0[${PYTHON_USEDEP}]
>=dev-python/u-msgpack-2.4.1[${PYTHON_USEDEP}]
>=dev-python/watchdog-0.8.3[${PYTHON_USEDEP}]
"
DEPEND="
!dev-python/crossbar
>=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
>=dev-python/twisted-17.5.0[${PYTHON_USEDEP}]
test? (
dev-python/mock[${PYTHON_USEDEP}]
)
"
DOCS=(
README.rst LICENSE-FOR-API LICENSE COPYRIGHT
)
S="${WORKDIR}"/${MY_P}
python_prepare_all() {
# don't install the copyright, license... let dodoc do it
sed -e "s/^ data_files=.*//" -i setup.py || die
distutils-r1_python_prepare_all
}
pkg_setup() {
enewuser crossbar
}
python_install_all() {
distutils-r1_python_install_all
keepdir /var/lib/crossbar
insinto /var/lib/crossbar
doins "${FILESDIR}/config.json.sample"
newconfd "${FILESDIR}/confd" crossbar
newinitd "${FILESDIR}/initd" crossbar
}
pkg_posinst() {
einfo "For exapmle configurations and scripts"
einfo "See: https://github.com/crossbario/crossbar-examples"
if [[ -n ${REPLACING_VERSIONS} ]]; then
ewarn
ewarn "Starting with net-misc/crossbar-17.6.1_p3-r1, more than one instance of crossbar"
ewarn "can be run simultaneously. Note that \"BASEDIR\" in the crossbar conf.d/crossbar file"
ewarn "is the common base directory for all instances. If you are migrating from an older"
ewarn "version, make sure that you copy the current contents of \"BASEDIR\" to a subdirectory."
ewarn "The name of the subdirectory corresponds to the name of the buildbot_worker instance."
ewarn "In order to start the service running OpenRC-based systems need to link to the init file:"
ewarn " ln --symbolic --relative /etc/init.d/crossbar /etc/init.d/crossbar.myinstance"
ewarn " rc-update add crossbar.myinstance default"
ewarn " /etc/init.d/crossbar.myinstance start"
ewarn "Systems using systemd can do the following:"
ewarn " systemctl enable crossbar@myinstance.service"
ewarn " systemctl enable crossbar.target"
ewarn " systemctl start crossbar.target"
fi
}
pkg_config() {
local crossbar_path="/var/lib/crossbar"
local log_path="/var/log/crossbar"
einfo "This will prepare a new crossbar instance in ${crossbar_path}."
einfo "Press Control-C to abort."
einfo "Enter the name for the new instance: "
read instance_name
[[ -z "${instance_name}" ]] && die "Invalid instance name"
local instance_path="${crossbar_path}/${instance_name}"
local instance_log_path="${log_path}/${instance_name}"
if [[ -e "${instance_path}" ]]; then
eerror "The instance with the specified name already exists:"
eerror "${instance_path}"
die "Instance already exists"
fi
if [[ ! -d "${instance_path}" ]]; then
mkdir --parents "${instance_path}" || die "Unable to create directory ${crossbar_path}"
fi
chown --recursive crossbar "${instance_path}" || die "Setting permissions for instance failed"
cp "${crossbar_path}/config.json.sample" "${instance_path}/config.json" \
|| die "Moving sample configuration failed"
ln --symbolic --relative "/etc/init.d/crossbar" "/etc/init.d/crossbar.${instance_name}" \
|| die "Unable to create link to init file"
if [[ ! -d "${instance_log_path}" ]]; then
mkdir --parents "${instance_log_path}" || die "Unable to create directory ${instance_log_path}"
fi
ln --symbolic --relative "${instance_log_path}/node.log" "${instance_path}/node.log" \
|| die "Unable to create link to log file"
einfo "Successfully created a crossbar instance at ${instance_path}."
einfo "To change the default settings edit the config.json file in this directory."
}

View File

@@ -0,0 +1,11 @@
# Path to the wamp router basedir.
BASEDIR="/var/lib/crossbar"
# User account for the crossbar router.
# The basedir should be owned by this user.
USERNAME="crossbar"
# loglevel {none,error,warn,info,debug,trace}
# How much Crossbar.io should log to the terminal, in
# order of verbosity.
LOGLEVEL="info"

View File

@@ -0,0 +1,60 @@
{
"version": 2,
"controller": {},
"workers": [
{
"type": "router",
"realms": [
{
"name": "realm1",
"roles": [
{
"name": "anonymous",
"permissions": [
{
"uri": "",
"match": "prefix",
"allow": {
"call": true,
"register": true,
"publish": true,
"subscribe": true
},
"disclose": {
"caller": false,
"publisher": false
},
"cache": true
}
]
}
]
}
],
"transports": [
{
"type": "universal",
"endpoint": {
"type": "tcp",
"port": 8080
},
"rawsocket": {
},
"websocket": {
"ws": {
"type": "websocket"
}
},
"web": {
"paths": {
"/": {
"type": "static",
"directory": "../web"
}
}
}
}
]
}
]
}

View File

@@ -0,0 +1,12 @@
[Unit]
Description=crossbar wamp router instances
After=local-fs.target network.target
[Service]
Type=forking
User=crossbar
ExecStart=/usr/bin/crossbar start /var/lib/crossbar
ExecStop=/usr/bin/crossbar stop /var/lib/crossbar
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,35 @@
#!/sbin/openrc-run
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
NODE=${RC_SVCNAME:9}
command=/usr/bin/crossbar
command_args="start --cbdir=${BASEDIR}/${NODE} --logtofile --colour=false --loglevel=${LOGLEVEL}"
command_background=true
description="start crossbar wamp router for ${NODE}"
pidfile="${BASEDIR}/${NODE}/crossbar.pid"
depend() {
need net
}
checkconfig() {
if [ -z "${BASEDIR}" ]; then
eerror "BASEDIR not set"
return 1
fi
if [ -z "${USERNAME}" ]; then
eerror "USERNAME not set"
return 1
fi
if [ ! -d "${BASEDIR}" ]; then
eerror "${BASEDIR} is not a directory"
return 1
fi
if [ ! -e "${BASEDIR}/${NODE}" ]; then
eerror "${BASEDIR} does not contain a ${NODE} sub directory"
return 1
fi
}

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>dolsen@gentoo.org</email>
<description>Primary maintainer</description>
</maintainer>
<upstream>
<maintainer>
<name>Crossbar.io Technologies GmbH</name>
</maintainer>
<remote-id type="pypi">crossbar</remote-id>
<remote-id type="github">crossbariocrossbar</remote-id>
</upstream>
<longdescription>
Crossbar.io is an open source networking platform
for distributed and microservice applications. It implements the
open Web Application Messaging Protocol (WAMP), is feature rich,
scalable, robust and secure. Let Crossbar.io take care of the
hard parts of messaging so you can focus on your app's features.
</longdescription>
</pkgmetadata>