Repository navigation
temporary access to build machines for thefourtheye #1775
Copy link
Copy link
Closed
Description
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-scl2. yum install rh-python36 |
Reactions are currently unavailable
Activity
rvagg commentedon Apr 17, 2019
@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:
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!
thefourtheye commentedon Apr 17, 2019
Thanks @rvagg for the instructions and guidelines. I'll generate a GPG key and share here.
cclauss commentedon Apr 17, 2019
I am highly supportive of this effort related to #1674 (comment).
mhdawson commentedon Apr 17, 2019
+1
gireeshpunathil commentedon Apr 17, 2019
+1
cclauss commentedon May 3, 2019
Any update here?
thefourtheye commentedon May 6, 2019
I had a few questions, so I checked with @rvagg last week. I have shared my public key with him today.
rvagg commentedon May 7, 2019
@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 templateblock to put in your .ssh/config. After that run:ansible-playbook playbooks/write-ssh-config.ymlto 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.sam-github commentedon May 7, 2019
write-ssh-config.ymlhas worked fine for me, but I'm on linux, and/usr/bin/pythonis 2.7.mhdawson commentedon May 9, 2019
@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.
mhdawson commentedon May 9, 2019
@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.
mhdawson commentedon May 9, 2019
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.
cclauss commentedon May 9, 2019
https://www.python.org/download/other might be worth looking at also. (Or if it is out of date, contributing back to.)
thefourtheye commentedon May 14, 2019
I managed to compile the list of all the loginable machines with the
nodejs_build_testkey and the versions of Pythons installed. The actual list can be seen herecclauss commentedon May 14, 2019
Are we agreed that:
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
13 remaining items
cclauss commentedon May 29, 2019
@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/
rvagg commentedon May 29, 2019
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?
rvagg commentedon May 29, 2019
Here's a full output ftr, it's not consistent:
cclauss commentedon May 29, 2019
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).
cclauss commentedon Jun 5, 2019
Is the list at the top of this PR up-to-date?
rvagg commentedon Jun 14, 2019
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
python2andpython3to be getting them.cclauss commentedon Jun 27, 2019
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?
rvagg commentedon Jun 27, 2019
@thefourtheye ping re status, can you help us move forward here?
@cclauss re the list of repos, none are critical path.
github-actions commentedon Apr 23, 2020
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.
Trott commentedon Apr 27, 2020
We should probably remove the temporary access at this point unless @thefourtheye chimes in to let us know they're still working on this.
richardlau commentedon Apr 27, 2020
I've gone ahead and removed the gpg key for @thefourtheye. We can add him back if needed.