diff --git a/www-apps/netbox/Manifest b/www-apps/netbox/Manifest new file mode 100644 index 0000000..fc7849b --- /dev/null +++ b/www-apps/netbox/Manifest @@ -0,0 +1 @@ +DIST netbox-2.10.5.tar.gz 7063897 BLAKE2B 87a0b3a8f7251d770752c4e4d4bd45f379aa473ef5de754b9e8319791b81f45f9887710746b0070d2d4797b0abcc0ac7728578d72d8b92a5de626732d232a4ab SHA512 db93fa4d4bd64fea95558f64b8149aeac81c47472b8fbd7836e8a70ceacf24a4abba9c93e4795400fc8627f4e19426441fc7a66d63452ec93b6f9c07030c9fac diff --git a/www-apps/netbox/files/gunicorn_config.py b/www-apps/netbox/files/gunicorn_config.py new file mode 100644 index 0000000..4cb7111 --- /dev/null +++ b/www-apps/netbox/files/gunicorn_config.py @@ -0,0 +1,5 @@ +command = '/usr/bin/gunicorn' +pythonpath = '/opt/netbox/netbox' +bind = '127.0.0.1:8001' +workers = 3 +user = 'netbox' diff --git a/www-apps/netbox/files/netbox-2.6.7-no-pip.patch b/www-apps/netbox/files/netbox-2.6.7-no-pip.patch new file mode 100644 index 0000000..a47e151 --- /dev/null +++ b/www-apps/netbox/files/netbox-2.6.7-no-pip.patch @@ -0,0 +1,32 @@ +diff --git a/upgrade.sh b/upgrade.sh +index d17dec06..6972ed2f 100755 +--- a/upgrade.sh ++++ b/upgrade.sh +@@ -10,27 +10,6 @@ cd "$(dirname "$0")" + PYTHON="python3" + PIP="pip3" + +-# Uninstall any Python packages which are no longer needed +-COMMAND="${PIP} uninstall -r old_requirements.txt -y" +-echo "Removing old Python packages ($COMMAND)..." +-eval $COMMAND +- +-# Install any new Python packages +-COMMAND="${PIP} install -r requirements.txt --upgrade" +-echo "Updating required Python packages ($COMMAND)..." +-eval $COMMAND +- +-# Validate Python dependencies +-COMMAND="${PIP} check" +-echo "Validating Python dependencies ($COMMAND)..." +-eval $COMMAND || ( +- echo "******** PLEASE FIX THE DEPENDENCIES BEFORE CONTINUING ********" +- echo "* Manually install newer version(s) of the highlighted packages" +- echo "* so that 'pip3 check' passes. For more information see:" +- echo "* https://github.com/pypa/pip/issues/988" +- exit 1 +-) +- + # Apply any database migrations + COMMAND="${PYTHON} netbox/manage.py migrate" + echo "Applying database migrations ($COMMAND)..." diff --git a/www-apps/netbox/files/netbox-rqworker.initd b/www-apps/netbox/files/netbox-rqworker.initd new file mode 100644 index 0000000..54794f2 --- /dev/null +++ b/www-apps/netbox/files/netbox-rqworker.initd @@ -0,0 +1,13 @@ +#!/sbin/openrc-run +# Copyright 2019 Sony Interactive Entertainment Inc. +# Distributed under the terms of the GNU General Public License v2 + +name="netbox-rqworker daemon" +description="nnetbox-rqworker daemon" +command=/usr/bin/python3 +command_args="/opt/netbox/netbox/manage.py rqworker" +command_user=netbox:netbox +directory=/opt/netbox/netbox +error_log=/var/log/netbox/netbox-rcworker.log +output_log=/var/log/netbox/"${RC_SVCNAME}".log +supervisor=supervise-daemon diff --git a/www-apps/netbox/files/netbox.initd b/www-apps/netbox/files/netbox.initd new file mode 100644 index 0000000..74e6c3b --- /dev/null +++ b/www-apps/netbox/files/netbox.initd @@ -0,0 +1,12 @@ +#!/sbin/openrc-run +# Copyright 2019 Sony Interactive Entertainment Inc. +# Distributed under the terms of the GNU General Public License v2 + +description="netbox daemon" +command=/usr/bin/gunicorn +command_args="-c /etc/netbox/gunicorn_config.py netbox.wsgi" +command_user=netbox:netbox +directory=/opt/netbox/netbox +error_log=/var/log/netbox/"${RC_SVCNAME}".log +output_log=/var/log/netbox/"${RC_SVCNAME}".log +supervisor=supervise-daemon diff --git a/www-apps/netbox/metadata.xml b/www-apps/netbox/metadata.xml new file mode 100644 index 0000000..c36c371 --- /dev/null +++ b/www-apps/netbox/metadata.xml @@ -0,0 +1,8 @@ + + + + + williamh@gentoo.org + William Hubbs + + diff --git a/www-apps/netbox/netbox-2.10.5.ebuild b/www-apps/netbox/netbox-2.10.5.ebuild new file mode 100644 index 0000000..247bfa9 --- /dev/null +++ b/www-apps/netbox/netbox-2.10.5.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_{7..9} ) +inherit python-single-r1 readme.gentoo-r1 + +DESCRIPTION="IP address and data center infrastructure management tool" +HOMEPAGE="https://github.com/netbox-community/netbox" +SRC_URI="https://github.com/netbox-community/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" +IUSE="ldap" +REQUIRED_USE=${PYTHON_REQUIRED_USE} + +RDEPEND=" + acct-group/netbox + acct-user/netbox + ${PYTHON_DEPS} + $(python_gen_cond_dep ' + >=dev-python/django-3.1.3[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-cacheops-5.1[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-cors-headers-3.5.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-debug-toolbar-3.1.1[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-filter-2.4.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-mptt-0.11.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-pglocks-1.0.4[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-prometheus-2.1.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/djangorestframework-3.12.2[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-rq-2.4.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-tables2-2.3.3[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-taggit-1.3.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/django-timezone-field-4.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/drf-yasg-1.20.0[${PYTHON_MULTI_USEDEP},validation] + >=dev-python/jinja-2.11.2[${PYTHON_MULTI_USEDEP}] + >=dev-python/markdown-3.3.3[${PYTHON_MULTI_USEDEP}] + >=dev-python/netaddr-0.8.0[${PYTHON_MULTI_USEDEP}] + >=dev-python/pillow-8.0.1[${PYTHON_MULTI_USEDEP}] + >=dev-python/psycopg-2.8.6[${PYTHON_MULTI_USEDEP}] + >=dev-python/pycryptodome-3.9.9[${PYTHON_MULTI_USEDEP}] + >=dev-python/pyyaml-5.3.1[${PYTHON_MULTI_USEDEP}] + >=dev-python/svgwrite-1.4[${PYTHON_MULTI_USEDEP}] + www-servers/gunicorn[${PYTHON_MULTI_USEDEP}] + ldap? ( >=dev-python/django-auth-ldap-1.7[${PYTHON_MULTI_USEDEP}] ) + ')" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-2.6.7-no-pip.patch + ) + +DISABLE_AUTOFORMATTING=YES +DOC_CONTENTS=" +netbox is installed on your system. However, there are some manual steps +you need to complete from the installation guide [1]. + +On Gentoo, the configuration files you need to edit are located in +/etc/netbox, not /opt/netbox as shown in the installation guide. + +If this is a new installation, please follow the installation guide +other than this difference. Also, if you need ldap, set the appropriate +use flag when emerging netbox to install the dependency for it. + +Once that is done, you should be able to add the netbox service to the +default runlevel and start it. + +If you want to use webhooks, you should also add the netbox-rqworker +service to the default runlevel and start it. + +If this is an upgrade, follow these instructions: + +Stop the netbox service. If the netbox-rqworker service is running, +stop it as well. + +Next, run the upgrade script as described in the upgrading guide[2]. + +Next, check for new configuration options and set them as appropriate +for your system. + +Next, start the netbox service. + +Finally, if you are using webhooks, start the netbox-rqworker service. + +[1] https://netbox.readthedocs.io/en/stable/installation/ +[2] https://netbox.readthedocs.io/en/stable/installation/upgrading/ +" + +src_install() { + dodir /opt + cp -a ../${P} "${ED}"/opt + dosym ${P} /opt/netbox +dosym ../../etc/netbox/gunicorn_config.py /opt/netbox/gunicorn_config.py + dosym ../../../../etc/netbox/configuration.py \ + /opt/netbox/netbox/netbox/configuration.py + dodir /etc/netbox + insinto /etc/netbox + newins netbox/netbox/configuration.example.py configuration.py + doins "${FILESDIR}"/gunicorn_config.py + fowners -R netbox:netbox /etc/netbox /opt/${P} + fowners -h netbox:netbox /opt/netbox + fperms o= /etc/netbox/configuration.py /etc/netbox/gunicorn_config.py + newinitd "${FILESDIR}"/${PN}.initd ${PN} + newinitd "${FILESDIR}"/${PN}-rqworker.initd ${PN}-rqworker + keepdir /var/log/netbox + fowners -R netbox:netbox /var/log/netbox + readme.gentoo_create_doc +} + +pkg_postinst() { + readme.gentoo_print_elog + local r + for r in $REPLACING_VERSIONS; do + if [[ $r = "2.5.10" ]]; then + ewarn "The home directory of the netbox user is now /var/lib/netbox" + ewarn "Please adjust your system." + fi + done +}