Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#62324 closed defect (fixed)

py-ansible @2.10.5_0 does not link binaries

Reported by: jhoyt4 Owned by: adfernandes (Andrew Fernandes)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: jhoyt4, steenzout (Pedro Salgado), hnarayanan (Harish Narayanan)
Port: py-ansible

Description

The latest version of ansible does not (at least for python38) generate the appropriate symlink to it's binary in /opt/local/bin

% sudo port activate  py38-ansible@2.10.5_0 
--->  Computing dependencies for py38-ansible
--->  Deactivating py38-ansible @2.9.10_0
--->  Cleaning py38-ansible
--->  Activating py38-ansible @2.10.5_0
--->  Cleaning py38-ansible
--->  Some of the ports you installed have notes:
  py38-ansible has the following notes:
    To make the Python 3.8 version of Ansible the one that is run when you execute the commands without a version suffix, e.g. 'ansible', run:
    
    port select --set ansible py38-ansible

% sudo port select --set ansible py38-ansible
Selecting 'py38-ansible' for 'ansible' failed: could not create new link "/opt/local/bin/ansible": target "/opt/local/bin/ansible-3.8" doesn't exist
% ls -l /opt/local/bin/ansible*
lrwxr-xr-x  1 root  admin  33 Feb 19 20:14 /opt/local/bin/ansible-config -> /opt/local/bin/ansible-config-3.8
lrwxr-xr-x  1 root  admin  37 Feb 19 20:14 /opt/local/bin/ansible-connection -> /opt/local/bin/ansible-connection-3.8
lrwxr-xr-x  1 root  admin  34 Feb 19 20:14 /opt/local/bin/ansible-console -> /opt/local/bin/ansible-console-3.8
lrwxr-xr-x  1 root  admin  30 Feb 19 20:14 /opt/local/bin/ansible-doc -> /opt/local/bin/ansible-doc-3.8
lrwxr-xr-x  1 root  admin  33 Feb 19 20:14 /opt/local/bin/ansible-galaxy -> /opt/local/bin/ansible-galaxy-3.8
lrwxr-xr-x  1 root  admin  36 Feb 19 20:14 /opt/local/bin/ansible-inventory -> /opt/local/bin/ansible-inventory-3.8
lrwxr-xr-x  1 root  admin  35 Feb 19 20:14 /opt/local/bin/ansible-playbook -> /opt/local/bin/ansible-playbook-3.8
lrwxr-xr-x  1 root  admin  31 Feb 19 20:14 /opt/local/bin/ansible-pull -> /opt/local/bin/ansible-pull-3.8
lrwxr-xr-x  1 root  admin  32 Feb 19 20:14 /opt/local/bin/ansible-vault -> /opt/local/bin/ansible-vault-3.8

Change History (29)

comment:1 Changed 3 years ago by jhoyt4

Cc: jhoyt4 added

comment:2 Changed 3 years ago by jmroot (Joshua Root)

Cc: steenzout added
Owner: set to adfernandes
Status: newassigned

comment:3 Changed 3 years ago by jhoyt4

Here's the same check with py-ansible@2.9.10

% sudo port activate py38-ansible@2.9.10_0
Password:
--->  Computing dependencies for py38-ansible
--->  Deactivating py38-ansible @2.10.5_0
--->  Cleaning py38-ansible
--->  Activating py38-ansible @2.9.10_0
--->  Cleaning py38-ansible
--->  Some of the ports you installed have notes:
  py38-ansible has the following notes:
    To make the Python 3.8 version of Ansible the one that is run when you execute the commands without a version suffix, e.g. 'ansible', run:
    
    port select --set ansible py38-ansible
% ll /opt/local/bin/ansible-*
lrwxr-xr-x  1 root  admin    71B Dec 15 11:59 /opt/local/bin/ansible-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible
lrwxr-xr-x  1 root  admin    33B Feb 19 20:14 /opt/local/bin/ansible-config -> /opt/local/bin/ansible-config-3.8
lrwxr-xr-x  1 root  admin    78B Dec 15 11:59 /opt/local/bin/ansible-config-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-config
lrwxr-xr-x  1 root  admin    37B Feb 19 20:14 /opt/local/bin/ansible-connection -> /opt/local/bin/ansible-connection-3.8
lrwxr-xr-x  1 root  admin    82B Dec 15 11:59 /opt/local/bin/ansible-connection-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-connection
lrwxr-xr-x  1 root  admin    34B Feb 19 20:14 /opt/local/bin/ansible-console -> /opt/local/bin/ansible-console-3.8
lrwxr-xr-x  1 root  admin    79B Dec 15 11:59 /opt/local/bin/ansible-console-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-console
lrwxr-xr-x  1 root  admin    30B Feb 19 20:14 /opt/local/bin/ansible-doc -> /opt/local/bin/ansible-doc-3.8
lrwxr-xr-x  1 root  admin    75B Dec 15 11:59 /opt/local/bin/ansible-doc-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-doc
lrwxr-xr-x  1 root  admin    33B Feb 19 20:14 /opt/local/bin/ansible-galaxy -> /opt/local/bin/ansible-galaxy-3.8
lrwxr-xr-x  1 root  admin    78B Dec 15 11:59 /opt/local/bin/ansible-galaxy-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-galaxy
lrwxr-xr-x  1 root  admin    36B Feb 19 20:14 /opt/local/bin/ansible-inventory -> /opt/local/bin/ansible-inventory-3.8
lrwxr-xr-x  1 root  admin    81B Dec 15 11:59 /opt/local/bin/ansible-inventory-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-inventory
lrwxr-xr-x  1 root  admin    35B Feb 19 20:14 /opt/local/bin/ansible-playbook -> /opt/local/bin/ansible-playbook-3.8
lrwxr-xr-x  1 root  admin    80B Dec 15 11:59 /opt/local/bin/ansible-playbook-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-playbook
lrwxr-xr-x  1 root  admin    31B Feb 19 20:14 /opt/local/bin/ansible-pull -> /opt/local/bin/ansible-pull-3.8
lrwxr-xr-x  1 root  admin    76B Dec 15 11:59 /opt/local/bin/ansible-pull-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-pull
lrwxr-xr-x  1 root  admin    76B Dec 15 11:59 /opt/local/bin/ansible-test-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-test
lrwxr-xr-x  1 root  admin    32B Feb 19 20:14 /opt/local/bin/ansible-vault -> /opt/local/bin/ansible-vault-3.8
lrwxr-xr-x  1 root  admin    77B Dec 15 11:59 /opt/local/bin/ansible-vault-3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/ansible-vault

comment:4 Changed 3 years ago by tsabirgaliev (Tair Sabirgaliev)

Same with python39

~/P/g/macports-ports> sudo port select --set ansible py39-ansible
Selecting 'py39-ansible' for 'ansible' failed: could not create new link "/opt/local/bin/ansible": target "/opt/local/bin/ansible-3.9" doesn't exist

comment:5 Changed 3 years ago by jhoyt4

switching back to py-ansible@2.10.5_0, the files are not installed into the proper python framework:

% sudo port activate py38-ansible@2.10.5_0 
--->  Computing dependencies for py38-ansible
--->  Deactivating py38-ansible @2.9.10_0
--->  Cleaning py38-ansible
--->  Activating py38-ansible @2.10.5_0
--->  Cleaning py38-ansible
--->  Some of the ports you installed have notes:
  py38-ansible has the following notes:
    To make the Python 3.8 version of Ansible the one that is run when you execute the commands without a version suffix, e.g. 'ansible', run:
    
    port select --set ansible py38-ansible

No ansible-* installed in the Python Framework (any, I checked Current, 2.7, 3.8, and 3.9)

 % ll /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin
total 200
drwxr-xr-x  32 root  wheel   1.0K Feb 20 08:52 .
drwxr-xr-x   9 root  wheel   288B Dec 25 13:13 ..
lrwxr-xr-x   1 root  wheel     8B Dec 24 14:08 2to3 -> 2to3-3.8
-rwxr-xr-x   1 root  wheel   150B Dec 24 14:08 2to3-3.8
-rwxr-xr-x   1 root  wheel   1.0K Dec 18 08:14 chardetect
-rwxr-xr-x   1 root  wheel   1.0K Nov 14 23:32 cygdb
-rwxr-xr-x   1 root  wheel   1.0K Nov 14 23:32 cython
-rwxr-xr-x   1 root  wheel   1.0K Nov 14 23:32 cythonize
-rwxr-xr-x   1 root  wheel   1.0K Jan 23 08:01 easy_install
-rwxr-xr-x   1 root  wheel   1.0K Jan 23 08:01 easy_install-3.8
-rwxr-xr-x   1 root  wheel   1.0K Nov 24 05:55 futurize
lrwxr-xr-x   1 root  wheel     7B Dec 24 14:08 idle3 -> idle3.8
-rwxr-xr-x   1 root  wheel   148B Dec 24 14:08 idle3.8
-rwxr-xr-x   1 root  wheel   1.0K Dec 15 12:24 macho_dump
-rwxr-xr-x   1 root  wheel   1.0K Dec 15 12:24 macho_find
-rwxr-xr-x   1 root  wheel   1.0K Dec 15 12:24 macho_standalone
-rwxr-xr-x   1 root  wheel   1.0K Jan 17 10:37 mako-render
-rwxr-xr-x   1 root  wheel   1.0K Nov 16 10:02 markdown_py
-rwxr-xr-x   1 root  wheel   1.0K Dec 15 12:24 modulegraph
-rwxr-xr-x   1 root  wheel   1.0K Nov 24 05:55 pasteurize
-rwxr-xr-x   1 root  wheel   998B Feb  2 07:33 pip
-rwxr-xr-x   1 root  wheel   1.0K Feb  2 07:33 pip3
-rwxr-xr-x   1 root  wheel   1.0K Feb  2 07:33 pip3.8
-rwxr-xr-x   1 root  wheel   1.0K Jan 16 13:07 py2applet
lrwxr-xr-x   1 root  wheel     8B Dec 24 14:08 pydoc3 -> pydoc3.8
-rwxr-xr-x   1 root  wheel   133B Dec 24 14:08 pydoc3.8
-rwxr-xr-x   1 root  wheel   1.0K Nov 19 08:08 pyjwt
lrwxr-xr-x   1 root  wheel     9B Dec 24 14:08 python3 -> python3.8
lrwxr-xr-x   1 root  wheel    16B Dec 24 14:08 python3-config -> python3.8-config
-rwxr-xr-x   1 root  wheel    49K Dec 24 14:07 python3.8
-rwxr-xr-x   1 root  wheel   2.1K Dec 24 14:08 python3.8-config
-rwxr-xr-x   1 root  wheel   1.0K Dec 15 11:57 wheel
Last edited 3 years ago by jhoyt4 (previous) (diff)

comment:6 Changed 3 years ago by jhoyt4

no ansible-* binaries to be found in /optlocal/Library (was this even tested before being pushed?)

 % cd /opt/local/Library
 % find . -print|grep ansible-             
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible-2.10.5-py3.8.egg-info
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible-2.10.5-py3.8.egg-info/PKG-INFO
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible-2.10.5-py3.8.egg-info/not-zip-safe
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible-2.10.5-py3.8.egg-info/SOURCES.txt
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible-2.10.5-py3.8.egg-info/requires.txt
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible-2.10.5-py3.8.egg-info/top_level.txt
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible-2.10.5-py3.8.egg-info/dependency_links.txt
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/gluster/gluster/.github/workflows/ansible-test-plugins.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/cyberark/conjur/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/google/cloud/roles/stackdriver_logging/molecule/default/.ansible-lint
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/google/cloud/roles/stackdriver_monitoring/molecule/default/.ansible-lint
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/google/cloud/.ansible-lint
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/cisco/mso/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/cisco/nso/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/cisco/aci/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/cloudscale_ch/cloud/.github/workflows/publish-ansible-galaxy.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/mellanox/onyx/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/dellemc/os10/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/dellemc/os6/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/dellemc/os9/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/okd/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/routeros/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/hrobot/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/unit/plugins/module_utils/xenserver/fixtures/ansible-test-vm-1-params.json
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/unit/plugins/module_utils/xenserver/fixtures/ansible-test-vm-2-facts.json
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/unit/plugins/module_utils/xenserver/fixtures/ansible-test-vm-2-params.json
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/unit/plugins/module_utils/xenserver/fixtures/ansible-test-vm-1-facts.json
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/unit/plugins/module_utils/xenserver/fixtures/ansible-test-vm-3-facts.json
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/unit/plugins/module_utils/xenserver/fixtures/ansible-test-vm-3-params.json
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/integration/targets/xml/fixtures/ansible-xml-beers.xml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/integration/targets/xml/fixtures/ansible-xml-namespaced-beers.xml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/general/tests/integration/targets/xml/fixtures/ansible-xml-beers-unicode.xml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/google/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/digitalocean/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/hashi_vault/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/grafana/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/mongodb/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/kubevirt/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/mysql/.github/workflows/ansible-test-roles.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/mysql/.github/workflows/ansible-test-plugins.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/skydive/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/kubernetes/changelogs/fragments/126-requires_ansible-version-constraints.yaml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/proxysql/.github/workflows/ansible-test-roles.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/community/proxysql/.github/workflows/ansible-test-plugins.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/servicenow/servicenow/.github/workflows/ansible-test.yml
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/ovirt/ovirt/ovirt-ansible-collection.spec
./Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ansible_collections/ovirt/ovirt/ovirt-ansible-collection.spec.in
Last edited 3 years ago by jhoyt4 (previous) (diff)

comment:7 Changed 3 years ago by jhoyt4

Port: py38-ansible py39-ansible added
Summary: py38-ansible @2.10.5_0 does not link binariespy-ansible @2.10.5_0 does not link binaries

comment:8 Changed 3 years ago by mf2k (Frank Schima)

Port: py38-ansible py39-ansible removed

comment:9 Changed 3 years ago by mf2k (Frank Schima)

Setting the port to py-ansible is all that is needed because it covers all of the sub-ports.

comment:10 Changed 3 years ago by jhoyt4

Perhaps this ansible 2.10 disclaimer is an omen to things breaking:

https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#upgrading-ansible-from-version-2-9-and-older-to-version-2-10-or-later

Starting in version 2.10, Ansible is made of two packages. You need to first uninstall the old Ansible version (2.9 or earlier) before upgrading. If you do not uninstall the older version of Ansible, you will see the following message, and no change will be performed:

Cannot install ansible-base with a pre-existing ansible==2.x installation.

Installing ansible-base with ansible-2.9 or older currently installed with
pip is known to cause problems. Please uninstall ansible and install the new
version:

pip uninstall ansible
pip install ansible-base

How does macports handle ansible-base?

comment:11 Changed 3 years ago by jhoyt4

Perhaps instructions on compiling ansible-base from source may be helpful:

https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#from-source

comment:12 Changed 3 years ago by jhoyt4

Here's the location for ansible-base

https://pypi.org/project/ansible-base/2.10.5/

comment:13 Changed 3 years ago by adfernandes (Andrew Fernandes)

Ho ho!

That is very very different than the disclaimer that comes up when you build from source!

The comment during the build was only that PIP was unable to upgrade, so since Mac ports does not use raw PIP I thought it would be safe, and it appeared to work just fine.

Might just roll back to 2.9 until I have time to look at this closer.

comment:14 Changed 3 years ago by jhoyt4

working on a PR now - happy to get another set of eyes on it once I make the PR

comment:15 Changed 3 years ago by adfernandes (Andrew Fernandes)

John, are you working on a PR for 2.9 or 2.10? Happy to help, test, or whatever...

comment:16 Changed 3 years ago by jhoyt4

2.10

Adding a subport for py??-ansible-base

comment:17 Changed 3 years ago by jhoyt4

...it's compiling now, so hopefully I got through the worst of it...

comment:18 Changed 3 years ago by tsabirgaliev (Tair Sabirgaliev)

@jhoyt4 I'm sorry didn't see you already doing the fix. here is my PR https://github.com/macports/macports-ports/pull/10073

comment:20 Changed 3 years ago by jhoyt4

No worries Tair - we can let @adfernandes sort out their preferences

comment:21 Changed 3 years ago by jhoyt4

comment:22 Changed 3 years ago by adfernandes (Andrew Fernandes)

Okay, thanks, John - I was just reviewing them and was leaning that way, too.

Thank you, though - I really appreciate both of your work!

comment:23 Changed 3 years ago by adfernandes (Andrew Fernandes)

Resolution: fixed
Status: assignedclosed

comment:24 Changed 3 years ago by hnarayanan (Harish Narayanan)

Cc: hnarayanan added

comment:25 Changed 3 years ago by hnarayanan (Harish Narayanan)

I see this is merged but I don't see ansible-base as part of my list of available ports even after doing a port selfupdate. Is there something else I must be doing?

comment:26 Changed 3 years ago by jhoyt4

are you pulling ports down from git (non-default install) or the tarball (default install)?

comment:27 Changed 3 years ago by hnarayanan (Harish Narayanan)

Presumably tarball as I assume my installation is fairly standard. Should I read up on how to convert this to an installation from git?

I assumed the selfupdate step that rsyncs Ports files is somehow connected to the state of the ports repository on GitHub.

comment:28 Changed 3 years ago by jhoyt4

Yep - that's it. The tarballs tend to lang behind git quite a bit.

To swap over to git follow step 3 here:

https://guide.macports.org/#installing.macports.git

Then run 'port selfupdate' or 'port -d selfupdate' if you want to watch the progress. This will take a LONG time the first time you run the selfupdate as it has to walk the entire port tree.

comment:29 Changed 3 years ago by hnarayanan (Harish Narayanan)

Thank you, I'll try step 3.

Note: See TracTickets for help on using tickets.