diff --git a/net-mgmt/netbox/Makefile b/net-mgmt/netbox/Makefile index ab6064fecb1e..66a5316e8208 100644 --- a/net-mgmt/netbox/Makefile +++ b/net-mgmt/netbox/Makefile @@ -1,117 +1,118 @@ PORTNAME= netbox DISTVERSIONPREFIX= v -DISTVERSION= 4.4.10 +DISTVERSION= 4.5.4 CATEGORIES= net-mgmt python MAINTAINER= kai@FreeBSD.org COMMENT= IP address management tool WWW= https://github.com/netbox-community/netbox LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE.txt # NetBox has fixed Python package dependencies listed in "requirements.txt" # which are not checked during build/runtime because they're usually installed # via devel/py-pip. # # As a rule, slight deviations are usually not a problem, but there are a few # Django packages that are known for regressions in conjunction with NetBox and # should therefore only be updated with caution. # # - devel/py-dj52-django-rq # - www/py-dj52-django-filter # - www/py-dj52-django-tables2 # - www/py-dj52-djangorestframework # -RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=5.2.9<5.3:www/py-django52@${PY_FLAVOR} \ +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=5.2.11<5.3:www/py-django52@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-cors-headers>=4.9.0<5:www/py-dj52-django-cors-headers@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dj52-django-debug-toolbar>=6.1.0<7:www/py-dj52-django-debug-toolbar@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj52-django-debug-toolbar>=6.2.0<7:www/py-dj52-django-debug-toolbar@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-filter>=25.2<26:www/py-dj52-django-filter@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-htmx>=1.27.0<2:www/py-dj52-django-htmx@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dj52-django-mptt>=0.17.0<0.18:www/py-dj52-django-mptt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj52-django-mptt>=0.18.0<0.19:www/py-dj52-django-mptt@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-prometheus>=2.4.1<2.5:www/py-dj52-django-prometheus@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-redis>=6.0.0<7:www/py-dj52-django-redis@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-rich>=2.2.0<3:www/py-dj52-django-rich@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dj52-django-rq>=3.2.1<3.3:devel/py-dj52-django-rq@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj52-django-rq>=3.2.2<3.3:devel/py-dj52-django-rq@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-storages>=1.14.6<2:www/py-dj52-django-storages@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-tables2>=2.8.0<2.9:www/py-dj52-django-tables2@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-taggit>=6.1.0<7:www/py-dj52-django-taggit@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-django-timezone-field>=7.2.1<8:www/py-dj52-django-timezone-field@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-djangorestframework>=3.16.1<3.17.0:www/py-dj52-djangorestframework@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-drf-spectacular>=0.29.0<1:www/py-dj52-drf-spectacular@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dj52-drf-spectacular-sidecar>=2026.1.1:www/py-dj52-drf-spectacular-sidecar@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj52-drf-spectacular-sidecar>=2026.3.1:www/py-dj52-drf-spectacular-sidecar@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dj52-social-auth-app-django>=5.7.0<6:www/py-dj52-social-auth-app-django@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dj52-sorl-thumbnail>=12.11.0<13:graphics/py-dj52-sorl-thumbnail@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dj52-strawberry-graphql>=0.288.2<0.300:devel/py-dj52-strawberry-graphql@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dj52-strawberry-graphql-django>=0.73.0<1:www/py-dj52-strawberry-graphql-django@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj52-sorl-thumbnail>=13.0.0<14:graphics/py-dj52-sorl-thumbnail@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj52-strawberry-graphql>=0.307.1<1:devel/py-dj52-strawberry-graphql@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj52-strawberry-graphql-django>=0.79.0<1:www/py-dj52-strawberry-graphql-django@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}django-pglocks>=1.0.4<1.1:www/py-django-pglocks@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}colorama>=0.4.6<1:devel/py-colorama@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}feedparser>=6.0.12<7:textproc/py-feedparser@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}Jinja2>=3.1.6<4:devel/py-Jinja2@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}jsonschema>=4.25.1<5:devel/py-jsonschema@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}markdown>=3.9<3.11:textproc/py-markdown@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}mkdocs-material>=9.7.1<10:textproc/py-mkdocs-material@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}mkdocstrings>=1.0.0<2:textproc/py-mkdocstrings@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}mkdocstrings-python>=2.0.1:textproc/py-mkdocstrings-python@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}jsonschema>=4.26.0<5:devel/py-jsonschema@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}markdown>=3.10<4:textproc/py-markdown@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mkdocs>=1.6.1<2:textproc/py-mkdocs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mkdocs-material>=9.7.3<10:textproc/py-mkdocs-material@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mkdocstrings>=1.0.3<2:textproc/py-mkdocstrings@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mkdocstrings-python>=2.0.2:textproc/py-mkdocstrings-python@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}netaddr>=1.3.0<2:net/py-netaddr@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}nh3>=0.3.2<1:www/py-nh3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}nh3>=0.3.3<1:www/py-nh3@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pillow>=11.3.0:graphics/py-pillow@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}psycopg>=3.2.13<4:databases/py-psycopg@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}psycopg-c>=3.2.13<4:databases/py-psycopg-c@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}psycopg-pool>=3.3.0<4:databases/py-psycopg-pool@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}requests>=2.32.5<3:www/py-requests@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}rq>=2.6.1<3:devel/py-rq@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}social-auth-core>=4.8.3<5:security/py-social-auth-core@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rq>=2.7.0<3:devel/py-rq@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}social-auth-core>=4.8.5<5:security/py-social-auth-core@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}svgwrite>=1.4.3<2:graphics/py-svgwrite@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}tablib>=3.9.0<4:textproc/py-tablib@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}tzdata>=2025.2:devel/py-tzdata@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}tzdata>=2025.3:devel/py-tzdata@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyyaml>=6.0.3<7:devel/py-pyyaml@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}gunicorn>=23.0.0<26:www/py-gunicorn@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}gunicorn>=25.1.0<26:www/py-gunicorn@${PY_FLAVOR} USES= cpe pgsql:14+ python CPE_VENDOR= netbox USE_GITHUB= yes GH_ACCOUNT= netbox-community SUB_FILES= 850.netbox-housekeeping.sample netbox_rq.sample netboxrc.sample pkg-message SUB_LIST= DATADIR=${DATADIR} PYTHON_CMD=${PYTHON_CMD} PYTHON_VER=${PYTHON_VER} WWWOWN=${WWWOWN} NO_BUILD= yes NO_ARCH= yes OPTIONS_DEFINE= EXAMPLES OPTIONS_GROUP= BACKENDS OPTIONS_GROUP_BACKENDS= GIT LDAP S3 SENTRY GIT_DESC= Git backend support LDAP_DESC= LDAP backend support S3_DESC= Amazon S3 backend support SENTRY_DESC= Sentry monitoring support GIT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dulwich>0:devel/py-dulwich@${PY_FLAVOR} LDAP_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dj52-django-auth-ldap>0:www/py-dj52-django-auth-ldap S3_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}boto3>0:www/py-boto3@${PY_FLAVOR} SENTRY_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sentry-sdk>0:devel/py-sentry-sdk@${PY_FLAVOR} do-install: cd ${WRKSRC}/netbox ; \ for src in $$( ${FIND} . ! -name '*.bak' -a ! -name '*.orig' ) ; do \ dst=${STAGEDIR}${DATADIR}$${src#.} ; \ if ${TEST} -d "$$src" ; then \ ${MKDIR} "$$dst" ; \ else \ ${INSTALL_DATA} "$$src" "$$dst" ; \ fi \ done cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DATADIR} ${INSTALL_DATA} ${WRKSRC}/mkdocs.yml ${STAGEDIR}${DATADIR} post-install-EXAMPLES-on: @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKDIR}/850.netbox-housekeeping.sample ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKDIR}/netbox_rq.sample ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKDIR}/netboxrc.sample ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKSRC}/contrib/apache.conf ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKSRC}/contrib/gunicorn.py ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKSRC}/contrib/nginx.conf ${STAGEDIR}${EXAMPLESDIR} .include diff --git a/net-mgmt/netbox/distinfo b/net-mgmt/netbox/distinfo index 11f5493d55e4..cc01fb385b83 100644 --- a/net-mgmt/netbox/distinfo +++ b/net-mgmt/netbox/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1767722253 -SHA256 (netbox-community-netbox-v4.4.10_GH0.tar.gz) = cbe9c196e37c0586d5e92480d326f9ec014636e7b0455c96025d1f906458bb8c -SIZE (netbox-community-netbox-v4.4.10_GH0.tar.gz) = 19526255 +TIMESTAMP = 1772571417 +SHA256 (netbox-community-netbox-v4.5.4_GH0.tar.gz) = a00197bf7b479879c79198eccfad4cd4517c72b66c40ea4a3d6f4753ee2afd9c +SIZE (netbox-community-netbox-v4.5.4_GH0.tar.gz) = 19296476 diff --git a/net-mgmt/netbox/files/patch-netbox_netbox_settings.py b/net-mgmt/netbox/files/patch-netbox_netbox_settings.py new file mode 100644 index 000000000000..e6d0b3286751 --- /dev/null +++ b/net-mgmt/netbox/files/patch-netbox_netbox_settings.py @@ -0,0 +1,17 @@ +Remove check for Python < 3.12 + +--- netbox/netbox/settings.py.orig 2026-03-03 21:01:30 UTC ++++ netbox/netbox/settings.py +@@ -33,12 +33,6 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abs + # Set the base directory two levels up + BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +-# Validate the Python version +-if sys.version_info < (3, 12): # noqa: UP036 +- raise RuntimeError( +- f"NetBox requires Python 3.12 or later. (Currently installed: Python {platform.python_version()})" +- ) +- + # + # Configuration import + # diff --git a/net-mgmt/netbox/files/pkg-message.in b/net-mgmt/netbox/files/pkg-message.in index 2dc5df901849..2a61e4e19824 100644 --- a/net-mgmt/netbox/files/pkg-message.in +++ b/net-mgmt/netbox/files/pkg-message.in @@ -1,510 +1,388 @@ [ { type: install message: < non-default GIT option * www/py-dj42-django-auth-ldap -> non-default LDAP option * www/py-boto3 -> non-default S3 option EOD } { type: upgrade maximum_version: 3.7.0 message: < non-default SENTRY option 3. Please note that the command "python%%PYTHON_VER%% manage.py clearcache" has been removed. The general update instructions in this pkg-message and the netbox sample rc script (available via the EXAMPLES option) have also been updated accordingly. EOD } { type: upgrade maximum_version: 4.0.5 message: <