From a1a2a24dd2904c2473e0ed60a5935f1c8c5fe3e0 Mon Sep 17 00:00:00 2001 From: Alarig Le Lay Date: Tue, 7 Jan 2025 22:34:29 +0100 Subject: [PATCH] www-apps/netbox: add 4.1.11 Signed-off-by: Alarig Le Lay --- www-apps/netbox/Manifest | 1 + .../netbox/files/netbox-4.1.11-no-pip.patch | 94 ++++++++++ www-apps/netbox/netbox-4.1.11.ebuild | 162 ++++++++++++++++++ 3 files changed, 257 insertions(+) create mode 100644 www-apps/netbox/files/netbox-4.1.11-no-pip.patch create mode 100644 www-apps/netbox/netbox-4.1.11.ebuild diff --git a/www-apps/netbox/Manifest b/www-apps/netbox/Manifest index 8e4dfe8..86e723b 100644 --- a/www-apps/netbox/Manifest +++ b/www-apps/netbox/Manifest @@ -1,2 +1,3 @@ DIST netbox-3.6.8.tar.gz 7286549 BLAKE2B afd222cc79a665e5a3ab0d4d59c87b6a272b7e2109191105cb4816c9733b5f8222c9f130662d54e4466d05d1aa786890d420b552411808c9edb2b44b40be322d SHA512 1c33856231a85b866d3b7d8b2bb8e88e235210b251004fe7ce4d339f9c3c403f22f727e4bf61fb8a841a8809c97f20780982ac6120cf11704b908669e1d32852 DIST netbox-4.0.11.tar.gz 19402442 BLAKE2B 404ac51c4758f5afa35296b5b41b3384768c9caf3b23023a9aa4f1aa5caf8d5224ac4909284fd9ea6db54d49c5a2fc571db791447349df526fed7ead6b835072 SHA512 172f8ad1785f28b7ebe5a5e84d06da6420b2ff0296eb0b5ad80c3a0bb263973e84174eaf8cd0b782413f806183915b6b0bb4ba217dbc042e5edc040689874470 +DIST netbox-4.1.11.tar.gz 18113538 BLAKE2B 9794c065d63b78ce4df415d69eb810fa0bf99ed6d5a3793934afd86bdb0d9bd2a6b5defa5d030f73775d7ca3ee3d70e48de32d39ab69b9f647ffd3e46621f141 SHA512 5a376ef05ac4721fd061f2658a3d192fe80e1cdbee363eb47f1f673f5cc6cb3d8302270bd86e994ad1dc46850572792251205255be44eba6facce4b768aaeeeb diff --git a/www-apps/netbox/files/netbox-4.1.11-no-pip.patch b/www-apps/netbox/files/netbox-4.1.11-no-pip.patch new file mode 100644 index 0000000..d18917a --- /dev/null +++ b/www-apps/netbox/files/netbox-4.1.11-no-pip.patch @@ -0,0 +1,94 @@ +--- netbox-4.1.11/upgrade.sh 2025-01-07 22:30:02.258576535 +0100 ++++ netbox-4.1.11/upgrade.sh 2025-01-07 22:32:03.712890624 +0100 +@@ -6,82 +6,6 @@ + # variable (if set), or fall back to "python3". Note that NetBox v4.0+ requires + # Python 3.10 or later. + +-cd "$(dirname "$0")" +- +-NETBOX_VERSION="$(grep ^version netbox/release.yaml | 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, 10) else 0)'" +-PYTHON_VERSION=$(eval "${PYTHON} -V") +-eval $COMMAND || { +- echo "--------------------------------------------------------------------" +- echo "ERROR: Unsupported Python version: ${PYTHON_VERSION}. NetBox requires" +- echo "Python 3.10 or later. To specify an alternate Python executable, set" +- echo "the PYTHON environment variable. For example:" +- echo "" +- echo " sudo PYTHON=/usr/bin/python3.10 ./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 +19,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-4.1.11.ebuild b/www-apps/netbox/netbox-4.1.11.ebuild new file mode 100644 index 0000000..442070e --- /dev/null +++ b/www-apps/netbox/netbox-4.1.11.ebuild @@ -0,0 +1,162 @@ +# 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/django-5.0.10[${PYTHON_USEDEP}] + >=dev-python/django-cors-headers-4.6.0[${PYTHON_USEDEP}] + >=dev-python/django-debug-toolbar-4.4.6[${PYTHON_USEDEP}] + >=dev-python/django-filter-24.3[${PYTHON_USEDEP}] + >=dev-python/django-htmx-1.21.0[${PYTHON_USEDEP}] + >=dev-python/django-graphiql-debug-toolbar-0.2.0[${PYTHON_USEDEP}] + >=dev-python/django-mptt-0.16.0[${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.13.0[${PYTHON_USEDEP}] + >=dev-python/django-rq-3.0[${PYTHON_USEDEP}] + >=dev-python/django-taggit-6.1.0[${PYTHON_USEDEP}] + >=dev-python/django-tables2-2.7.5[${PYTHON_USEDEP}] + >=dev-python/django-timezone-field-7.0[${PYTHON_USEDEP}] + >=dev-python/djangorestframework-3.15.2[${PYTHON_USEDEP}] + >=dev-python/drf-spectacular-0.28.0[${PYTHON_USEDEP}] + >=dev-python/drf-spectacular-sidecar-2024.12.1[${PYTHON_USEDEP}] + >=dev-python/feedparser-6.0.11[${PYTHON_USEDEP}] + >=www-servers/gunicorn-23.0.0[${PYTHON_USEDEP}] + >=dev-python/jinja2-3.1.5[${PYTHON_USEDEP}] + >=dev-python/markdown-3.7[${PYTHON_USEDEP}] + >=dev-python/mkdocs-material-9.5.49[${PYTHON_USEDEP}] + dev-python/mkdocstrings-python[${PYTHON_USEDEP}] + >=dev-python/netaddr-1.3.0[${PYTHON_USEDEP}] + >=dev-python/nh3-0.2.20[${PYTHON_USEDEP}] + >=dev-python/pillow-11.1.0[${PYTHON_USEDEP}] + >=dev-python/psycopg-3.2.3[${PYTHON_USEDEP}] + >=dev-python/pyyaml-6.0.2[${PYTHON_USEDEP}] + >=dev-python/requests-2.32.3[${PYTHON_USEDEP}] + >=dev-python/social-auth-app-django-5.4.2[${PYTHON_USEDEP}] + >=dev-python/social-auth-core-4.5.4[${PYTHON_USEDEP}] + >=dev-python/strawberry-graphql-0.256.1[${PYTHON_USEDEP}] + >=dev-python/strawberry-graphql-django-0.53.1[${PYTHON_USEDEP}] + >=dev-python/svgwrite-1.4.3[${PYTHON_USEDEP}] + >=dev-python/tablib-3.7.0[${PYTHON_USEDEP}] + >=dev-python/tzdata-2024.2[${PYTHON_USEDEP}] + ldap? ( dev-python/django-auth-ldap[${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}" +}