From a08380235b0468b4d234d96cd45cd334257d50be Mon Sep 17 00:00:00 2001 From: Alarig Le Lay Date: Tue, 27 Aug 2024 18:59:46 +0200 Subject: [PATCH] www-apps/netbox: add 3.6.8 Signed-off-by: Alarig Le Lay --- www-apps/netbox/Manifest | 1 + .../netbox/files/netbox-3.6.8-no-pip.patch | 89 ++++++++++ www-apps/netbox/netbox-3.6.8.ebuild | 163 ++++++++++++++++++ 3 files changed, 253 insertions(+) create mode 100644 www-apps/netbox/files/netbox-3.6.8-no-pip.patch create mode 100644 www-apps/netbox/netbox-3.6.8.ebuild diff --git a/www-apps/netbox/Manifest b/www-apps/netbox/Manifest index ad9af0b..67e55da 100644 --- a/www-apps/netbox/Manifest +++ b/www-apps/netbox/Manifest @@ -3,3 +3,4 @@ DIST netbox-3.2.9.tar.gz 4837923 BLAKE2B 396789648aa529682600de22d90f4639f4fbee2 DIST netbox-3.3.9.tar.gz 7315280 BLAKE2B f3b8ec5ca83e98138f6ccd140af2f59776020e8f1e438a92fab2523700a7b6e2f712472874cd368c586c94975c1120e4431b0b3cafc360a455975960adaa4eff SHA512 2bb1868bbf86a7538bb4bfc6256f094360a4779c9e5dafaf1d9fb925c116a59a3f244d5b0b62f2df9b1d7e7b9608cc1498067fab639e29e0486e469e2e285cf8 DIST netbox-3.4.9.tar.gz 7411506 BLAKE2B 3c32365cb727bbbe1d62cb6dca5e58406199af5babddaa87d05e79f543c3f8910bfcd2726a7aed6fb49a9d148af506d39cef4c971e2e84fbeb51feb6a66418bc SHA512 40e858cbc87460c22c7a138fdb9b33bb815043d53537e160466251066918d873b2037244dad4d4f0529375ee5561827f1129274e2a0b5d1318ac483d008fe445 DIST netbox-3.5.8.tar.gz 5776278 BLAKE2B 097ab2e765408dbfc23761df1684be5e9f57d781c5864708404493c3376ec96e294b5626285ef8e277e03b3654342e9a863de82c277c0e529db3e6cdb71b7bbe SHA512 067c3ce2dadb9f36eb53ce21ce776ceb1dcb35f4a2411eca519e0f64498a1ed082d1b2bd59f8a08ccd522021919ea812dae6d027d0dfd694da3fcb4f7d601af0 +DIST netbox-3.6.8.tar.gz 7286549 BLAKE2B afd222cc79a665e5a3ab0d4d59c87b6a272b7e2109191105cb4816c9733b5f8222c9f130662d54e4466d05d1aa786890d420b552411808c9edb2b44b40be322d SHA512 1c33856231a85b866d3b7d8b2bb8e88e235210b251004fe7ce4d339f9c3c403f22f727e4bf61fb8a841a8809c97f20780982ac6120cf11704b908669e1d32852 diff --git a/www-apps/netbox/files/netbox-3.6.8-no-pip.patch b/www-apps/netbox/files/netbox-3.6.8-no-pip.patch new file mode 100644 index 0000000..79f46fa --- /dev/null +++ b/www-apps/netbox/files/netbox-3.6.8-no-pip.patch @@ -0,0 +1,89 @@ +--- netbox-3.6.8/upgrade.sh 2024-08-27 18:51:23.628946899 +0200 ++++ netbox-3.6.8/upgrade.sh 2024-08-27 18:59:06.015611971 +0200 +@@ -11,77 +11,6 @@ + NETBOX_VERSION="$(grep ^VERSION netbox/netbox/settings.py | cut -d\' -f2)" + echo "You are installing (or upgrading to) NetBox version ${NETBOX_VERSION}" + +-VIRTUALENV="$(pwd -P)/venv" +-PYTHON="${PYTHON:-python3}" +- +-# Validate the minimum required Python version +-COMMAND="${PYTHON} -c 'import sys; exit(1 if sys.version_info < (3, 8) else 0)'" +-PYTHON_VERSION=$(eval "${PYTHON} -V") +-eval $COMMAND || { +- echo "--------------------------------------------------------------------" +- echo "ERROR: Unsupported Python version: ${PYTHON_VERSION}. NetBox requires" +- echo "Python 3.8 or later. To specify an alternate Python executable, set" +- echo "the PYTHON environment variable. For example:" +- echo "" +- echo " sudo PYTHON=/usr/bin/python3.8 ./upgrade.sh" +- echo "" +- echo "To show your current Python version: ${PYTHON} -V" +- echo "--------------------------------------------------------------------" +- exit 1 +-} +-echo "Using ${PYTHON_VERSION}" +- +-# Remove the existing virtual environment (if any) +-if [ -d "$VIRTUALENV" ]; then +- COMMAND="rm -rf ${VIRTUALENV}" +- echo "Removing old virtual environment..." +- eval $COMMAND +-else +- WARN_MISSING_VENV=1 +-fi +- +-# Create a new virtual environment +-COMMAND="${PYTHON} -m venv ${VIRTUALENV}" +-echo "Creating a new virtual environment at ${VIRTUALENV}..." +-eval $COMMAND || { +- echo "--------------------------------------------------------------------" +- echo "ERROR: Failed to create the virtual environment. Check that you have" +- echo "the required system packages installed and the following path is" +- echo "writable: ${VIRTUALENV}" +- echo "--------------------------------------------------------------------" +- exit 1 +-} +- +-# Activate the virtual environment +-source "${VIRTUALENV}/bin/activate" +- +-# Upgrade pip +-COMMAND="pip install --upgrade pip" +-echo "Updating pip ($COMMAND)..." +-eval $COMMAND || exit 1 +-pip -V +- +-# Install necessary system packages +-COMMAND="pip install wheel" +-echo "Installing Python system packages ($COMMAND)..." +-eval $COMMAND || exit 1 +- +-# Install required Python packages +-COMMAND="pip install -r requirements.txt" +-echo "Installing core dependencies ($COMMAND)..." +-eval $COMMAND || exit 1 +- +-# Install optional packages (if any) +-if [ -s "local_requirements.txt" ]; then +- COMMAND="pip install -r local_requirements.txt" +- echo "Installing local dependencies ($COMMAND)..." +- eval $COMMAND || exit 1 +-elif [ -f "local_requirements.txt" ]; then +- echo "Skipping local dependencies (local_requirements.txt is empty)" +-else +- echo "Skipping local dependencies (local_requirements.txt not found)" +-fi +- + # Apply any database migrations + COMMAND="python3 netbox/manage.py migrate" + echo "Applying database migrations ($COMMAND)..." +@@ -95,7 +24,7 @@ + # Build the local documentation + COMMAND="mkdocs build" + echo "Building documentation ($COMMAND)..." +-eval $COMMAND || exit 1 ++eval $COMMAND || echo "Making doc failed but who cares" + + # Collect static files + COMMAND="python3 netbox/manage.py collectstatic --no-input" diff --git a/www-apps/netbox/netbox-3.6.8.ebuild b/www-apps/netbox/netbox-3.6.8.ebuild new file mode 100644 index 0000000..89fc0f1 --- /dev/null +++ b/www-apps/netbox/netbox-3.6.8.ebuild @@ -0,0 +1,163 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_{11..12} ) +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/bleach-6.1.0[${PYTHON_USEDEP}] + =dev-python/django-4.2.8[${PYTHON_USEDEP}] + >=dev-python/django-cors-headers-4.3.1[${PYTHON_USEDEP}] + >=dev-python/django-debug-toolbar-4.2.0[${PYTHON_USEDEP}] + >=dev-python/django-filter-23.5[${PYTHON_USEDEP}] + >=dev-python/django-graphiql-debug-toolbar-0.2.0[${PYTHON_USEDEP}] + >=dev-python/django-mptt-0.14[${PYTHON_USEDEP}] + >=dev-python/django-pglocks-1.0.4[${PYTHON_USEDEP}] + >=dev-python/django-prometheus-2.3.1[${PYTHON_USEDEP}] + >=dev-python/django-redis-5.4.0[${PYTHON_USEDEP}] + >=dev-python/django-rich-1.8.0[${PYTHON_USEDEP}] + >=dev-python/django-rq-2.10.1[${PYTHON_USEDEP}] + >=dev-python/django-tables2-2.7.0[${PYTHON_USEDEP}] + >=dev-python/django-taggit-4.0.0[${PYTHON_USEDEP}] + >=dev-python/django-timezone-field-6.1.0[${PYTHON_USEDEP}] + >=dev-python/djangorestframework-3.14.0[${PYTHON_USEDEP}] + >=dev-python/drf-spectacular-0.27.0[${PYTHON_USEDEP}] + >=dev-python/drf-spectacular-sidecar-2023.12.1[${PYTHON_USEDEP}] + >=dev-python/feedparser-6.0.11[${PYTHON_USEDEP}] + >=dev-python/graphene-django-3.0.0[${PYTHON_USEDEP}] + >=www-servers/gunicorn-21.2.0[${PYTHON_USEDEP}] + >=dev-python/jinja-3.1.2[${PYTHON_USEDEP}] + >=dev-python/markdown-3.3.7[${PYTHON_USEDEP}] + >=dev-python/mkdocs-material-9.5.3[${PYTHON_USEDEP}] + dev-python/mkdocstrings-python[${PYTHON_USEDEP}] + >=dev-python/netaddr-0.9.0[${PYTHON_USEDEP}] + >=dev-python/pillow-10.1.0[${PYTHON_USEDEP}] + =dev-python/psycopg-3.1[${PYTHON_USEDEP}] + >=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}] + >=dev-python/requests-2.31.0[${PYTHON_USEDEP}] + >=dev-python/sentry-sdk-1.39.1[${PYTHON_USEDEP}] + >=dev-python/social-auth-app-django-5.4.0[${PYTHON_USEDEP}] + >=dev-python/social-auth-core-4.5.1[${PYTHON_USEDEP}] + dev-python/python-jose[${PYTHON_USEDEP}] + >=dev-python/svgwrite-1.4.3[${PYTHON_USEDEP}] + >=dev-python/tablib-3.5.0[${PYTHON_USEDEP}] + >=dev-python/tzdata-2023.3[${PYTHON_USEDEP}] + ldap? ( >=dev-python/django-auth-ldap-4.1.0[${PYTHON_USEDEP}] ) + ')" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${P}-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_prepare() { + default + python_fix_shebang netbox/manage.py +} + +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 + for LAST_PREVIOUS_VERSION in $REPLACING_VERSIONS; do + if [[ "$LAST_PREVIOUS_VERSION" = "2.5.10" ]]; then + ewarn "The home directory of the netbox user is now /var/lib/netbox" + ewarn "Please adjust your system." + fi + done + + if [ -z "${LAST_PREVIOUS_VERSION}" ]; then + exit + fi + + LAST_BASE_DIRECTORY="/opt/netbox-${LAST_PREVIOUS_VERSION}" + NBCP="su -l ${PN} -s /bin/sh -c cp" + if [ -f "${LAST_BASE_DIRECTORY}/local_requirements.txt}" ]; then + ${NBCP} "${LAST_BASE_DIRECTORY}/local_requirements.txt}" /opt/netbox + fi + if [ -f "${LAST_BASE_DIRECTORY}/netbox/netbox/ldap_config.py" ]; then + ${NBCP} "${LAST_BASE_DIRECTORY}/netbox/netbox/ldap_config.py" /opt/netbox/netbox/netbox/ + fi + if [ -d "${LAST_BASE_DIRECTORY}/netbox/media" ]; then + ${NBCP} -pr "${LAST_BASE_DIRECTORY}/netbox/media" /opt/netbox/netbox/ + fi + if [ -d "${LAST_BASE_DIRECTORY}/netbox/scripts" ]; then + ${NBCP} -pr "${LAST_BASE_DIRECTORY}/netbox/scripts" /opt/netbox/netbox/ + fi + if [ -d "${LAST_BASE_DIRECTORY}/netbox/reports" ]; then + ${NBCP} -pr "${LAST_BASE_DIRECTORY}/netbox/reports" /opt/netbox/netbox/ + fi + su -p -s /bin/sh -c "/opt/${P}/upgrade.sh" "${PN}" +}