#66942 closed defect (fixed)
opencv4 @4.6.0_2+contrib extract failure
Reported by: | fmw42 (Fred Weinhaus) | Owned by: | stromnov (Andrey Stromnov) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.1 |
Keywords: | Cc: | mascguy (Christopher Nielsen) | |
Port: | opencv4 |
Description (last modified by fmw42 (Fred Weinhaus))
I am on Mac OSX Monterey on M1 Mac (Mini)
I am trying to upgrade my existing ports that I have been using for quite a while.
I have done the sudo port selfupdate. Then upgraded most of my relevant ports. Then tried numerous times to upgrade either opencv4 or py39-opencv4. Other ports that try to upgrade opencv4 also report this error. I keep getting an error:
"Error: Failed to extract opencv4: extract.rename: multiple directories exist in /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_opencv4/opencv4/work: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_opencv4/opencv4/work/opencv-opencv-8a18519 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_opencv4/opencv4/work/opencv-opencv_contrib-5f1f482 Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_opencv4/opencv4/main.log for details. Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug."
How do I get around this issue. Sorry for my ignorance.
Attachments (3)
Change History (18)
Changed 21 months ago by fmw42 (Fred Weinhaus)
Attachment: | macports_opencv4_error.txt added |
---|
comment:1 Changed 21 months ago by fmw42 (Fred Weinhaus)
Description: | modified (diff) |
---|
comment:2 Changed 21 months ago by jmroot (Joshua Root)
Cc: | stromnov@… stromnov mascguy@… removed |
---|---|
Keywords: | Failed to extract opencv4 removed |
Owner: | set to stromnov |
Status: | new → assigned |
Summary: | Cannot Upgrade OpenCV4 → opencv4 @4.6.0_2+contrib extract failure |
This inherits extract.rename yes
from the github portgroup, but has multiple distfiles with +contrib and does its own renaming.
comment:3 Changed 21 months ago by fmw42 (Fred Weinhaus)
So what do I do to fix it. I am sorry, but I do not understand your comment.
comment:4 Changed 21 months ago by ryandesign (Ryan Carsten Schmidt)
Josh's comment was an explanation to the maintainer of the port (to whom this ticket was assigned) about how to fix it. Wait for the maintainer to fix it.
comment:5 Changed 21 months ago by fmw42 (Fred Weinhaus)
After doing the above, none of my scripts work any more. So I am dead in the water.
It is complaining about importing cv2
Traceback (most recent call last): File "/Users/fred/Desktop/tmp.py", line 1, in <module> import cv2 File "/opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/cv2/__init__.py", line 181, in <module> bootstrap() File "/opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/cv2/__init__.py", line 153, in bootstrap native_module = importlib.import_module("cv2") File "/opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/cv2/python-3.9/cv2.cpython-39-darwin.so, 0x0002): Library not loaded: '/opt/local/lib/libtiff.5.dylib' Referenced from: '/opt/local/lib/opencv4/libopencv_imgcodecs.4.6.0.dylib' Reason: tried: '/opt/local/lib/libtiff.5.dylib' (no such file), '/usr/local/lib/libtiff.5.dylib' (no such file), '/usr/lib/libtiff.5.dylib' (no such file)
comment:6 Changed 21 months ago by ryandesign (Ryan Carsten Schmidt)
That is a different problem and should be filed in a separate ticket.
comment:7 Changed 21 months ago by fmw42 (Fred Weinhaus)
OK. But would it not be fixed automatically when the "Failed to extract opencv4" original problem was fixed and I could then properly install opencv4?
comment:8 follow-up: 9 Changed 21 months ago by ryandesign (Ryan Carsten Schmidt)
You seem to be encountering two different problems which will need two separate investigations and two separate fixes. It is nice to have one ticket per problem, that way each ticket can be closed when each problem is fixed, because a single developer may not immediately know how to fix both issues but they may know how to fix one of them.
comment:9 Changed 21 months ago by jmroot (Joshua Root)
Replying to ryandesign:
You seem to be encountering two different problems which will need two separate investigations and two separate fixes.
If opencv4 hasn't been upgraded on the reporter's system since before [41000ab0296c57c01f3aba71bcdf5aa52b68ceb3/macports-ports], it would make sense for this to be the result if the other installed ports have since been upgraded.
comment:10 Changed 21 months ago by jmroot (Joshua Root)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:11 Changed 21 months ago by fmw42 (Fred Weinhaus)
If I remove the +contrib, should I then be able to update py39-opencv4?
comment:12 Changed 21 months ago by jmroot (Joshua Root)
If you sync the current portfile it should work with or without +contrib.
comment:13 Changed 21 months ago by fmw42 (Fred Weinhaus)
Sorry for my ignorance, but could you explain more about syncing opencv4. I am not that versed in all the features of MacPorts.
I did the self update previous to my attempts to upgrade. Was self update not redundant with port sync? According to the documentation: "The sync action performs a subset of selfupdate. It synchronizes the ports tree, as does selfupdate, but it does not check for MacPorts upgrades. On macOS, unless there is a special reason not to do so, run selfupdate instead"
comment:14 Changed 21 months ago by fmw42 (Fred Weinhaus)
port sync failed
sudo port selfupdate ---> MacPorts base is already the latest version port sync Error: Synchronization of the local ports tree failed doing rsync port sync failed: Synchronization of 1 source failed
comment:15 Changed 21 months ago by fmw42 (Fred Weinhaus)
I have been successful in upgrading py39-opencv4 +readline, that is, without specifying +contrib. The installation however, seems to be installing opencv4+contrib (perhaps it is packaged in the py39-opencv4). And so perhaps the extra +contrib that I used before (py39-opencv4 +contrib +readling) was the issue. The upgrade shows the following (see the attachment also): "---> INSTALLING OPENCV4 @4.6.0_2+CONTRIB"
However, trying to run a script with the contributed library app cv2.xphoto.inpaint() fails to find cv2.xphoto (see attached script).
python3.9 python_inpaint_text.py Traceback (most recent call last): File "/Users/fred/Desktop/python_inpaint_text.py", line 25, in <module> cv2.xphoto.inpaint(img, thresh, result3, cv2.xphoto.INPAINT_FSR_FAST) AttributeError: module 'cv2' has no attribute 'xphoto'
Am I missing something or misunderstanding the above about contrib being installed?
Changed 21 months ago by fmw42 (Fred Weinhaus)
Attachment: | install_opencv4.txt added |
---|
Changed 21 months ago by fmw42 (Fred Weinhaus)
Attachment: | python_inpaint_text.py added |
---|
Error message and list of installed ports