-
Notifications
You must be signed in to change notification settings - Fork 7.8k
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
Big endian PowerPC CI #17258
base: master
Are you sure you want to change the base?
Big endian PowerPC CI #17258
Conversation
The 5 slowest test use helpers written in PHP which check all pixels; the 6th slowest calls However, it would make sense to rewrite the GD test helpers (particularly, |
9fb45b2
to
d82d2f2
Compare
Looks like all ran tests pass now after a rebase! The tests are still slow (in particular gd), but the server is a little older and we are running several tests in parallel with sanitizers. |
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.
The code looks good and simple enough. Is mysql already set up on the machine? I'm guessing this runs without docker? I'm not sure if those tests are actually executed.
.github/actions/emerge/action.yml
Outdated
net-nds/openldap \ | ||
dev-db/unixODBC \ | ||
dev-db/postgresql \ | ||
|| true |
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.
Should the || true
be removed? Was it added for testing purposes?
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 would think this is to allow a trailing backslash on the "last" line (like trailing comma for arrays).
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.
The problem is that it also suppresses errors.
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.
&& true
instead?
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.
The user that CI is running as doesn't have permission to install anything, it's purely for documentation until it does (though w/o binpkgs on Gentoo, we probably don't want to anyways).
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'm not a big fan of hundreds of lines of untested code :) In that case, we should probably just remove it. We can keep it in the PR.
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.
Not sure what you mean by keep it in the PR; the PR description?
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 a comment, in case it needs to be added at some point so it's not fully lost.
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've turned these into asserts that the package is installed.
This does not run containerized. I'd like to, just have to figure out how with the runner implementation. There's also no DB server running, so I suspect those tests are skipped. Would it be important to get that working? |
That's up to you. I think the mysql extension does involve some bit shifting stuff for the protocol implementation, so it might make sense to test it with big endian. |
d82d2f2
to
dc08278
Compare
Rebasing and adding MySQL tests, run here. Postgres and Firebird in theory shouldn't also be much more work, although ideally I'd like to run all these DBs (and the job itself) in a container. |
Failed tests after enabling that + rebasing:
Note that this is MariaDB instead of MySQL. I can try with MySQL instead. Some stuff is also because we're not running it as root; I'd really prefer to avoid that until again, some kind of containerization. |
5c4568b
to
5c24b5d
Compare
Having some issues with MySQL (MariaDB works, so whatever, upstream bug filed), so setting up Pg in a similar manner. Firebird looks like a piece of work, so putting that off. I might try to clean up the tests so they work on both MariaDB and MySQL, since MariaDB is pretty common in the ecosystem nowadays. Run here (oops, forgot pg is in skipSlow) |
Running MySQL 8 instead of MariaDB, tests work as expected except for the ones that assume it's running as a superuser so far: https://github.com/NattyNarwhal/php-src/actions/runs/12696420415/job/35390469488 |
5c24b5d
to
5d54d4a
Compare
Did a run with
|
@NattyNarwhal I'll take a look at DOM tomorrow on your big endian machine. |
@NattyNarwhal Please rebase, the DOM issue is fixed on master. |
This is annoying as I don't know which tests of the suite fails, there might some weird conflict with the other DBA tests being run in parallel? |
0346ef5
to
5c27d53
Compare
Thanks for fixing DOM! Run here; MySQL tests skipped because I brought it down to reduce noise and just focus on that failing Pg test., |
My guess is it picks a different DBA backend that it maybe shouldn't: ppc systemchecking for QDBM support... no checking for gdbm_open in -lgdbm... yes checking for GDBM support... yes checking for NDBM support... no checking for TCADB support... no checking for mdb_env_open in -llmdb... yes checking for LMDB support... yes checking for Berkeley DB4 support... no checking for Berkeley DB3 support... no checking for Berkeley DB2 support... no checking for DB1 support... no checking for DBM support... no checking for CDB support... builtin checking for INI File support... builtin checking for FlatFile support... builtin checking whether to enable DBA interface... yes amd64 runnerchecking for dpopen in -lqdbm... yes checking for QDBM support... yes checking for GDBM support... no checking for NDBM support... no checking for tcadbopen in -ltokyocabinet... yes checking for TCADB support... yes checking for mdb_env_open in -llmdb... yes checking for LMDB support... yes checking for Berkeley DB4 support... no checking for Berkeley DB3 support... no checking for Berkeley DB2 support... no checking for DB1 support... no checking for DBM support... no checking for CDB support... builtin checking for INI File support... builtin checking for FlatFile support... builtin checking whether to enable DBA interface... yes checking whether to enable dl-test extension... yes, shared I had copied the configure invocation from the Alpine section from nightly, which doesn't run pg (on account of not running a pg server, on top of skipSlow). |
Yeah. it's QDBM (works) vs. GDBM (doesn't). The DBA test setup has this function to pick the first applicable handler: function get_any_handler(): string {
foreach (dba_handlers() as $handler) {
// Those are weird
if ($handler !== 'cdb' && $handler !== 'cdb_make' && $handler !== 'inifile') {
echo 'Using handler: "', $handler, '"', \PHP_EOL;
return $handler;
}
}
return 'should_not_happen';
}
So it's presumably picking qdbm out this after disqualifying cdb and inifile. No idea why it doesn't pick flatfile even though it's not excluded... After testing outside of CI with that, it passes. |
run here with that fixed and also running MySQL tests |
This assumes gentoo (which has best ppc64be support of mainstream distributions). (Rebased onto the new workflow_call approach)
Not using containers (yet), for now just setting up MariaDB with an unprivileged user and seeing how that goes. Postgres and Firebird also seem doable, although SQL Server for ODBC definitely won't be.
PDO_sqlite, the Pg extensions, SNMP, LDAP, Enchant, Tidy, ODBC, and PDO_DBLIB. Note that DBLIB and ODBC will be hard to test since the tests assume SQL Server. LDAP and SNMP may require config on the PPC CI server, but Pg shhould be configured and ready to go.
The checks for things like ext/ldap will assume libraries are in ./lib, and not lib64 like they are on many multilib systems, Gentoo included. Gross that we're hardcoding it, but we should also probably convert ldap to pkg-config sometime. That may require getting rid of Oracle or Solaris LDAP support though.
Gentoo default USE flags seem to use hunspell for enchant.
GDBM is broken with ext/pgsql/tests/80_bug14383.phpt
15d5b52
to
5c596ad
Compare
run with setting
|
Testing this with gd at least (since that's compute heavy); -O0 didn't much make of a difference vs. -O2, but sanitizers on is where the performance impact is. About what me and everyone else presumably expected, but good to confirm. With mysql, most of the time is spent in waiting in poll, so it makes me think MySQL itself is being slow. Not too important to look at now, but something to check later. |
The build looks indeed pretty slow and I don't think it would be good to add this to the push job in this condition. I assume that because the runner isn't containerized, it also cannot reliably run jobs in parallel. You could try dropping UBSan, which I think causes a bigger slowdown compared to ASan, but also less value. If that doesn't help, it might be better to just add the job to nightly. This should largely be enough, these breaks are rare and I look at nightly regularly. I am somewhat surprised that you saw no significant improvement for |
Yes, I was thinking nightly is fine for now. I think for now it's probably best to get nightly going (especially if you're looking at it, it's not going to get ignored), and
Indeed, because a lot of tests assume
I think it's better to have the sanitizers with their performance impact than not in a nightly build. In a push build, I'd probably pare down the built extensions and maybe the sanitizers.
Sorry, should have been more clear: This was comparing |
I'll clean up the history later, but some notes:
ext/ffi/tests/gh11934.phpt
will be fixed by Fix GH-16013 and bug #80857: Big endian issues #17255. I don't know what's up with the POSIX tests; I believe these used to pass until I updated the system. I'll look into this.