Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add IBM i initial playbooks #1923

Merged
merged 22 commits into from May 21, 2020
Merged

Add IBM i initial playbooks #1923

merged 22 commits into from May 21, 2020

Conversation

ThePrez
Copy link
Contributor

@ThePrez ThePrez commented Sep 25, 2019

Supercedes and addresses PR #1700

Addresses part of issue #1697

TODO items remaining are (at least):

  • test and verify whether su works now.

@ThePrez ThePrez mentioned this pull request Sep 25, 2019
2 tasks
@sam-github
Copy link
Contributor

I'm curious, why is su necessary?

Looked over the changes, they look reasonable to me, though whether they are working or not is will have to wait on hooking them up into CI. Any idea how far we are from giving that a try?

@ThePrez
Copy link
Contributor Author

ThePrez commented Sep 25, 2019

We should be pretty close. We already ran the playbook against our first build system.
I honestly don't know for sure why su is needed, but I seem to recall it being needed to run the tests (might be another way, since our su is a kludge)

Copy link
Member

@bnoordhuis bnoordhuis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM insofar I'm able to judge such things, with some suggestions

ansible/roles/baselayout/tasks/main.yml Outdated Show resolved Hide resolved
ansible/roles/baselayout/vars/main.yml Outdated Show resolved Hide resolved
ansible/roles/jenkins-worker/tasks/main.yml Outdated Show resolved Hide resolved
ansible/MANUAL_STEPS.md Outdated Show resolved Hide resolved
ansible/roles/jenkins-worker/vars/main.yml Outdated Show resolved Hide resolved
ansible/roles/java-base/tasks/main.yml Outdated Show resolved Hide resolved
@sam-github
Copy link
Contributor

@dmabupt thanks, good catch! we hadn't gotten to running jenkins yet because the make test is failing.

@sam-github
Copy link
Contributor

sam-github commented Nov 29, 2019

@Trott I'd like to add a platform:ibmi label, which I can just do myself, but is there some central place to add them so they show up across all repos, or is that a manual repo-by-repo process?

@richardlau
Copy link
Member

@Trott I'd like to add a platform:ibmi label, which I can just do myself, but is there some central place to add them so they show up across all repos, or is that a manual repo-by-repo process?

I believe it's repo-by-repo.

ansible/MANUAL_STEPS.md Outdated Show resolved Hide resolved
@@ -67,7 +67,7 @@
- "!test-softlayer-ubuntu1604-x64-1"
tasks:
- name: remove node and npm packages
when: not os|startswith("win") and not os|startswith("zos")
when: not os|startswith("win") and not os|startswith("zos") and not os|startswith("ibmi") and os != "centos5"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there centos5 changes in this PR?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's not showing because this is still in draft but this PR needs to be rebased onto the current master as it has merge conflicts when I tried to pull down the changes locally. The centos5 stuff was removed in #1984.

Comment on lines 53 to 62
ibmi: [
'gcc',
'gcc-cplusplus',
'gcc-cpp',
'ccache',
'sed-gnu',
'coreutils-gnu',
'zlib-devel',
'python2-pip',
'git',
'ca-certificates-mozilla',
'libstdcplusplus-devel',
],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To build libuv in the CI we can use either use autoconf/automake or cmake (the gyp based build has been removed from libuv).

65.183.160.52 doesn't have cmake installed. Attempting to build libuv with autoconf/automake yields this:

bash-4.4$ sh autogen.sh
+ libtoolize --copy
libtoolize:   error: One of these is required:
libtoolize:                 gm4 gnum4 m4
libtoolize:   error: Please install GNU M4, or 'export M4=/path/to/gnu/m4'.
bash-4.4$

which looks like it requires m4-gnu

bash-4.4$ yum provides m4
ibm                                                                                                                                                  | 3.6 kB  00:00:00
ibm/primary_db                                                                                                                                       | 254 kB  00:00:00
m4-gnu-1.4.17-1.ppc64 : GNU m4 macro processor
Repo        : ibm
Matched from:
Filename    : /QOpenSys/pkgs/bin/m4



ibm/filelists_db                                                                                                                                     | 504 kB  00:00:00
bash-4.4$

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@richardlau feel free to reansible (or hand install) packages on that box if you want to, perhaps to see which build path is easiest, cmake or autotools.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest using the autotools build. Our IBM i platform support in CMake is not as robust as autotools yet.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, definitely the autotools build

@sam-github
Copy link
Contributor

@ThePrez Looks like we are getting closer to taking another shot at this, do you have time to rebase this and resolve the conflicts?

@ThePrez
Copy link
Contributor Author

ThePrez commented Apr 22, 2020

Yep. I'm doing several webinars today and tomorrow, but will definitely get this rebased by Friday at the latest.

@ThePrez
Copy link
Contributor Author

ThePrez commented Apr 23, 2020

Merged and cleaned up

@sam-github
Copy link
Contributor

I rebased this, and force pushed @ThePrez 's branch, and saved the original at https://github.com/sam-github/build/tree/ibmi-orig for future reference.

ansible/host_vars/test-iinthecloud-ibmi72-ppc64_be-1 Outdated Show resolved Hide resolved
ansible/roles/baselayout/vars/main.yml Outdated Show resolved Hide resolved
ansible/roles/jenkins-worker/tasks/main.yml Outdated Show resolved Hide resolved
ansible/roles/jenkins-worker/tasks/main.yml Outdated Show resolved Hide resolved
@@ -6,3 +6,5 @@

- name: upgrade installed packages
yum: name=* state=latest
# XXX might have needed `use_backend=yum` at end of last line, but prob
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can remove this comment before landing

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this could break other platforms that need a dnf/yum4 backend. We may need to condition this by os or set an ansible_pkg_mgr fact
https://docs.ansible.com/ansible/latest/modules/yum_module.html

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is about getting ansible to recognise yum on IBM i I have a one-line patch for ansible to add /QOpenSys/pkgs/bin/yum to the list of PKG_MGRS:

--- /home/users/riclau/.local/lib/python2.7/site-packages/ansible/module_utils/facts/system/pkg_mgr.py.old      2020-04-23 12:22:58.779566067 -0400
+++ /home/users/riclau/.local/lib/python2.7/site-packages/ansible/module_utils/facts/system/pkg_mgr.py  2020-04-23 12:24:16.201566043 -0400
@@ -37,6 +37,7 @@
             {'path': '/usr/sbin/sorcery', 'name': 'sorcery'},
             {'path': '/usr/bin/rpm-ostree', 'name': 'atomic_container'},
             {'path': '/usr/bin/installp', 'name': 'installp'},
+            {'path': '/QOpenSys/pkgs/bin/yum', 'name': 'yum'},
             ]

I'll look at submitting this to ansible.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ansible/MANUAL_STEPS.md Outdated Show resolved Hide resolved
@richardlau
Copy link
Member

I've resolved the merge conflict that arose after I pulled out adding the iinthecloud provider to a separate PR (#2325) so that I could add the new test machines and secrets for them to the secrets repository.

The ansible scripts work (with my local ansible patched with ansible/ansible#69484) on test-iinthecloud-ibmi72-ppc64_be-1 (65.183.160.52) but are failing on test-iinthecloud-ibmi72-ppc64_be-2 (65.183.160.59):

-bash-4.2$ ansible-playbook playbooks/jenkins/worker/create.yml -l test-iinthecloud-ibmi72-ppc64_be-2
...
PLAY [test,release,infra-softlayer-ubuntu1404-x64-2,!*-win*] ***************************************************************************************************************

TASK [check if secret is properly set] *************************************************************************************************************************************
ok: [test-iinthecloud-ibmi72-ppc64_be-2]

TASK [bootstrap : run os-specific bootstrap] *******************************************************************************************************************************

TASK [bootstrap : run raspberry pi bootstrap] ******************************************************************************************************************************
skipping: [test-iinthecloud-ibmi72-ppc64_be-2]

TASK [package-upgrade : include package manager tasks] *********************************************************************************************************************
included: /home/users/riclau/sandbox/github/build/ansible/roles/package-upgrade/tasks/partials/yum.yml for test-iinthecloud-ibmi72-ppc64_be-2

TASK [package-upgrade : upgrade installed packages] ************************************************************************************************************************
fatal: [test-iinthecloud-ibmi72-ppc64_be-2]: FAILED! => {"changed": false, "cmd": "-d 2 -y check-update", "msg": "[Errno 2] No such file or directory", "rc": 2}

PLAY RECAP *****************************************************************************************************************************************************************
test-iinthecloud-ibmi72-ppc64_be-2 : ok=2    changed=0    unreachable=0    failed=1    skipped=2    rescued=0    ignored=0

-bash-4.2$

After some digging it looks like the yum module in ansible is failing to find the yum binary (the "cmd" should be "/yum -d 2 -y check-update". Further digging suggests that the module searches the PATH environment variable and we can see a difference between the two hosts:

-bash-4.2$ ansible -m setup -a "filter=ansible_env" test-iinthecloud-ibmi72-ppc64_be-*
...
test-iinthecloud-ibmi72-ppc64_be-2 | SUCCESS => {
    "ansible_facts": {
        "ansible_env": {
            "HOME": "/home/NODEJS",
            "LOGIN": "nodejs",
            "LOGNAME": "nodejs",
            "MAIL": "/var/spool/mail/nodejs",
            "PASE_USRGRP_LIMITED": "N",
            "PATH": "/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin",
            "PWD": "/home/NODEJS",
            "SHELL": "/QOpenSys/pkgs/bin/bash",
            "SHLVL": "1",
            "SSH_CLIENT": "199.246.40.58 49346 22",
            "SSH_CONNECTION": "199.246.40.58 49346 172.29.5.59 22",
            "SSH_TTY": "/dev/pts/1",
            "TERM": "xterm-256color",
            "TZ": "<EST>5<EDT>,M3.2.0,M11.1.0",
            "USER": "nodejs",
            "_": "/QOpenSys/pkgs/bin/python2"
        }
    },
    "changed": false
}
test-iinthecloud-ibmi72-ppc64_be-1 | SUCCESS => {
    "ansible_facts": {
        "ansible_env": {
            "HOME": "/home/NODEJS",
            "LOGIN": "nodejs",
            "LOGNAME": "nodejs",
            "MAIL": "/var/spool/mail/nodejs",
            "PASE_USRGRP_LIMITED": "N",
            "PATH": "/QOpenSys/pkgs/bin:/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin",
            "PWD": "/home/NODEJS",
            "SHELL": "/QOpenSys/pkgs/bin/bash",
            "SHLVL": "1",
            "SSH_CLIENT": "199.246.40.58 51324 22",
            "SSH_CONNECTION": "199.246.40.58 51324 172.29.5.52 22",
            "SSH_TTY": "/dev/pts/0",
            "TERM": "xterm-256color",
            "TZ": "<EST>5<EDT>,M3.2.0,M11.1.0",
            "USER": "nodejs",
            "_": "/QOpenSys/pkgs/bin/python2"
        }
    },
    "changed": false
}
-bash-4.2$

i.e. for some reason PATH on test-iinthecloud-ibmi72-ppc64_be-2 doesn't include /QOpenSys/pkgs/bin.

-bash-4.2$ ssh test-iinthecloud-ibmi72-ppc64_be-1 "env | grep PATH"
PATH=/QOpenSys/pkgs/bin:/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin
-bash-4.2$ ssh test-iinthecloud-ibmi72-ppc64_be-2 "env | grep PATH"
PATH=/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin
-bash-4.2$

The documentation in this PR updates ansible/MANUAL_STEPS.md with instructions to edit /QOpenSys/etc/profile but this looks to already contain the PATH setting:

-bash-4.2$ ssh test-iinthecloud-ibmi72-ppc64_be-2 "cat /QOpenSys/etc/profile"
PATH=/QOpenSys/pkgs/bin:$PATH
export PATH
LC_ALL=EN_US.UTF-8
export LC_ALL
OBJECT_MODE=64
export OBJECT_MODE
PAGER=/QOpenSys/pkgs/bin/less
export PAGER
alias wget='/QOpenSys/pkgs/bin/wget --no-check-certificate'
alias grep='/QOpenSys/pkgs/bin/grep --color=auto'
alias ls='/QOpenSys/pkgs/bin/ls --color=auto -F'

CC=gcc
export CC
CXX=g++
export CXX


alias pull='git pull --rebase'
alias push='git pull --rebase && git push'


#export NVM_DIR="$HOME/.nvm"
#[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
#[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  #
#This loads nvm bash_completion
-bash-4.2$

@nodejs/platform-ibmi Any pointers on how to resolve the PATH discrepancy on test-iinthecloud-ibmi72-ppc64_be-2 (65.183.160.59)?

Copy link
Contributor

@sam-github sam-github left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks close to ready!

ansible/MANUAL_STEPS.md Outdated Show resolved Hide resolved
ansible/MANUAL_STEPS.md Show resolved Hide resolved
ansible/roles/package-upgrade/tasks/partials/yum.yml Outdated Show resolved Hide resolved
ansible/roles/package-upgrade/tasks/partials/yum.yml Outdated Show resolved Hide resolved
@sam-github
Copy link
Contributor

There are a couple minor comments, but once addressed, I think this should be merged. Its not set in stone, we can PR more changes later if necessary while getting node.js build jobs working.

@richardlau
Copy link
Member

I've compared /home/NODEJS on the two test machines and test-iinthecloud-ibmi72-ppc64_be-2 didn't have a /home/NODEJS/.bashrc file so I copied /home/NODEJS/.profile (which was updating PATH to include /QOpenSys/pkgs/bin) to /home/NODEJS/.bashrc and that's now set for non-interactive ssh:

-bash-4.2$ ssh test-iinthecloud-ibmi72-ppc64_be-2 "env | grep PATH"
PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin
-bash-4.2$

Running the playbook gets a bit further now, but errors with

TASK [package-upgrade : upgrade installed packages] ************************************************************************************************************************
fatal: [test-iinthecloud-ibmi72-ppc64_be-2]: FAILED! => {"changed": true, "changes": {"installed": [], "updated": [["libglib-2_0-0", "2.52.0-4.ppc64 from ibm"], ["libopenssl1_0_0", "1.0.2t-0.ppc64 from ibm"], ["libz1", "1.2.11-3.ppc64 from ibm"], ["gcc-cplusplus-aix", "6.3.0-25.fat from ibm"], ["libreadline6", "6.3-4.ppc64 from ibm"], ["pase-libs-dummy", "7.2-0.fat from ibm"], ["gmp-aix", "5.1.3-13.fat from ibm"], ["git", "2.26.2-1.ppc64 from ibm"], ["libgcc-aix", "6.3.0-25.fat from ibm"], ["python2", "2.7.18-2.ppc64 from ibm"], ["nss", "3.30-6.ppc64 from ibm"], ["rpm", "4.13.1-1.ppc64 from ibm"], ["libgcc_s1", "6.3.0-25.ppc64 from ibm"], ["libatomic1", "6.3.0-25.ppc64 from ibm"], ["libopenssl1_1", "1.1.1-7.ppc64 from ibm"], ["gcc-aix", "6.3.0-25.fat from ibm"], ["libffi6", "3.2.1-2.ppc64 from ibm"], ["openssl-devel", "1.1.1-7.ppc64 from ibm"], ["coreutils-pase-dummy", "7.2-0.ppc from ibm"], ["libsqlite3-0", "3.19.3-2.ppc64 from ibm"], ["make-gnu", "4.2-1.ppc64 from ibm"], ["coreutils-gnu", "8.25-5.ppc64 from ibm"], ["python2-setuptools", "36.0.1-3.noarch from ibm"], ["file-magic", "5.32-6.ppc64 from ibm"], ["python2-iniparse", "0.4-2.noarch from ibm"], ["libintl9", "0.19.8-1.ppc64 from ibm"], ["libmagic1", "5.32-6.ppc64 from ibm"], ["ca-certificates-mozilla", "2019.2.32-0.noarch from ibm"], ["liblzma5", "5.2.3-4.ppc64 from ibm"], ["sed-gnu", "4.4-1.ppc64 from ibm"], ["db", "4.8.30-3.ppc64 from ibm"], ["libmpc-aix", "1.0.3-14.fat from ibm"], ["yum-metadata-parser", "1.1.4-2.ppc64 from ibm"], ["python2-pycurl", "7.43.0-4.ppc64 from ibm"], ["libpcre1", "8.43-0.ppc64 from ibm"], ["python2-urlgrabber", "3.10.2-3.noarch from ibm"], ["perl", "5.24.1-1.ppc64 from ibm"], ["ca-certificates", "2_git20170807.10b2785-1.noarch from ibm"], ["libiconv2", "1.14-4.ppc64 from ibm"], ["libtool", "2.4.6-5.ppc64 from ibm"], ["libncurses6", "6.0-5.ppc64 from ibm"], ["liblua5_3", "5.3.4-3.ppc64 from ibm"], ["wget", "1.20.3-2.ppc64 from ibm"], ["gcc-cpp-aix", "6.3.0-25.fat from ibm"], ["bash", "4.4-2.ppc64 from ibm"], ["python2-wheel", "0.29.0-3.noarch from ibm"], ["zlib-devel", "1.2.11-3.ppc64 from ibm"], ["nspr", "4.13.1-4.ppc64 from ibm"], ["libpopt0", "1.16-2.ppc64 from ibm"], ["python2-pip", "9.0.1-3.noarch from ibm"], ["mpfr-aix", "3.1.2-12.fat from ibm"], ["libxml2-2", "2.9.4-4.ppc64 from ibm"], ["libcurl4", "7.65.3-4.ppc64 from ibm"], ["python2-rpm", "4.13.1-1.ppc64 from ibm"], ["yum", "3.4.3-18.noarch from ibm"], ["ncurses-terminfo", "6.0-5.ppc64 from ibm"], ["libexpat1", "2.2.9-1.ppc64 from ibm"], ["automake", "1.15-2.noarch from ibm"], ["libstdcplusplus-aix", "6.3.0-25.fat from ibm"], ["libbz2-1", "1.0.6-15.ppc64 from ibm"]]}, "msg": "Bad id for repo: QSECOFR IBM i RPM Repo, byte =   7\nError: Package: ca-certificates-mozilla-2019.2.32-0.noarch (ibm)\n           Requires: /QOpenSys/pkgs/bin/update-ca-certificates\n           Available: ca-certificates-2_git20170807.10b2785-1.noarch (ibm)\n               Not found\n           Removing: ca-certificates-1.0-1.ppc64 (@qsecofr)\n               Not found\n           Obsoleted By: ca-certificates-mozilla-2019.2.32-0.noarch (ibm)\n               Not found\n", "obsoletes": {"ca-certificates": {"dist": "ppc64", "repo": "@qsecofr", "version": "1.0-1"}}, "rc": 1, "results": ["Setting up Update Process\nResolving Dependencies\n--> Running transaction check\n---> Package automake.noarch 0:1.15-1 will be updated\n---> Package automake.noarch 0:1.15-2 will be an update\n---> Package bash.ppc64 0:4.4-1 will be updated\n---> Package bash.ppc64 0:4.4-2 will be an update\n---> Package ca-certificates.ppc64 0:1.0-1 will be obsoleted\n---> Package ca-certificates-mozilla.noarch 0:2019.2.32-0 will be obsoleting\n--> Processing Dependency: /QOpenSys/pkgs/bin/update-ca-certificates for package: ca-certificates-mozilla-2019.2.32-0.noarch\n---> Package coreutils-gnu.ppc64 0:8.25-2 will be updated\n---> Package coreutils-gnu.ppc64 0:8.25-5 will be an update\n---> Package coreutils-pase-dummy.ppc 0:7.1-0 will be updated\n---> Package coreutils-pase-dummy.ppc 0:7.2-0 will be an update\n---> Package db.ppc64 0:4.8.30-0 will be updated\n--> Processing Dependency: lib:/QOpenSys/pkgs/lib/libdb.so.4.8(shr_64.o)(ppc64) for package: rpm-4.13.1-1.ppc64\n--> Processing Dependency: lib:/QOpenSys/pkgs/lib/libdb.so.4.8(shr_64.o)(ppc64) for package: db-4.8.30-3.ppc64\n---> Package db.ppc64 0:4.8.30-3 will be an update\n---> Package file-magic.ppc64 0:5.32-4 will be updated\n---> Package file-magic.ppc64 0:5.32-6 will be an update\n---> Package gcc-aix.fat 0:6.3.0-24 will be updated\n---> Package gcc-aix.fat 0:6.3.0-25 will be an update\n---> Package gcc-cplusplus-aix.fat 0:6.3.0-24 will be updated\n---> Package gcc-cplusplus-aix.fat 0:6.3.0-25 will be an update\n---> Package gcc-cpp-aix.fat 0:6.3.0-24 will be updated\n---> Package gcc-cpp-aix.fat 0:6.3.0-25 will be an update\n---> Package git.ppc64 0:2.10.4-0 will be updated\n---> Package git.ppc64 0:2.26.2-1 will be an update\n---> Package gmp-aix.fat 0:5.1.3-12 will be updated\n---> Package gmp-aix.fat 0:5.1.3-13 will be an update\n---> Package libatomic1.ppc64 0:6.3.0-24 will be updated\n---> Package libatomic1.ppc64 0:6.3.0-25 will be an update\n---> Package libbz2-1.ppc64 0:1.0.6-13 will be updated\n---> Package libbz2-1.ppc64 0:1.0.6-15 will be an update\n---> Package libcurl4.ppc64 0:7.58.0-2 will be updated\n---> Package libcurl4.ppc64 0:7.65.3-4 will be an update\n---> Package libexpat1.ppc64 0:2.2.0-0 will be updated\n---> Package libexpat1.ppc64 0:2.2.9-1 will be an update\n---> Package libffi6.ppc64 0:3.2.1-1 will be updated\n---> Package libffi6.ppc64 0:3.2.1-2 will be an update\n---> Package libgcc-aix.fat 0:6.3.0-24 will be updated\n---> Package libgcc-aix.fat 0:6.3.0-25 will be an update\n---> Package libgcc_s1.ppc64 0:6.3.0-24 will be updated\n---> Package libgcc_s1.ppc64 0:6.3.0-25 will be an update\n---> Package libglib-2_0-0.ppc64 0:2.52.0-3 will be updated\n---> Package libglib-2_0-0.ppc64 0:2.52.0-4 will be an update\n---> Package libiconv2.ppc64 0:1.14-2 will be updated\n---> Package libiconv2.ppc64 0:1.14-4 will be an update\n---> Package libintl9.ppc64 0:0.19.8-0 will be updated\n---> Package libintl9.ppc64 0:0.19.8-1 will be an update\n---> Package liblua5_3.ppc64 0:5.3.4-1 will be updated\n---> Package liblua5_3.ppc64 0:5.3.4-3 will be an update\n---> Package liblzma5.ppc64 0:5.2.3-2 will be updated\n---> Package liblzma5.ppc64 0:5.2.3-4 will be an update\n---> Package libmagic1.ppc64 0:5.32-4 will be updated\n---> Package libmagic1.ppc64 0:5.32-6 will be an update\n---> Package libmpc-aix.fat 0:1.0.3-13 will be updated\n---> Package libmpc-aix.fat 0:1.0.3-14 will be an update\n---> Package libncurses6.ppc64 0:6.0-2 will be updated\n---> Package libncurses6.ppc64 0:6.0-5 will be an update\n--> Processing Dependency: lib:/QOpenSys/pkgs/lib/libstdc++.so.6(shr_64.o)(ppc64) for package: libncurses6-6.0-5.ppc64\n---> Package libopenssl1_0_0.ppc64 0:1.0.2q-0 will be updated\n---> Package libopenssl1_0_0.ppc64 0:1.0.2t-0 will be an update\n---> Package libopenssl1_1.ppc64 0:1.1.1-3 will be updated\n---> Package libopenssl1_1.ppc64 0:1.1.1-7 will be an update\n---> Package libpcre1.ppc64 0:8.40-0 will be updated\n---> Package libpcre1.ppc64 0:8.43-0 will be an update\n---> Package libpopt0.ppc64 0:1.16-1 will be updated\n---> Package libpopt0.ppc64 0:1.16-2 will be an update\n---> Package libreadline6.ppc64 0:6.3-2 will be updated\n---> Package libreadline6.ppc64 0:6.3-4 will be an update\n---> Package libsqlite3-0.ppc64 0:3.19.3-0 will be updated\n---> Package libsqlite3-0.ppc64 0:3.19.3-2 will be an update\n---> Package libstdcplusplus-aix.fat 0:6.3.0-24 will be updated\n---> Package libstdcplusplus-aix.fat 0:6.3.0-25 will be an update\n---> Package libtool.ppc64 0:2.4.6-3 will be updated\n---> Package libtool.ppc64 0:2.4.6-5 will be an update\n--> Processing Dependency: grep-gnu for package: libtool-2.4.6-5.ppc64\n---> Package libxml2-2.ppc64 0:2.9.4-3 will be updated\n---> Package libxml2-2.ppc64 0:2.9.4-4 will be an update\n---> Package libz1.ppc64 0:1.2.11-1 will be updated\n---> Package libz1.ppc64 0:1.2.11-3 will be an update\n---> Package make-gnu.ppc64 0:4.2-0 will be updated\n---> Package make-gnu.ppc64 0:4.2-1 will be an update\n---> Package mpfr-aix.fat 0:3.1.2-11 will be updated\n---> Package mpfr-aix.fat 0:3.1.2-12 will be an update\n---> Package ncurses-terminfo.ppc64 0:6.0-2 will be updated\n---> Package ncurses-terminfo.ppc64 0:6.0-5 will be an update\n---> Package nspr.ppc64 0:4.13.1-3 will be updated\n---> Package nspr.ppc64 0:4.13.1-4 will be an update\n---> Package nss.ppc64 0:3.30-5 will be updated\n---> Package nss.ppc64 0:3.30-6 will be an update\n---> Package openssl-devel.ppc64 0:1.1.1-3 will be updated\n---> Package openssl-devel.ppc64 0:1.1.1-7 will be an update\n---> Package pase-libs-dummy.fat 0:7.1-0 will be updated\n---> Package pase-libs-dummy.fat 0:7.2-0 will be an update\n---> Package perl.ppc64 0:5.24.1-0 will be updated\n---> Package perl.ppc64 0:5.24.1-1 will be an update\n---> Package python2.ppc64 0:2.7.15-2 will be updated\n---> Package python2.ppc64 0:2.7.18-2 will be an update\n--> Processing Dependency: libutil-devel >= 0.7 for package: python2-2.7.18-2.ppc64\n---> Package python2-iniparse.noarch 0:0.4-1 will be updated\n---> Package python2-iniparse.noarch 0:0.4-2 will be an update\n---> Package python2-pip.noarch 0:9.0.1-2 will be updated\n---> Package python2-pip.noarch 0:9.0.1-3 will be an update\n---> Package python2-pycurl.ppc64 0:7.43.0-1 will be updated\n---> Package python2-pycurl.ppc64 0:7.43.0-4 will be an update\n---> Package python2-rpm.ppc64 0:4.13.0.1-16 will be updated\n---> Package python2-rpm.ppc64 0:4.13.1-1 will be an update\n---> Package python2-setuptools.noarch 0:36.0.1-2 will be updated\n---> Package python2-setuptools.noarch 0:36.0.1-3 will be an update\n---> Package python2-urlgrabber.noarch 0:3.10.2-2 will be updated\n---> Package python2-urlgrabber.noarch 0:3.10.2-3 will be an update\n---> Package python2-wheel.noarch 0:0.29.0-2 will be updated\n---> Package python2-wheel.noarch 0:0.29.0-3 will be an update\n---> Package rpm.ppc64 0:4.13.0.1-16 will be updated\n---> Package rpm.ppc64 0:4.13.1-1 will be an update\n--> Processing Dependency: lib:/QOpenSys/pkgs/lib/libarchive.so.13(shr_64.o)(ppc64) for package: rpm-4.13.1-1.ppc64\n---> Package sed-gnu.ppc64 0:4.4-0 will be updated\n---> Package sed-gnu.ppc64 0:4.4-1 will be an update\n---> Package wget.ppc64 0:1.17.1-1 will be updated\n---> Package wget.ppc64 0:1.20.3-2 will be an update\n---> Package yum.noarch 0:3.4.3-17 will be updated\n---> Package yum.noarch 0:3.4.3-18 will be an update\n---> Package yum-metadata-parser.ppc64 0:1.1.4-1 will be updated\n---> Package yum-metadata-parser.ppc64 0:1.1.4-2 will be an update\n---> Package zlib-devel.ppc64 0:1.2.11-1 will be updated\n---> Package zlib-devel.ppc64 0:1.2.11-3 will be an update\n--> Running transaction check\n---> Package ca-certificates-mozilla.noarch 0:2019.2.32-0 will be obsoleting\n--> Processing Dependency: /QOpenSys/pkgs/bin/update-ca-certificates for package: ca-certificates-mozilla-2019.2.32-0.noarch\n---> Package grep-gnu.ppc64 0:3.0-2 will be installed\n---> Package libarchive13.ppc64 0:3.3.3-1 will be installed\n---> Package libdb48.ppc64 0:4.8.30-3 will be installed\n---> Package libstdcplusplus6.ppc64 0:6.3.0-25 will be installed\n---> Package libutil-devel.ppc64 0:0.8.0-1 will be installed\n--> Processing Dependency: /QOpenSys/pkgs/bin/update-ca-certificates for package: ca-certificates-mozilla-2019.2.32-0.noarch\n--> Finished Dependency Resolution\n You could try using --skip-broken to work around the problem\n You could try running: rpm -Va --nofiles --nodigest\n"]}

Extracting "msg" and applying the line breaks:

Bad id for repo: QSECOFR IBM i RPM Repo, byte =   7
Error: Package: ca-certificates-mozilla-2019.2.32-0.noarch (ibm)
           Requires: /QOpenSys/pkgs/bin/update-ca-certificates
           Available: ca-certificates-2_git20170807.10b2785-1.noarch (ibm)
               Not found
           Removing: ca-certificates-1.0-1.ppc64 (@qsecofr)
               Not found
           Obsoleted By: ca-certificates-mozilla-2019.2.32-0.noarch (ibm)
               Not found

I've fixed the error about the bad id by moving /QOpenSys/etc/yum/repos.d/QSECOFR IBM i RPM Repo.repo to /home/NODEJS/tmp/. Trying to work out how to solve the broken package.

@richardlau
Copy link
Member

Fixed the broken packages by manually running

mv /QOpenSys/etc/yum/repos.d/qsecofr.repo tmp/

so that only ibm.repo was in /QOpenSys/etc/yum/repos.d/ (matching test-iinthecloud-ibmi72-ppc64_be-1) and then

yum remove ca-certificates
yum install ca-certificates

@richardlau
Copy link
Member

I've used the current version of this PR to set up https://ci.nodejs.org/computer/test-iinthecloud-ibmi72-ppc64_be-2/ and tested that it can successfully run the libuv builds, so I think barring the documentation/comment issues @sam-github has raised this is good to go as a starting point.

Copy link
Member

@richardlau richardlau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM pending the points raised by @sam-github.

ThePrez and others added 4 commits May 21, 2020 12:56
Co-authored-by: Sam Roberts <vieuxtech@gmail.com>
Co-authored-by: Sam Roberts <vieuxtech@gmail.com>
Co-authored-by: Sam Roberts <vieuxtech@gmail.com>
@ThePrez
Copy link
Contributor Author

ThePrez commented May 21, 2020

I think I addressed the comments, plus some other minor adds/cleanup

ansible/MANUAL_STEPS.md Outdated Show resolved Hide resolved
@sam-github sam-github merged commit 9cf3680 into nodejs:master May 21, 2020
@sam-github
Copy link
Contributor

🎂

@mhdawson mhdawson mentioned this pull request May 22, 2020
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants