Skip to content

Conversation

@jiasli
Copy link
Member

@jiasli jiasli commented Dec 3, 2021

Symptom

After

CI task Build Rpm Package fails when installing the built azure-cli-dev.rpm:

https://dev.azure.com/azure-sdk/public/_build/results?buildId=1227167&view=logs&jobId=eefb80ef-df2c-51d4-a735-8b3fa596bf12&j=eefb80ef-df2c-51d4-a735-8b3fa596bf12&t=6f9a8c49-480f-5696-065d-31253d9c4238

error: Failed dependencies:
	libffi-d58a691e.so.8.1.0(LIBFFI_BASE_8.0)(64bit) is needed by azure-cli-2.31.0-1.el7.x86_64
	libffi-d58a691e.so.8.1.0(LIBFFI_CLOSURE_8.0)(64bit) is needed by azure-cli-2.31.0-1.el7.x86_64
The command '/bin/sh -c rpm -i ./azure-cli-dev.rpm &&     az --version' returned a non-zero code: 1

Looks like what the built RPM package requires differs from what it provides.

# rpm --query --requires --package azure-cli-2.31.0-1.el7.x86_64.rpm
config(azure-cli) = 2.31.0-1.el7
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.6)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libffi-d58a691e.so.8.1.0()(64bit)
libffi-d58a691e.so.8.1.0(LIBFFI_BASE_8.0)(64bit)
libffi-d58a691e.so.8.1.0(LIBFFI_CLOSURE_8.0)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpython3.6m.so.1.0()(64bit)
python3
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

# rpm --query --provides --package azure-cli-2.31.0-1.el7.x86_64.rpm
azure-cli = 2.31.0-1.el7
azure-cli(x86-64) = 2.31.0-1.el7
config(azure-cli) = 2.31.0-1.el7
libffi-d58a691e.so.8.1.0()(64bit)
libffi.so.8(LIBFFI_BASE_8.0)(64bit)
libffi.so.8(LIBFFI_CLOSURE_8.0)(64bit)
libffi.so.8(LIBFFI_COMPLEX_8.0)(64bit)
libffi.so.8(LIBFFI_GO_CLOSURE_8.0)(64bit)

(RPM man page: https://man7.org/linux/man-pages/man8/rpm.8.html)

This issue has been reported to cffi: https://foss.heptapod.net/pypy/cffi/-/issues/513

Context

Some other tricky things:

Also see:

Some other resources that may be related:

Change

Revert cffi to the old 1.14.6 to unblock RPM and Mariner builds (#20584).

# pip3 install cffi==1.14.6

# find / -name libffi*
/usr/lib64/libffi.so.6.0.1
/usr/lib64/libffi.so.6
/usr/local/lib64/python3.6/site-packages/cffi.libs/libffi-c643fa1a.so.6.0.4

@jiasli
Copy link
Member Author

jiasli commented Dec 3, 2021

Before bumping cffi to 1.15.0, there is only libffi-806b1a9d.so.6.0.4()(64bit):

# curl -O https://packages.microsoft.com/yumrepos/azure-cli/azure-cli-2.30.0-1.el7.x86_64.rpm

# rpm --query --provides --package azure-cli-2.30.0-1.el7.x86_64.rpm
warning: azure-cli-2.30.0-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID be1229cf: NOKEY
azure-cli = 2.30.0-1.el7
azure-cli(x86-64) = 2.30.0-1.el7
config(azure-cli) = 2.30.0-1.el7
libffi-806b1a9d.so.6.0.4()(64bit)

# rpm --query --requires --package azure-cli-2.30.0-1.el7.x86_64.rpm
warning: azure-cli-2.30.0-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID be1229cf: NOKEY
config(azure-cli) = 2.30.0-1.el7
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.6)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libffi-806b1a9d.so.6.0.4()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpython3.6m.so.1.0()(64bit)
python3
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

@jiasli
Copy link
Member Author

jiasli commented Dec 3, 2021

Comment on lines -683 to -685

dependsOn: BuildPythonWheel
condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'Manual', 'Schedule'))
Copy link
Member Author

Choose a reason for hiding this comment

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

We should build RPM/Yum for PRs, like we build MSI for PRs. Otherwise, issue like this can't be discovered by PR, but only after the PR gets merged.

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.

2 participants