-
-
Notifications
You must be signed in to change notification settings - Fork 69
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
GH Action: Add steps to test against libxml >= 2.12 #798
GH Action: Add steps to test against libxml >= 2.12 #798
Conversation
ee93a6a
to
bcc81fc
Compare
@jrfnl done |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for working on this @asispts ! I really appreciate your help in stabilizing this part of the test suite and safeguarding the functionality in different circumstances.
I do have some questions and remarks, which I've left in line. Questions do not necessarily imply something needs to change. In most cases, I'd just like to understand the reasoning why.
.github/workflows/test.yml
Outdated
@@ -93,6 +96,20 @@ jobs: | |||
- name: Checkout code | |||
uses: actions/checkout@v4 | |||
|
|||
# A temporary solution | |||
- name: Install libxml2 >= 2.12 (PHP 8.1+ on linux only) | |||
if: ${{ matrix.os == 'ubuntu-latest' && contains(fromJSON('["8.1", "8.2", "8.3"]'), matrix.php) }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a number of question about this:
- Does this have to be tested on multiple PHP versions or would testing on a single PHP 8.1+ version be sufficient ? (the compile from scratch slows the build down with ~45-60 second extra build time)
- How was it decided to test against PHP 8.1, 8.2 and 8.3, but not against PHP 8.4 or 8.5 ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As for the usability/comprehension of failures if/when they would occur:
As things are, if a build using libxml
2.12 would fail, it is not transparent for a non-regular contributor that libxml
2.12 is being used and may be the cause of the failure. They would have to study the workflow to figure that out.
Did you consider making the use of libxml
2.12 a matrix flag ? And if you considered this, what was the reason to decide against that ?
Note: if it would be a matrix flag, that would also allow for annotating that libxml
2.12 is being used for a certain job in the job name
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Last question: not sure if that would work, but did you consider/have you tried installing libxml
2.12 via the extensions
key in the setup-php
action runner ?
Ref: https://github.com/shivammathur/setup-php?tab=readme-ov-file#heavy_plus_sign-php-extension-support
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@asispts Thanks for your continued work on this.
While my last question (third comment here) has been answered, the questions posed in my first two comments have not yet been answered and I'd still be interested to understand the reasoning for the current choices.
Compiling libxml2 on each build sounds expensive. Would it be faster to use Homebrew for the installation? Also, do we need to test with every PHP version? Wouldn't it be enough if we installed the custom libxml2 only on let's say PHP 8.4 and use Ubuntu's bundled libxml2 for the other builds? |
7249a25
to
ad85bfa
Compare
Observation: by the looks of it, installing Homebrew and then installing Some Homebrew based builds:
versus some install from scratch based builds:
|
According to https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md, Homebrew should already be present on the Ubuntu images from GitHub Actions. So we should not need to install Homebrew itself. |
Can we output the libxml version that PHP uses? I doubt that simply installing libxml will make PHP magically pick it up. php -r 'echo LIBXML_DOTTED_VERSION . PHP_EOL;' Worst case, we need to compile PHP against that libxml version ourselves. 😓 |
@derrabus Interestingly enough, it appears it does (magically pick it up). This can be seen via the test failure of the builds for the original push: https://github.com/PHPCSStandards/PHP_CodeSniffer/actions/runs/12965930622/job/36168409300 I agree though that it wouldn't be a bad thing to have a debug step which outputs the version found. |
Okay, for lack of answers to some of my questions about this PR and because I want to be sure that after all the updates to the PR, this still safeguards things properly, I've done some stress-testing. These are the steps I took and my findings:
I also tried to add a "DEBUG" step to get insight into the While it is an extra step, installing As the above means, we can't use homebrew to always get the latest My current thinking on this, is to explore using the GH API to retrieve the latest tag for the https://github.com/GNOME/libxml2 repo and see if we can get that working. In the mean time, I think moving the hard-coded version from the update step to the matrix and having one PHP 8.* build run against Having said that, the default version of Having the version in the matrix (or an update flag if we'd get the version via the GH API) will also allow for adding a note in the build name to draw attention to the different |
@asispts Just checking - it looks like I can't push to your branch ? If you want to see the things I tested and the commits for some of the changes I envision for this PR, you can have a look here to see the code changes I made for the above tests: https://github.com/jrfnl/PHP_CodeSniffer/commits/asispts/bugfix/issue-767-action/ |
I've done some testing just now. From what I can tell, |
Thanks @fredden, I can confirm that @asispts Just checking - do you still want to continue with this PR ? I'd like to get it merged in the same release as #797 as this would allow to safeguard cross-version support for various If you don't have the time or intention to finish this, please just let me know and I'll get it sorted out before the release myself. |
For lack of response/progress on this PR, I've now opened PR #849 which brings the work done in this PR into a mergeable state. Feedback welcome. |
Description
Follow up of #797.
I've update GH action to run tests against
libxml >= 2.12
. Also, I addedfail-fast: false
to ensure that other matrix jobs continue running until completion.Note
Since
libxml >= 2.12
is not available inubuntu-latest
, the library is compiled from source.Suggested changelog entry
Related issues/external references
Types of changes
PR checklist