Opened 7 years ago
Last modified 14 months ago
#56120 new defect
pkg-config fails to find python3
Reported by: | aleb (Alex Băluț) | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.4.2 |
Keywords: | Cc: | raimue (Rainer Müller), yan12125 (Chih-Hsuan Yen) | |
Port: | python27 python34 python35 python36 python_select |
Description
I have port:python36 but pkg-config fails to find it:
$ find /opt/custom | grep \\.pc$ | grep -i python /opt/custom/Library/Frameworks/Python.framework/Versions/2.7/lib/pkgconfig/python-2.7.pc /opt/custom/Library/Frameworks/Python.framework/Versions/2.7/lib/pkgconfig/python.pc /opt/custom/Library/Frameworks/Python.framework/Versions/2.7/lib/pkgconfig/python2.pc /opt/custom/Library/Frameworks/Python.framework/Versions/3.6/lib/pkgconfig/python-3.6.pc /opt/custom/Library/Frameworks/Python.framework/Versions/3.6/lib/pkgconfig/python-3.6m.pc /opt/custom/Library/Frameworks/Python.framework/Versions/3.6/lib/pkgconfig/python3.pc $ which python3 /opt/custom/bin/python3 $ /opt/custom/bin/pkg-config --list-all | grep python .. crickets ..
Change History (9)
comment:1 Changed 7 years ago by aleb (Alex Băluț)
comment:2 Changed 7 years ago by kencu (Ken)
/opt/custom/Library/Frameworks/Python.framework/Versions/3.6/lib/pkgconfig
is not a default search directory for pkg-config files.
comment:3 Changed 7 years ago by jmroot (Joshua Root)
Putting python3.pc in the default pkgconfig search path is bad for ReproducibleBuilds. Fine to link python-2.7.pc, python-3.6.pc and so on.
comment:4 Changed 7 years ago by raimue (Rainer Müller)
Cc: | raimue added |
---|---|
Port: | python27 python34 python35 python36 python_select added |
Summary: | pkgconfig fails to find python3 → pkg-config fails to find python3 |
For those that stumble over this ticket while doing builds outside of MacPorts, the workaround is to set PKG_CONFIG_PATH
manually:
$ pkg-config --print-provides python3 Package python3 was not found in the pkg-config search path. Perhaps you should add the directory containing `python3.pc' to the PKG_CONFIG_PATH environment variable No package 'python3' found $ export PKG_CONFIG_PATH=/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/pkgconfig $ pkg-config --print-provides python3 python3 = 3.6
I agree that we do not want to use python3.pc
when building a port. However, python3.pc
could be managed by python_select
. We also already have symlinks for the python3
and python3-config
binaries. If a build system uses pkg-config ... python3
, it would be the same as using python3-config
. We will always have to handle these cases, most probably with patches.
comment:5 Changed 7 years ago by kencu (Ken)
So do we "fix" this by symlinking the properly-versioned *.pc files into the default search path, or just close it as "wontfix"?
comment:6 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
If port select
is already symlinking *-config
scripts, then it should also symlink *.pc
files.
comment:7 Changed 7 years ago by aleb (Alex Băluț)
I noticed this problem while creating a Portfile. Maybe this info should be added in the howto for creating a new Portfile. Or in a "Python for Portfile authors" page if there is one? (see https://docs.brew.sh/Python-for-Formula-Authors)
comment:8 Changed 6 years ago by yan12125 (Chih-Hsuan Yen)
Cc: | yan12125 added |
---|
comment:9 Changed 14 months ago by jmroot (Joshua Root)
Component: | base → ports |
---|
This happens even though I ran