Thursday, 2025-10-23

opendevreviewStephen Finucane proposed openstack/pbr master: Pin zuul ansible, pyperclip versions  https://review.opendev.org/c/openstack/pbr/+/96013311:50
opendevreviewStephen Finucane proposed openstack/pbr master: trivial: Inline LocalInstallScripts._make_wsgi_scripts_only  https://review.opendev.org/c/openstack/pbr/+/96002811:50
opendevreviewStephen Finucane proposed openstack/pbr master: Remove use of easy_install  https://review.opendev.org/c/openstack/pbr/+/96002911:50
opendevreviewStephen Finucane proposed openstack/pbr master: Inline overridden script writer  https://review.opendev.org/c/openstack/pbr/+/96003011:50
opendevreviewStephen Finucane proposed openstack/pbr master: WIP: Remove remaining user of pkg_resources  https://review.opendev.org/c/openstack/pbr/+/96003111:50
opendevreviewStephen Finucane proposed openstack/pbr master: WIP: Remove remaining user of pkg_resources  https://review.opendev.org/c/openstack/pbr/+/96003114:09
opendevreviewStephen Finucane proposed openstack/pbr master: Remove remaining user of pkg_resources  https://review.opendev.org/c/openstack/pbr/+/96003114:15
rosmaitahello ... i need some help with an openstack-tox based job that is failing at the "Install any sibling python packages" phase16:08
rosmaitait's installing glance_store as a sibling, but then is failing because the built package 4.8.3.dev1 violates the constraint of glance-store===4.8.216:08
rosmaitait's only failing on stable/2024.2, and the job is identical on the other branches but passing16:08
rosmaitahere's the job: https://zuul.opendev.org/t/openstack/build/15fa157c73ec4efca138eb933e2d8ca6/logs16:08
rosmaitajob name is "cross-glance-tox-functional"16:08
rosmaitathis one passed yesterday in stable/2024.1: https://zuul.opendev.org/t/openstack/build/0454dba0787243f1b54a31a3fdf4f29416:08
rosmaitait installs glance_store-4.7.1.dev6 with no problem even though the u-c is glance-store===4.7.016:08
rosmaitatox version same on both, both running py310, both on ubuntu-jammy16:08
rosmaitai am out of ideas about what could be causing this16:08
fungiis glance_store (or glance-store) listed in the required projects for the job?16:11
fungii thought tox-siblings stripped out constraints for required projects16:11
rosmaitayes https://opendev.org/openstack/glance_store/src/branch/stable/2024.2/.zuul.yaml#L13816:13
rosmaitathough the requirement is 'glance-store' in u-c ... but then that would affect the other branches, too16:13
fungithis could be related to the unpatched setuptools regression related to dist name normalization, i suppose16:19
rosmaitadoes sound plausible ... i have not been paying attention to that issue16:21
rosmaitaboth the passing and failing jobs are using the same version, though: Requirement already satisfied: setuptools>=40.8.0 in ./.tox/.pkg/lib/python3.10/site-packages (80.9.0)16:25
fungii can't find where in the logs it records altering the constraints file, but it clearly did something because it's passing /tmp/tmpwai21ri0 as the constraints file to all the pip install commands16:38
rosmaitaso your theory is that glance-store shouldn't even be in there16:40
rosmaitai can't figure out what would be making that branch act differently16:40
fungihttps://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox/tasks/siblings.yaml is where that happens16:41
fungiis tox.ini on that branch doing something strange with constraints management?16:43
fungioh, even more strange, this is a job running *for* glance_store16:44
rosmaitai don't think so ... i diffed caracal and dalmatian, and the only diff in the tox.ini file is the TOX_CONSTRAINT_FILE value16:44
rosmaitayeah, it installs both glance and glance_store, and then runs tox out of the glance directory16:44
rosmaita(don't ask me why we did it like that, i don't remember)16:44
croelandt+1 the only difference between these branches is that they point to their respective upper constraints file16:45
rosmaitafungi: croelandt is going to take over for a while, i need to walk the dog16:45
fungii think it may have something to do with glance-store vs glance_store in the upper-constraints.txt file in the requirements repo16:47
fungistable/2024.1 and stable/2024.2 use glance-store, while later branches use glance_store instead16:49
fungilooks like that changed when generate-constraints ran on 2025-02-22 for https://review.opendev.org/c/openstack/requirements/+/94250816:51
croelandtInteresting, we merged https://review.opendev.org/c/openstack/glance_store/+/940529 around that time in stable/2024.216:52
fungiruns for stable/2024.1 may be using an older setuptools where glance-store still works, due to running on an older python version?16:52
fungipure speculation16:52
croelandtSo maybe 1) I send a dummy patch to stable/2024.2 to make sure this triggers the issue 2) send a patch that s/glance-store/glance_store/ in .zuul.yaml to make sure it fixes the issue16:53
croelandthow does that sound?16:53
croelandtwell no actually sorry, I misunderstood16:55
fungithe required-projects list in the job definition uses the git repository names, not python dist package names, so no16:56
croelandthm, both stable/2024.1 and stable/2024.2 use Python 3.1016:56
fungiyeah, rules that out16:57
fungihttps://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox/library/tox_install_sibling_packages.py is the actual code that the name normalization when figuring out what to strip out of the constraints file16:58
fungithe write_new_constraints_file() function in particular16:58
clarkbfungi: croelandt I think the way it works is we let tox install everything. Then the zuul role iterates over all listed packages that were installed and if one of them is a sibling it installs that sibling from source updating the version16:58
clarkbfungi: croelandt if you then have followup steps that validate the versions against constraints you may fail. I suspect that is what may be happening here but I haven't pulled the logs up16:58
fungiclarkb: yes, it's the second phase where things are breaking16:59
fungifor some reason the sibling isn't getting stripped from the constraints file16:59
fungiso it tries to install from source and then the resulting version conflicts with what's in constraints16:59
clarkbcould it be the normalized name is used on one side and not the other so the lines don't match and the file isn't updated?16:59
fungithat's my primary suspicion, the question is why17:00
clarkbhttps://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox/library/tox_install_sibling_packages.py#L150 it does seem to be a naive equality check17:00
croelandtand also why only on 2024.2 and not 2024.1 :/17:00
clarkbnot equivalence check17:00
clarkbthe sibling package name is glance_store which != https://opendev.org/openstack/requirements/src/branch/stable/2024.2/upper-constraints.txt#L570 so the line is not updated in the tmp constraints17:05
croelandtbut I also see glance-store https://opendev.org/openstack/requirements/src/branch/stable/2024.1/upper-constraints.txt#L569 here 17:07
clarkbI guess we don't update the line we simply drop it entirely17:07
clarkb2024.1 says: 'Package glance-store (glance_store) on system in src/opendev.org/openstack/glance_store' in that task. But the failing job for 2024.2 says 'Package glance_store on system in src/opendev.org/openstack/glance_store'17:09
clarkbso the 2024.1 job almost seems to understand the equivalence but 2024.2 does not for some reason17:09
clarkbah 2024.1 also says 'Found glance-store python package installed' but 2024.2 says 'Found glance_store python package installed'17:10
clarkbthat logging comes from https://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox/library/tox_install_sibling_packages.py#L177-L20717:11
clarkbwe initially grab the name from here: https://opendev.org/openstack/glance_store/src/branch/stable/2024.2/setup.cfg#L2 (its the same value for 2024.1 and 2024.2)17:13
clarkbfungi: croelandt https://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox/library/tox_install_sibling_packages.py#L123-L141 in 2024.1 this method returns glance-store and in 2024.2 it returns glance_store17:15
croelandthm so it comes from pip freeze17:16
clarkbbut as you mention they are both python 3.10 jobs. Tox.ini for glance in those branches both have the same min version so I'm not sure why 2024.2 is using a different tox env. Maybe something has a hard dep on setuptools and is updating it in 2024.2?17:17
clarkbwe might have evidenceo f that in the logs17:17
clarkbfungi: glance_store is the new version of the name right? So newer tools that normalize more would potentially do it?17:18
opendevreviewStephen Finucane proposed openstack/pbr master: Remove dead code  https://review.opendev.org/c/openstack/pbr/+/96471217:18
opendevreviewStephen Finucane proposed openstack/pbr master: Remove unused code  https://review.opendev.org/c/openstack/pbr/+/96471317:18
opendevreviewStephen Finucane proposed openstack/pbr master: Rename setup.cfg parsing utilities  https://review.opendev.org/c/openstack/pbr/+/96471417:18
opendevreviewStephen Finucane proposed openstack/pbr master: Merge pbr.core, pbr.utils into pbr.setupcfg  https://review.opendev.org/c/openstack/pbr/+/96471517:18
opendevreviewStephen Finucane proposed openstack/pbr master: WIP: Add initial pyproject.toml hook  https://review.opendev.org/c/openstack/pbr/+/96471617:18
clarkbit looks like the same version of setuptools and pip at first glance. Quite a mystery.17:19
clarkbcould probably hold a node and inspect the tox env directly17:19
croelandtso glance itself has glance-store  in its requirements.txt17:21
clarkbfungi: I guess tox/nox siblings should probably avoid being the normalization police so updating the role to compared normalized forms would be an appropriate "fix" here but it doesn't explain why things differe between the branches17:21
frickler4.8.2 was release in Mar 2025, so with the new release tooling, 4.7.0 is from 2024, so old format. I think thats the essential difference17:32
clarkbfrickler: oh the package itself self reports the name differently when running pip freeze17:34
clarkbso ya in that case the correct fix here is probably to update siblings checks from equality to equivalence when modifying constraints17:34
rosmaitai wish we had called the thing glancestore !17:36
fungipython packaging standards consider any sequence of ".", "-" or "_" tp be equivalent to a single "_" so we could probably use a regular expression to look for any match that fits those rules17:37
rosmaitaclarkb: frickler: fungi: croelandt: it sounds like this has to be fixed on the zuul side?17:37
fungirosmaita: probably in zuul/zuul-jobs:roles/tox/library/tox_install_sibling_packages.py yes17:38
fungiat least that seems like the most sensible place to do it, to me17:38
clarkbhere https://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox/library/tox_install_sibling_packages.py#L150 and here https://opendev.org/zuul/zuul-jobs/src/branch/master/roles/nox/library/nox_install_sibling_packages.py#L14517:39
clarkbremote:   https://review.opendev.org/c/zuul/zuul-jobs/+/964724 Find tox/nox siblings with normalized package names18:17
clarkbI think something like that may fix it18:17
opendevreviewMerged openstack/pbr master: Pin zuul ansible, pyperclip versions  https://review.opendev.org/c/openstack/pbr/+/96013318:24
clarkbfungi: https://review.opendev.org/c/zuul/zuul-jobs/+/964724 should be reviewable now. rosmaita even confirmed with a depends on on top of my updated unit test case19:00
fungioh excellent!19:07
fungizuul rides again19:07
fungiyep, lgtm, thanks!19:09
rosmaitathank you!19:12
JayFOK, I'm working with clif to figure out a weirdness in CI.19:13
JayFhttps://review.opendev.org/c/openstack/ironic-tempest-plugin/+/955799 depends on https://review.opendev.org/c/openstack/ironic/+/964664 (a change that raises the ram for the ironic-standalone-anaconda job)19:13
JayFthe stable-branch version of those jobs just uses override-checkout: https://opendev.org/openstack/ironic-tempest-plugin/src/branch/master/zuul.d/stable-jobs.yaml#L2719:13
JayFin this setup, is the zuul config for ironic-standalone-anaconda being used as the parent the one from HEAD of master *or* the one from HEAD of stable/whatever19:14
JayFI think this has rubber ducked me into landing on clif's original hypothesis: we have to backport the ram bump19:15
fungihttps://zuul-ci.org/docs/zuul/latest/config/job.html#attr-job.override-checkout "This value is also used to help select which variants of a job to run. If override-checkout is set, then Zuul will use this value instead of the branch of the item being tested when collecting jobs to run."19:17
fungiis that what you're asking?19:17
JayFwell, mainly, I'm wondering if override-checkout also impacts job config as well19:18
JayFe.g. for https://opendev.org/openstack/ironic-tempest-plugin/src/branch/master/zuul.d/stable-jobs.yaml#L27 -- is the override-checkout branch version of ironic-standalone-anaconda being used?19:18
fungiif you set it at the job level, then it selects the job variant configured on that branch if it exists19:20
fungiincluding for the parent job definition19:21
JayFOK, cool, so we have to backport the fix thru ironic19:21
JayFhooray :| 19:21
fungithe build details should show which variants were used in the inheritance list19:22
fungiit will list the project and selected branch for each ancestor19:23
fungiJayF: https://zuul.opendev.org/t/openstack/build/1b0883969fe646499c242ce8a50aa94a/log/zuul-info/inventory.yaml#417-418 "source: openstack/ironic/zuul.d/ironic-jobs.yaml@stable/2025.1#294"19:26
JayFah, nice. I'll keep that in mind. 19:26
clarkbJayF: fungi: not to confuse things any more than necessary but the ironic repo will have master on your depends on content and stable/2025.1 or whatever on the latest version for that branch. What override checkout does is checks out a specific branch it doesn't impact the speculative git state if that makes sense19:33
clarkbthe specualtive state is still there. it isn't checked out19:33
JayFI think the intersection of those two things is what confused me19:34
clarkband then the job config is automatically loaded based on the branch names19:34
clarkbsince you can only have one job config19:34
JayFjust an edge case but fungi's info seems to indicate to me that backporting the fix in ironic repo is the path to make it work19:34
JayFeven if the behavior is difficult to understand19:34
clarkbyes I think the conclusion to backport is the correct appraoch here19:35
clarkbI just want to call that out as it often becomes important if testing upgrades for example19:35
clarkbyou can acutally dependso n a change in master and a change in stable/2025.1 and both sepcualtive git states will be present in the git repo. Then you can install stable/2025.1 specualtively, test things, upgrade to/install master speculatively and test things work post upgrade19:35
clarkbits really powerful19:36
fungiright, if you depends-on to a change that alters job configuration on one branch but then override-checkout in the job to a different branch, you can end up with a variant of the job that doesn't include your change because it's to a different branch than the one being selected19:37
JayFbut it is correct to say even after the ironic change merges (removing the depends-on complication) into master19:37
fungione of the reasons not to take the complexity of branch overrides lightly19:37
JayFthe stable/2025.1 version of the job will use the stable/2025.1 zuul config from ironic/19:37
clarkbJayF: yes19:37
clarkbalso functionality like this is where zuul quickly becomes more powerful than merge trains in gitlab/github aiui19:39
clarkbthose are limited to same branch same project and gitlab has a limit of like 10 total changes19:39
clarkbwhereas zuul lets you compose abritrary branches and projects with as many changse as your hardware can handle before anything merges into the target branches19:40
fungior as many as your brain can handle before the complexity causes it to melt19:41
rosmaitafungi: clarkb: is it the infra-core group that can merge https://review.opendev.org/c/zuul/zuul-jobs/+/964724 ?20:09
fungirosmaita: it's the zuul community's maintainers who take care of that, and clarkb has already mentioned it in their matrix room20:10
rosmaitaoh, ok, thanks20:10
fungiand now it's merged20:32
fungias of about 5 minutes ago20:33
clarkbfungi: not yet, that was a different change of mine that merged20:42
tonybUsing `Depends-On: https://review.opendev.org/c/zuul/zuul-jobs/+/964724` should work right? or is zuul-jobs trusted?21:30
clarkbtonyb: zuul-jobs is not trusted but roles in zuul-jobs may be used in trusted contexts21:38
clarkbtonyb: rosmaita already indicated that this was done via a change in the comments of that change21:38
rosmaitatonyb: clarkb: i was kind of surprised that it worked, but it did21:40
tonybclarkb: Cool.   I was thinking for me rather than rosmaita :) https://review.opendev.org/c/openstack/requirements/+/95758721:42
fungiah, never mind, i misread yeah21:57

Generated by irclog2html.py 4.0.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!