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

packaging: have noarch defined for rpms #10057

Open
wants to merge 9 commits into
base: 4.20
Choose a base branch
from

Conversation

rohityadavcloud
Copy link
Member

@rohityadavcloud rohityadavcloud commented Dec 7, 2024

This makes rpms arch-independent. CloudStack rpms are largely arch independent. While deb pkgs are usable across archs now, rpms aren’t.

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • build/CI
  • test (unit or integration test code)

This makes rpms arch-independent

Signed-off-by: Rohit Yadav <[email protected]>
@rohityadavcloud rohityadavcloud added this to the 4.20.1 milestone Dec 7, 2024
@rohityadavcloud
Copy link
Member Author

@blueorangutan package

@blueorangutan
Copy link

@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

Copy link

codecov bot commented Dec 7, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 16.04%. Comparing base (2fe3fce) to head (4f7fb62).
Report is 43 commits behind head on 4.20.

Additional details and impacted files
@@             Coverage Diff              @@
##               4.20   #10057      +/-   ##
============================================
+ Coverage     15.80%   16.04%   +0.23%     
- Complexity    12586    12815     +229     
============================================
  Files          5627     5637      +10     
  Lines        492343   493631    +1288     
  Branches      59694    59880     +186     
============================================
+ Hits          77828    79183    +1355     
+ Misses       405992   405662     -330     
- Partials       8523     8786     +263     
Flag Coverage Δ
uitests 4.10% <ø> (+0.05%) ⬆️
unittests 16.87% <ø> (+0.24%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@blueorangutan
Copy link

Packaging result [SF]: ✖️ el8 ✖️ el9 ✔️ debian ✖️ suse15. SL-JID 11741

@rohityadavcloud
Copy link
Member Author

@blueorangutan package

@blueorangutan
Copy link

@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✖️ el9 ✔️ debian ✖️ suse15. SL-JID 11744

@NuxRo
Copy link
Contributor

NuxRo commented Dec 7, 2024

@rohityadavcloud When I tried to install the RPMs in Fedora (ARM64) it really wanted libc.so.6(GLIBC_2.3) which was the version on the build system, but not on the Fedora system.
We might have to add "AutoReqProv: no" to the spec to leave the automatic deps behind.
"%global _filter_GLIBC_PRIVATE 1" might be a smaller hammer, but needs testing, not 100% sure it'll work, never used it.

@rohityadavcloud
Copy link
Member Author

@blueorangutan package

@blueorangutan
Copy link

@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✖️ el9 ✔️ debian ✖️ suse15. SL-JID 11747

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 11749

@blueorangutan
Copy link

Packaging result [SF]: ✖️ el8 ✖️ el9 ✖️ debian ✖️ suse15. SL-JID 11750

@weizhouapache
Copy link
Member

@blueorangutan package

@blueorangutan
Copy link

@weizhouapache a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 11751

@weizhouapache
Copy link
Member

@blueorangutan test

@blueorangutan
Copy link

@weizhouapache a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests

@rohityadavcloud
Copy link
Member Author

cc @NuxRo still doesn't work:

root@devcloud:~# dnf install cloudstack-common-4.20.1.0-1.noarch.rpm
Updating and loading repositories:
 Fedora 41 - aarch64 - Updates                                                                                                                   100% |  14.8 KiB/s |   6.7 KiB |  00m00s
 Fedora 41 - aarch64 - Updates                                                                                                                   100% |  71.9 KiB/s | 292.5 KiB |  00m04s
Repositories loaded.
Failed to resolve the transaction:
Problem: conflicting requests
  - nothing provides libc.so.6 needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.0) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.1) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.2) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.2.3) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.3) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
You can try to add to command line:
  --skip-broken to skip uninstallable packages

But the workaround was to rpm -ivh cloudstack-common-4.20.1.0-1.noarch.rpm --nodeps.

@blueorangutan
Copy link

[SF] Trillian test result (tid-11864)
Environment: kvm-ol8 (x2), Advanced Networking with Mgmt server ol8
Total time taken: 52133 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr10057-t11864-kvm-ol8.zip
Smoke tests completed. 141 look OK, 0 have errors, 0 did not run
Only failed and skipped tests results shown below:

Test Result Time (s) Test File

@NuxRo
Copy link
Contributor

NuxRo commented Dec 9, 2024

cc @NuxRo still doesn't work:

root@devcloud:~# dnf install cloudstack-common-4.20.1.0-1.noarch.rpm
Updating and loading repositories:
 Fedora 41 - aarch64 - Updates                                                                                                                   100% |  14.8 KiB/s |   6.7 KiB |  00m00s
 Fedora 41 - aarch64 - Updates                                                                                                                   100% |  71.9 KiB/s | 292.5 KiB |  00m04s
Repositories loaded.
Failed to resolve the transaction:
Problem: conflicting requests
  - nothing provides libc.so.6 needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.0) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.1) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.2) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.2.3) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
  - nothing provides libc.so.6(GLIBC_2.3) needed by cloudstack-common-4.20.1.0-1.noarch from @commandline
You can try to add to command line:
  --skip-broken to skip uninstallable packages

But the workaround was to rpm -ivh cloudstack-common-4.20.1.0-1.noarch.rpm --nodeps.

I'll try to find some time and test for a solution.
In theory if we specify all our deps correctly in the spec file then we can use "AutoReqProv: no" which should sort this problem out.

@rohityadavcloud
Copy link
Member Author

@blueorangutan package

@blueorangutan
Copy link

@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 11765

@rohityadavcloud
Copy link
Member Author

@blueorangutan package

@blueorangutan
Copy link

@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 11768

@rohityadavcloud
Copy link
Member Author

@blueorangutan package

@rohityadavcloud
Copy link
Member Author

@blueorangutan package

@blueorangutan
Copy link

@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@@ -17,6 +17,8 @@

%define __os_install_post %{nil}
%global debug_package %{nil}
%global __requires_exclude *libc.so.*
Copy link
Member Author

@rohityadavcloud rohityadavcloud Dec 17, 2024

Choose a reason for hiding this comment

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

JFYI - I couldn't figure out how to exclude rpm to indirectly depend on libc, any feedback/ideas are welcome. cc @NuxRo @weizhouapache @DaanHoogland @JoaoJandre and others.

On non-x86 hosts, the workaround to install the noarch (cloudstack-common) rpms is currently that you force install cloudstack-common (where libc is a dependency) using rpm -ivh --no-deps and then rest pkgs like cloudstack-agent etc install okay.

Copy link
Member

Choose a reason for hiding this comment

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

from https://docs.fedoraproject.org/en-US/packaging-guidelines/AutoProvidesAndRequiresFiltering/
it looks double backslash is required for .

maybe like this (to exclude libc.so.X) ?

%global __requires_exclude libc\\.so\\..*

@blueorangutan
Copy link

Packaging result [SF]: ✖️ el8 ✖️ el9 ✖️ debian ✖️ suse15. SL-JID 11832

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.

4 participants