Skip to content

temporary access to build machines for thefourtheye #1775

Closed

Description

@thefourtheye

In order to have our Node.js core build system compatible with Python 2 and Python 3, we need to have both of them in our build machines as the first step.

We are trying to figure out a way to install Python3 in all our build machines. Few of our supported platforms do not have Python 3 in their respective package management systems. To figure out how to install it, I would like to have temporary access to our build machines.

PS: I tried local VMs to do this, but it is very time consuming and I don't have enough resources in my machine.

cc @nodejs/build @refack @cclauss


List of machines which need Python 3 or attention

Machine Python2 Python3 Notes
test-digitalocean-centos5-x86-1 2.6.8 None yum search python3 failed with M2Crypto.SSL.SSLError: tlsv1 alert protocol version
test-digitalocean-freebsd11-x64-1 2.7.16 3.6.8
test-digitalocean-ubuntu1204-x64-1 2.7.3 None apt-get -s install python3 shows python3.2 is available
test-digitalocean-ubuntu1204-x64-2 2.7.3 None apt-get -s install python3 shows python3.2 is available
test-joyent-smartos14-x64-1 2.7.9 None pkgin av | grep -i python3 shows both 3.3 and 3.4 are available
test-joyent-smartos14-x64-2 2.7.9 None pkgin av | grep -i python3 shows both 3.3 and 3.4 are available
test-joyent-smartos14-x86-1 2.7.9 None pkgin av | grep -i python3 shows both 3.3 and 3.4 are available
test-joyent-smartos14-x86-2 2.7.9 None pkgin av | grep -i python3 shows both 3.3 and 3.4 are available
test-joyent-smartos15-x64-1 2.7.11 None pkgin av | grep -i python3 shows 3.3, 3.4, and 3.5 are available
test-joyent-smartos15-x64-2 2.7.11 None pkgin av | grep -i python3 shows 3.3, 3.4, and 3.5 are available
test-joyent-smartos16-x64-1 2.7.11 None pkgin av | grep -i python3 shows 3.3, 3.4, and 3.5 are available
test-joyent-smartos16-x64-2 2.7.11 None pkgin av | grep -i python3 shows 3.3, 3.4, and 3.5 are available
test-joyent-smartos17-x64-1 2.7.14 None pkgin av | grep -i python3 shows 3.4, 3.5, and 3.6 are available
test-joyent-smartos17-x64-2 2.7.14 None pkgin av | grep -i python3 shows 3.4, 3.5, and 3.6 are available
test-linuxonecc-rhel72-s390x-1 2.7.5 None Might have to check SCL
test-linuxonecc-rhel72-s390x-2 2.7.5 None Might have to check SCL
test-linuxonecc-rhel72-s390x-3 2.7.5 None Might have to check SCL
test-macstadium-macos10.08-x64-1 Network is unreachable
test-macstadium-macos10.08-x64-2 Network is unreachable
test-macstadium-macos10.09-x64-1 Network is unreachable
test-macstadium-macos10.09-x64-2 Network is unreachable
test-macstadium-macos10.09-x64-2 Network is unreachable
test-macstadium-macos10.10-x64-1 Network is unreachable
test-macstadium-macos10.10-x64-2 Network is unreachable
test-macstadium-macos10.11-x64-1 Network is unreachable
test-macstadium-macos10.11-x64-2 Network is unreachable
test-macstadium-macos10.12-x64-1 Network is unreachable
test-macstadium-macos10.12-x64-2 Network is unreachable
test-marist-zos13-s390x-1 2.7.13 None
test-marist-zos13-s390x-2 2.7.13 None
test-mininodes-ubuntu1604-arm64_odroid_c2-1 Key didn't work
test-mininodes-ubuntu1604-arm64_odroid_c2-2 Key didn't work
test-mininodes-ubuntu1604-arm64_odroid_c2-3 Key didn't work
test-osuosl-aix61-ppc64_be-1 2.7.11 None Have to read up on smitty
test-osuosl-aix61-ppc64_be-2 2.7.11 None Have to read up on smitty
test-osuosl-aix61-ppc64_be-3 2.7.11 None Have to read up on smitty
test-packetnet-centos7-arm64-1 2.7.5 None yum search python3 shows Python 36
test-packetnet-centos7-arm64-2 2.7.5 None yum search python3 shows Python 36
test-rackspace-centos7-x64-1 2.7.5 None yum search python3 shows Python 36
test-rackspace-ubuntu1204-x64-1 2.7.3 None apt-cache search python3 shows Python 3.2 Debug build
test-softlayer-centos5-x64-1 2.4.3 None yum search python3 does not have anything
test-softlayer-centos5-x64-2 2.4.3 None yum search python3 does not have anything
test-softlayer-centos6-x64-1 2.6.6 None yum search python3 shows Python 36
test-softlayer-centos6-x64-2 2.6.6 None yum search python3 shows Python 36
test-softlayer-centos7-x64-1 2.7.5 None yum search python3 shows Python 36

Notes:

OS Commands Instructions to Install Python 3
centos-release-6-10.el6.centos.12.3.x86_64 1. rpm -q centos-release (Find OS version) 1. yum install centos-release-scl
2. yum install rh-python36

Activity

  1. rvagg commented on Apr 17, 2019

    @rvagg
    Member

    @thefourtheye as a TSC member I don't think it'll be too controversial to just give you "test" access to our infra which should give you everything you need, there's a few others in this category already. You'll just need to be aware that:

    • The infra is live, so be careful what you're doing on live machines, if you need them taken out of Jenkins for some more disruptive work then let us know
    • We need to keep config in sync with our Ansible scripts, so if you're installing things that are needed for future use then we need to make sure that makes its way into our scripts
    • If you don't know how something works on a platform, ask, don't muddle through cause some things are brittle and there are some special cases.

    I'll need to put a gpg key for you into https://github.com/nodejs-private/secrets so you can read build/test where our test ssh key is and some more instructions, so get me a public gpg key I can put in. You'll also need to either read ansible/inventory.yml and use those user@ip combinations directly or use write-config.yml (see https://github.com/nodejs/build/tree/master/ansible#playbooks) to set up your .ssh/config.

    If anyone objects to going this route, please speak up!

  2. thefourtheye commented on Apr 17, 2019

    @thefourtheye
    Author

    Thanks @rvagg for the instructions and guidelines. I'll generate a GPG key and share here.

  3. cclauss commented on Apr 17, 2019

    @cclauss
    Contributor

    I am highly supportive of this effort related to #1674 (comment).

  4. mhdawson commented on Apr 17, 2019

    @mhdawson
    Member

    +1

  5. gireeshpunathil commented on Apr 17, 2019

    @gireeshpunathil
    Member

    +1

  6. cclauss commented on May 3, 2019

    @cclauss
    Contributor

    Any update here?

  7. thefourtheye commented on May 6, 2019

    @thefourtheye
    Author

    I had a few questions, so I checked with @rvagg last week. I have shared my public key with him today.

  8. rvagg commented on May 7, 2019

    @rvagg
    Member

    @thefourtheye I've added your gpg key to our secrets repo, see the readme there for instructions on how to get access to the resources.

    Review my comments to Sam when I added him last week, that's a good start: #1787

    You'll probably want to get your .ssh/config set up. As per the ansible/README.md, on the # begin: node.js template - # end: node.js template block to put in your .ssh/config. After that run: ansible-playbook playbooks/write-ssh-config.yml to populate it. I've had problems with this on my mac thanks to Python 3 so you're welcome to try and address any nits you find in the process! You should end up with an .ssh/config full of our machines and links to the ssh key you grab from the secrets repo.

  9. sam-github commented on May 7, 2019

    @sam-github
    Contributor

    write-ssh-config.yml has worked fine for me, but I'm on linux, and /usr/bin/python is 2.7.

  10. mhdawson commented on May 9, 2019

    @mhdawson
    Member

    @gireeshpunathil, @sam-github could you look at how we get Python 3 onto the AIX machines and pull me in for context on what we did for other packages. I think it's best that we help out on that front.

  11. mhdawson commented on May 9, 2019

    @mhdawson
    Member

    @thefourtheye we've not used smitty in the past on AIX for adding modules. I think it would be best if @sam-github helped out on this front.

  12. mhdawson commented on May 9, 2019

    @mhdawson
    Member

    bull freeware is where we have pulled packages in the past, this is the first place to look: http://www.bullfreeware.com/search.php?package=python3.

    It is pretty tricky though (AIX 7.1 is much better) so I'd prefer if we do it on one machine to start.

  13. cclauss commented on May 9, 2019

    @cclauss
    Contributor

    https://www.python.org/download/other might be worth looking at also. (Or if it is out of date, contributing back to.)

  14. thefourtheye commented on May 14, 2019

    @thefourtheye
    Author

    I managed to compile the list of all the loginable machines with the nodejs_build_test key and the versions of Pythons installed. The actual list can be seen here

  15. cclauss commented on May 14, 2019

    @cclauss
    Contributor

    Are we agreed that:

    • Acceptable Python 2 is version >= 2.7.9
    • Acceptable Python 3 is version >= 3.5.0
    • Release candidate (rc1) should be upgraded to a production release

    If we install or upgrade a machine’s Python 3, then we will also upgrade its Python 2 if required.

    Perhaps we need a fill color version of the spreadsheet:
    Legend
    Blue - Upgrade is possible
    Red - Upgrade is needed but how is unclear
    Orange - Release candidate version should be replaced

  16. 13 remaining items

  17. cclauss commented on May 29, 2019

    @cclauss
    Contributor

    @mhdawson Can you please tell us what happens when you do “brew info python” on one or more of these macOS machines? If homebrew is installed on them then these upgrades should be quite straightforward: https://docs.python-guide.org/starting/install3/osx/

  18. rvagg commented on May 29, 2019

    @rvagg
    Member
    python: stable 3.7.3, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    Not installed
    

    Changes to these machines are going to need to go through ansible rather than just being manual, so we maintain repeatability. It looks like brew is all set up in our Ansible configs so maybe a section in roles/baselayout/vars/main.yml for 'macos' to do the work is the way to go?

    @nodejs/build anyone with access want to give this a go?

  19. rvagg commented on May 29, 2019

    @rvagg
    Member

    Here's a full output ftr, it's not consistent:

    $ parallel-ssh -i -h /tmp/macos.hosts '/usr/local/bin/brew info python | head -4'
    [1] 13:58:34 [SUCCESS] release-macstadium-macos10.10-x64-1
    python: stable 3.7.0, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    Not installed
    [2] 13:58:34 [SUCCESS] test-macstadium-macos10.10-x64-2
    python: stable 3.7.0, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    Not installed
    [3] 13:58:34 [SUCCESS] test-macstadium-macos10.12-x64-2
    python: stable 3.7.0 (bottled), HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python/2.7.14 (3,569 files, 49.3MB)
    [4] 13:58:34 [SUCCESS] release-macstadium-macos10.11-x64-1
    python: stable 3.7.0 (bottled), HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    Not installed
    [5] 13:58:34 [SUCCESS] test-macstadium-macos10.12-x64-1
    python: stable 3.7.0 (bottled), devel 3.7.1rc1, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python/2.7.14 (3,569 files, 49.3MB)
    [6] 13:58:34 [SUCCESS] test-macstadium-macos10.11-x64-1
    python: stable 3.7.2, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python/2.7.14 (3,570 files, 49.3MB)
    [7] 13:58:34 [SUCCESS] test-macstadium-macos10.10-x64-1
    python: stable 3.7.3, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    Not installed
    [8] 13:58:35 [SUCCESS] test-macstadium-macos10.11-x64-2
    python: stable 3.7.2, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python/2.7.14 (3,570 files, 49.3MB)
    
    $ parallel-ssh -i -h /tmp/macos.hosts '/usr/local/bin/brew info python@2 | head -4'
    [1] 13:58:03 [SUCCESS] release-macstadium-macos10.11-x64-1
    python@2: stable 2.7.15 (bottled), HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    Not installed
    [2] 13:58:03 [SUCCESS] test-macstadium-macos10.10-x64-2
    python@2: stable 2.7.15, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python@2/2.7.15 (7,512 files, 122.3MB)
    [3] 13:58:03 [SUCCESS] test-macstadium-macos10.12-x64-2
    python@2: stable 2.7.15 (bottled), HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python@2/2.7.15 (4,714 files, 83.4MB)
    [4] 13:58:03 [SUCCESS] test-macstadium-macos10.12-x64-1
    python@2: stable 2.7.15 (bottled), HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python@2/2.7.15 (4,713 files, 83.4MB)
    [5] 13:58:04 [SUCCESS] test-macstadium-macos10.11-x64-1
    python@2: stable 2.7.15, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python@2/2.7.15 (4,713 files, 83.5MB)
    [6] 13:58:04 [SUCCESS] test-macstadium-macos10.11-x64-2
    python@2: stable 2.7.15, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python@2/2.7.15 (4,714 files, 83.5MB)
    [7] 13:58:04 [SUCCESS] release-macstadium-macos10.10-x64-1
    python@2: stable 2.7.15, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python@2/2.7.15 (7,512 files, 122.3MB)
    [8] 13:58:04 [SUCCESS] test-macstadium-macos10.10-x64-1
    python@2: stable 2.7.16, HEAD
    Interpreted, interactive, object-oriented programming language
    https://www.python.org/
    /usr/local/Cellar/python@2/2.7.15 (7,512 files, 122.3MB)
    
  20. cclauss commented on May 29, 2019

    @cclauss
    Contributor

    brew install python or brew install python@2 should force a brew update/upgrade to happen before the Python install so my bet is that all the boxes would end up with the same Python version(s).

  21. cclauss commented on Jun 5, 2019

    @cclauss
    Contributor

    Is the list at the top of this PR up-to-date?

  22. rvagg commented on Jun 14, 2019

    @rvagg
    Member

    update on the state of macos is in #1836, it's taken a few days to wrangle it under control but it seems to be all consistent now with both versions installed but we need to be explicitly referencing python2 and python3 to be getting them.

  23. cclauss commented on Jun 27, 2019

    @cclauss
    Contributor

    Is the status table at the top of this issue up to date? I am having trouble understanding our progression and #1802 which would have allowed shared editing of such a table is also not progressing. We need an up-to-date status table.

    Our only repos that have known (lintable) Python 3 incompatibilities are: nodejs/ffi, nodejs/nan, nodejs/node-auto-test, nodejs/node-chakracore, nodejs/perfetto-nodejs-wip, nodejs/worker. Please let me know if any of these repos are mission critical so that I can focus on them.

    If not, then now is the time for us to start testing in earnest Python 3. With 188 days left until Python 2 end of life, I would like us to be pushing hard to be ready. Your thoughts on how we can accelerate?

  24. rvagg commented on Jun 27, 2019

    @rvagg
    Member

    @thefourtheye ping re status, can you help us move forward here?

    @cclauss re the list of repos, none are critical path.

  25. github-actions commented on Apr 23, 2020

    @github-actions

    This issue is stale because it has been open many days with no activity. It will be closed soon unless the stale label is removed or a comment is made.

  26. Trott commented on Apr 27, 2020

    @Trott
    Member

    We should probably remove the temporary access at this point unless @thefourtheye chimes in to let us know they're still working on this.

  27. richardlau commented on Apr 27, 2020

    @richardlau
    Member

    We should probably remove the temporary access at this point unless @thefourtheye chimes in to let us know they're still working on this.

    I've gone ahead and removed the gpg key for @thefourtheye. We can add him back if needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions