Bug 270792

Summary: net-mgmt/netbox: fails to build because of conflicting dependencies
Product: Ports & Packages Reporter: Fredrik Eriksson <freebsd>
Component: Individual Port(s)Assignee: Kai Knoblich <kai>
Status: Closed FIXED    
Severity: Affects Only Me CC: einar, otis, skreuzer, sunpoet, thorsteinn
Priority: --- Flags: kai: maintainer-feedback+
kai: maintainer-feedback+
Version: Latest   
Hardware: Any   
OS: Any   
See Also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270746
https://github.com/jazzband/django-redis/issues/595
Attachments:
Description Flags
poudriere log for netbox-3.4.7
none
py-dj41-django-rq-fix-conflicting-install-with-netbox-v1.patch
none
fix-install-conflicts-for-netbox-v2.patch
none
py-dj41-django-redis-relax-contraints-and-switch-to-py-redis-v3.patch none

Description Fredrik Eriksson 2023-04-12 15:54:08 UTC
Created attachment 241439 [details]
poudriere log for netbox-3.4.7

Poudriere log is attached, but if I interpret the log correctly netbox tries to add both the conflicting packages py39-redis-4.5.4 and py39-redis3-3.5.3:

===>   netbox-3.4.7 depends on package: py39-dj41-django-redis>=5.2.0<6 - not found
===>   Installing existing package /packages/All/py39-dj41-django-redis-5.2.0_1.pkg
[13_2amd64-latest-pgsql-job-01] Installing py39-dj41-django-redis-5.2.0_1...
[13_2amd64-latest-pgsql-job-01] `-- Installing py39-redis3-3.5.3...
...
===>   netbox-3.4.7 depends on package: py39-dj41-django-rq>=2.7.0<2.8 - not found
===>   Installing existing package /packages/All/py39-dj41-django-rq-2.7.0.pkg
[13_2amd64-latest-pgsql-job-01] Installing py39-dj41-django-rq-2.7.0...
[13_2amd64-latest-pgsql-job-01] `-- Installing py39-redis-4.5.4...
[13_2amd64-latest-pgsql-job-01] |   `-- Installing py39-async_timeout-4.0.2...
[13_2amd64-latest-pgsql-job-01] |   `-- Extracting py39-async_timeout-4.0.2: .......... done
pkg-static: py39-redis-4.5.4 conflicts with py39-redis3-3.5.3 (installs files into the same place).  Problematic file: /usr/local/lib/python3.9/site-packages/redis/__init__.py

Failed to install the following 1 package(s): /packages/All/py39-dj41-django-rq-2.7.0.pkg
*** Error code 1
Comment 1 Kai Knoblich freebsd_committer freebsd_triage 2023-04-12 19:04:39 UTC
Created attachment 241444 [details]
py-dj41-django-rq-fix-conflicting-install-with-netbox-v1.patch

(In reply to Fredrik Eriksson from comment #0)

Hi Fredrik, thank you for your report!  Your assumption is right: The conflict between py39-redis and py39-redis3 is caused by the py39-dj41-django-rq package.

With ports 957fc72127d3 the www/py-dj41-django-redis port, which is also used by NetBox, was changed to use databases/py-redis3 instead of databases/py-redis.

The same needs to be done for devel/py-dj41-django-rq to remedy issue you reported, please see the attached patch.
Comment 2 Kai Knoblich freebsd_committer freebsd_triage 2023-04-12 19:08:43 UTC
@sunpoet:

Can you please have a look at attached patch and commit it?  Or just give me short feedback and I'll commit it as soon as possible.

Thanks in advance!
Comment 3 Kai Knoblich freebsd_committer freebsd_triage 2023-04-12 23:44:18 UTC
Created attachment 241453 [details]
fix-install-conflicts-for-netbox-v2.patch

The previous patch was incomplete, as devel/py-rq and its remaining consumers also need to be switched to databases/py-redis3 to get a successful build of net-mgmt/netbox and avoid conflicting installations.

@skreuzer: Are you OK with the switch from databases/py-redis to databases/py-redis3 for devel/py-rq you maintain?

@sunpoet: Are you OK with switching following ports you maintain from databases/py-redis to databases/py-redis3?

- devel/py-dj40-django-rq?
- devel/py-dj41-django-rq?
- devel/py-django-rq?
- dns/py-dns-crawler
Comment 4 Po-Chuan Hsieh freebsd_committer freebsd_triage 2023-04-13 04:06:21 UTC
(In reply to Kai Knoblich from comment #3)

Correct me if I'm wrong.

1. net-mgmt/netbox does not support redis 4 yet. That's why you added www/py-dj41-django-redis with "<4" constraint. Therefore we have to stay on databases/py-redis3, right?

2. Since net-mgmt/netbox is using Django 4.1, it should be sufficient to change only devel/py-dj41-django-rq from databases/py-redis to databases/py-redis3. Django 3.2 and 4.0 ports should be unaffected.

3. Since net-mgmt/netbox does not use www/py-dj40-django-redis anymore, I should relax the version constraint (rmeove <4) and change it back to databases/py-redis.
Comment 5 Po-Chuan Hsieh freebsd_committer freebsd_triage 2023-04-13 04:08:34 UTC
(In reply to Kai Knoblich from comment #3)
(In reply to Po-Chuan Hsieh from comment #4)

Forgot to say that I'm OK with devel/py-dj41-django-rq change.
Comment 6 Kai Knoblich freebsd_committer freebsd_triage 2023-04-13 07:32:33 UTC
(In reply to Po-Chuan Hsieh from comment #4)

That's correct so far, and the version constraint "<4" was added to py-dj41-django-redis just as a precaution to avoid problems/regressions when databases/py-redis is upgraded to the next major version (which happened as of April 10th).

Some more background here about the decision: When I committed www/py-dj41-django-redis into the ports tree on February 22, py-redis was still at version 3.5.3 and there's still an open bug (#595) at upstream of py-django-redis in relation to py-redis >= 4.

Long story short:

This is of course also a possibility to remove the version constraints from www/py-dj41-django-redis and switch back from py-redis3 to py-redis. I'll have to do a few tests and if everything fits, make the appropriate changes.
Comment 7 Kai Knoblich freebsd_committer freebsd_triage 2023-04-13 10:05:42 UTC
Created attachment 241456 [details]
py-dj41-django-redis-relax-contraints-and-switch-to-py-redis-v3.patch

At first glance it looks promising (= build/install/quick runtime test) to patch only www/py-dj41-django-redis (= relax contraints, switch back to py-redis), but I still need a little more time to do detailed tests.

Attached is the current patch, in case someone wants to take a look and test it in the meantime.
Comment 8 Juraj Lutter freebsd_committer freebsd_triage 2023-04-14 08:05:41 UTC
FWIW, I'm using netbox with py39-redis-4.5.4 for couple of days now, without any obvious problems.
Comment 9 commit-hook freebsd_committer freebsd_triage 2023-04-14 08:06:55 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=74c4df128bbd7480d8c0cf76931bc3c23f366f6c

commit 74c4df128bbd7480d8c0cf76931bc3c23f366f6c
Author:     Kai Knoblich <kai@FreeBSD.org>
AuthorDate: 2023-04-14 08:00:01 +0000
Commit:     Kai Knoblich <kai@FreeBSD.org>
CommitDate: 2023-04-14 08:00:01 +0000

    www/py-dj41-django-redis: Change RUN_DEPENDS back to py-redis

    The previous commit 957fc72127d3 changed the RUN_DEPENDS from py-redis
    to py-redis3, which was derived from the set version constraint (= <4).

    The constraint was added as a precautionary measure when this port was
    introduced to the ports tree due an currently open issue in conjunction
    with py-redis >= 4 (issue #595) and therefore to avoid possible
    problems/regressions in regard to net-mgmt/netbox.

    The last change to this port has now led to installation conflicts with
    net-mgmt/netbox because it requires this port as well as
    devel/py-dj41-django-rq.  The latter one, pulls in databases/py-redis,
    which in the end led to the reported problem. [1]

    Fix the issue by switching back to py-redis and also removing the
    version constraint.

    PR:             270792
    Reported by:    Fredrik Eriksson [1]
    Approved by:    sunpoet (maintainer)

 www/py-dj41-django-redis/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Comment 10 Kai Knoblich freebsd_committer freebsd_triage 2023-04-14 08:18:41 UTC
(In reply to Juraj Lutter from comment #8)

Unfortunately, I read your info a few minutes after the commit, but many thanks for your input! I was also able to verify this through several tests, so I have now committed the patch.


(In reply to Po-Chuan Hsieh from comment #5)

Thanks for your swift feedback.


(In reply to Fredrik Eriksson from comment #0)

Thanks for the report and the heads-up regarding this issue.

The problem should now be solved, so I will close this bug report.