| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Test that we can pass test with -DNO_TAINT_SUPPORT but without
-DSILENT_NO_TAINT_SUPPORT. Both disable taint mode, but the latter
causes -t and -T to be silently ignored, whereas the former by itself
causes use of -t and -T to throw fatal exceptions during process
startup.
|
|
|
|
|
|
|
|
| |
Add an entry for -DSILENT_NO_TAINT_SUPPORT to our linux based test
matrix. Currently we cannot do the same for plain -DNO_TAINT_SUPPORT
as it chokes on -t and -T on the command line.
[Committers note: edited commit message to add detail]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have been using secrets to store boolean variables. This results
in our CI output being annoyingly corrupted by the security eliding.
Github now supports "variables" as well as secrets, which are not
elided in CI output. So switch our test framework controls to use
the variable. Note the EXTENDED_TESTING variable was switched from
to DO_EXTENDED_TESTING so that we can have both the EXTENDED_TESTING
/secret/ and the new DO_EXTENDED_TESTING variable available at the
same time as this commit is processed.
Fixes #20843
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For linux-i386 we are/were using checkout@v1 because checkout@v2/checkout@v3
do not work inside a i386-container.
checkout@v1 however has some issues[^1] with shallow clones (`fetch-depth: 1`):
- it cause race conditions[^2]
- it makes it impossible to re-run an older job
Options we have Today:
- clone with full history: this is slow *and* influences some of the (porting)
tests.
- ditch checkout@v1 and manually clone it: we already do this for cygwin
and it's faster: 58s (for checkout@v1) vs 7s when doing it ourselves[^3].
-> Ditch checkout@v1.
[^1]: Upstream report: https://github.com/actions/runner/issues/2357
[^2]: `git clone` fails when new commits are pushed between the start of
the CI run and the start of the linux-i386 job. With our CI config
that is a time-frame of about 10 minutes (since that is how long
the 'Sanity check' takes).
[^3]: checkout@v1 always fetches *all* tags and *all* branches.
|
| |
|
|
|
|
| |
Split merged and closed PR notifications
|
|
|
|
|
|
|
|
|
|
| |
Split notifications between the two channels
Advertise opened and closed Pull Requests to #p5p
and use #p5p-commits for any extra notifications
so we reduce noise to #p5p to its minimum.
Remove body from opened PR and only use title.
|
|
|
|
| |
Update notify-irc action to v2
|
| |
|
|
|
|
|
|
|
|
| |
The ::set-output command has been deprecated and replaced with the
$GITHUB_OUTPUT environment file. Convert the workflows to use the newer
output mechanism.
Reference: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
|
|
|
|
|
|
|
|
|
|
|
|
| |
This tests two things for us:
- it tests on a "strange" platform, where things aren't exactly
POSIX, but similar enough for some purposes.
This allows testing for https://github.com/Perl/perl5/issues/20362
- the MacOS system perl is threaded, which is a flaw with the
existing dist-modules tests. This found a few problems which
are fixed in the following commits.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The test/checkout does work with `actions/checkout@v2` so use it instead
of 'checkout@v1'. (v2 is faster because it does a shallow clone and doesn't
fetch the tags.)
(My *assumption* on why `checkout@v1` was used: `checkout@v2` does not work
when a 32-bit container is used on a 64-bit host. In these tests it uses
a 64-bit container and that does work.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The IRC github workflow fails unexpectedly from time
to time. We should enforce a size limit to the message
we send (Some recent commit messages can be pretty
long).
Shorten Pull Requests title and body for IRC bot.
The default timeout is 6 hours which is much longer
than needed to parse the git commits and submit
a few IRC notifications if needed.
Adding a timeout to the job should avoid long stall runs.
We do not want the irc workflow to spoil resources and
prefer using it for running unit tests.
Use consistent heredoc token 'EOS' to setup variables.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the Perl/perl5 repository nothing changes.
For a fork of perl5 the user now has some more control to select which
jobs to run. This is done by setting the appropriate secrets.
Before this commit one could choose to:
- run no tests (= GitHub Actions disabled)
- run 'Sanity Check' (= GitHub Actions enabled)
- run all jobs (= GitHub Actions enabled + EXTENDED_TESTING secret added)
With this commit specific jobs can be enabled by adding a secret
with a true value.
For example: setting `CI_FORCE_CYGWIN=1` in the Secrets will cause it to
run the 'Sanity Check' job and the Cygwin' job. All other jobs are skipped.
(See the docs in the file to see the full list of Secrets)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Extend the 'EXTENDED_TESTING' check to differentiate between a true
and a false value.
With the original check: setting 'EXTENDED_TESTING' to 0 would cause
all jobs to be run which is not very logical. The only way to disable
it is/was to completely remove the 'EXTENDED_TESTING' secret.
With this commit it can be disabled by setting 'EXTENDED_TESTING' to '0'
(or '00000000' or ' ' or ' 0 0 0000 00 ' or ...)
|
|
|
|
|
| |
This is in preparation of the next commit which will alter
the `[[ -n "${EXTENDED_TESTING}" ]]` condition.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The use of `always()` made it impossible to cancel the workflow.
From https://docs.github.com/en/actions/managing-workflow-runs/canceling-a-workflow :
To cancel the workflow run, the server re-evaluates if conditions for all
currently running jobs. If the condition evaluates to true, the job will
not get canceled. For example, the condition if: always() would evaluate
to true and the job continues to run.
-> Replace `always()` with `! cancelled()`
|
|
|
|
|
| |
This to make it similar to all other jobs: when (only) the porting
test fails then all other jobs should still run.
|
|
|
| |
Signed-off-by: Alex <aleksandrosansan@gmail.com>
|
|
|
| |
Signed-off-by: Alex <aleksandrosansan@gmail.com>
|
|
|
| |
Signed-off-by: Alex <aleksandrosansan@gmail.com>
|
|
|
|
|
|
|
|
|
|
| |
As far as I can find: macos-11 is called Big Sur and uses xcode 13.2.1.
See also: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md
(Reason for the change: macos-10 is deprecated in GitHub CI and is
planned to be removed on 1 December 2022.)
Fixes #20167
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm not sure tho that what was ever added..
The build and test appear to work fine when it's not set.
README.macosx does mention it but there it does get used.
From README.macosx#sdk-support :
First, export the path to the SDK into the build environment:
export SDK=....
...
You can use the SDK by exporting some additions to Perl's 'ccflags'
and '..flags' config variables:
./Configure -Accflags="-nostdinc -B$SDK/usr/include/gcc \
-B$SDK/usr/lib/gcc -isystem$SDK/usr/include \
-F$SDK/System/Library/Frameworks" \
-Aldflags="-Wl,-syslibroot,$SDK" \
-de
But nothing in the ci worflow appears to do that..
So as far as I can tell `$SDK` is never used.
|
|
|
|
|
|
|
|
| |
The primary reason for doing is to make it similar to all the
other CI configs.
The second reason for doing this is because it makes the checkout
faster. (old: 1m14s, new: 9s)
|
|
|
|
|
|
|
| |
It was running the tests using t/TEST; change it to use t/harness
and use two jobs for doing so.
This decreases the total run-time from about 1h to 38m.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before it was using powershell (or cmd) to run a 'sh -c' command.
Change it to use `shell: sh` so it becomes a bit more readable.
For using `shell: sh` two problems had to be fixed:
- the GitHub runner creates a file with the 'run'-contents but it uses
a CRLF line ending which doesn't work with `sh`. The work-around for
that is to include `igncr` in SHELLOPTS (the 'igncr' option is
a cygwin patch to bash)
- SHELLOPTS contain 'errexit' which breaks ./Configure since it
stopped on the first non-zero exit status (which happened to be
a `grep`)
|
|
|
|
|
|
|
| |
The other CI configurations use `checkout@v2' which defaults to making
a shallow clone (i.e. with fetch-depth set to 1).
Do the same for linux-i386.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For linux-i386 `checkout@v1` is used which automatically fetches all tags.
It uses the command (slightly altered for readability):
git -c http.extraheader="AUTHORIZATION: basic ***" fetch \
--tags \
--prune \
--progress \
--no-recurse-submodules \
origin +refs/heads/*:refs/remotes/origin/*
So fetching the tags again is not needed.
Note: this also makes it possible to get rid of the `git remote set-url`
command. (This was added to add 'Authorization' header which is
needed when using a private repo when using `git fetch`. Since the
`git fetch` is gone the changing of the remote is no longer needed)
|
|
|
|
|
| |
TLDR: it uses a 64-bit binary inside a 32-bit container.
(For details see the code)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The only test that need the git tags (afaik) is porting/cmp_version.t;
But the fetching of tags isn't really working for that test.
Basically the repo is cloned with:
$ git clone --depth 1 https://github.com/perl/perl5
$ git fetch --depth=1 origin +refs/tags/*:refs/tags/*
And then later the test uses:
$ git describe --abbrev=0 HEAD
and it expects to find a tag.
However doing that:
$ git describe --abbrev=0 HEAD
fatal: No tags can describe '6a011f13d7690dbe2e03ad7500756c983bcb1834'.
So it's not really working..
This can also be seen in the CI logs[^1], the output contains:
porting/cmp_version.t ..... skipped: Git found, but no Git tags found
There are only 3 CI configs that do run the porting/cmp_version.t test:
- 'Sanity: Linux -Dusethreads' - this is intended
- 'linux i386/ubuntu (-Dusedevel)'[^2]
- 'cygwin'[^3]
[^1]: CI logs of: 'linux (-Uusethreads)', 'linux (-Duseshrplib ...)',
'linux (-Duserelocatableinc)', 'linux (-Dcc='clang')', 'linux (-Dcc='g++')',
'install', 'macOS (catalina) xcode 12 (-Uusethreads)',
'macOS (catalina) xcode 12 (-Duseithreads -Duseshrplib)', 'Windows msvc142',
'Windows mingw64', 'ASAN (-Accflags=-DPURIFY)', 'ASAN (-DDEBUGGING)',
'ASAN (-Dusethreads)', 'PERL_UNICODE (-Uusethreads)',
'PERL_UNICODE (-Dusethreads ...')
[^2]: it uses 'actions/checkout@v1' to do the checkout which does a full clone
[^3]: it manually runs `git clone`, doing a full clone (with all history)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a special case for the porting test in the sanity check of the
CI run.
Before:
When a porting test failed (such as t/porting/authors.t,
t/porting/cmp_version.t, ...) then it would skip all the other
test configurations.
Now:
When a porting test fails:
- result of sanity check is failure (i.e. it's red)
- other test configurations are run and these will also run the
porting tests. (These may or may not fail, depending on the test)
When a non-porting test fails:
- result of sanity check is failure (i.e. it's red)
- sanity check still runs the porting tests
- other test configurations are skipped
Note: in the `if`conditions of the other test configurations it was
needed to include `always()` because otherwise GitHub uses an
implicit `success() &&` (which check the result of the
sanity check - which is unwanted if only the porting tests failed)
Fixes #19867
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This currently has one major limitation: the perl-testers images
aren't threaded and don't have threaded alternatives, so the threads,
threads-shared and Thread-Queue dists are effectively untested on the
older perls.
The perl-testers images have a large number of test modules and their
dependencies installed, which means we're testing against the latest
versions of those dependencies (such as parent.pm) rather than against
the version of that dependency that shipped with that perl.
I tried to use the official perl images, but these only include a
small number of recent perls. The git repository includes DockerFiles
for the older versions, but these aren't published to Docker Hub.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the 'sanity check' CI the option `fetch-depth: 0` is used.
This causes it to fetch all branches *and* all tags with all history.
By doing `git fetch --depth=1 origin +refs/tags/*:refs/tags/*` it is
fetching all the tags again and in this case *discarding* all the history
of the tags and turning this into a shallow clone instead of a full clone.
-> Remove the fetching of tags from the sanity check CI since they were
already fetched with their full history.
(This is needed because in the next commit a check will be done to see
if the test is running in a shallow clone)
|
|
|
|
|
|
|
|
|
|
|
|
| |
The existing name is confusing to me, especially when the workflow gets
skipped so change the name to something more intuitive.
We also change it to respect .mailmap by using %aN and %aE instead of
%an and %ae.
We also change it to use ".." and "..." in the git log statement, and
use `sort | uniq -c` instead of `sort -u`, it is helpful to see counts.
We also show the resolved begin and end commits.
|
|
|
|
|
|
|
|
| |
Also do a build with 'g++' since it can catch more errors.
(I accidentally broke builds with g++ and that commit got merged
on blead; smokers then reported build failures with g++ but it would
have been nicer if I knew this before it got merged.)
|
|
|
|
| |
This should help find things earlier/easier
|
|
|
|
|
| |
Removed "gcc" and "lib" from the package list since there are no
such packages.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need to configure git to know that our working directory is "safe".
This fixes this bug on github:
Run git remote set-url origin "***[github.com/$GITHUB_REPOSITORY](http://github.com/$GITHUB_REPOSITORY)"
fatal: unsafe repository ('/__w/perl5/perl5' is owned by someone else)
To add an exception for this directory, call:
git config --global --add safe.directory /__w/perl5/perl5
Process completed with exit code 128.
See the git mailing list for more details on this CVE.
|
|
|
|
|
| |
It seems the changes in windows-latest (windows-2022) image broke our
builds.
|
|
|
|
| |
This ensures that DB_File and GDBM_File will be built and tested.
|
|
|
|
|
|
| |
It randomly fails with a fatal error for no apparent reason.
Fixes #19189
|
|
|
|
|
|
|
| |
The default is a shallow checkout.
Keep the full checkout for the "sanity test" job so that it runs all the
tests in t/porting. Add a comment explaining the reasoning.
|
|
|
|
|
|
| |
Do this on the "minitest" job as that has no "manicheck" step yet, and the
"minitest" job does not have a "matrix", so we only run this actual test
once.
|
| |
|
| |
|
|
|
|
|
| |
Make it clear in the earlier comment about -DDEBUGGING that it was
referencing the "linux" job, not the entire file.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On the GH virtual machine, gcc's ASAN appears to be slightly buggy, as the
`-Accflags=-DPURIFY` job is causing cpan/File-Path/t/Path.t to reliably
SEGV after passing all 167 subtests:
Tracer caught signal 11: addr=0x0 pc=0x7ff95dfaa8b0 sp=0x7ff95a2a6ce0
LeakSanitizer has encountered a fatal error.
I can't replicate this on machines I have access to, which makes it rather
hard to debug. Hence side-step the issue by running this test with clang
instead, so that we also test with clang's ASAN implementation.
We still test with gcc's ASAN in one of the PERL_UNICODE jobs.
|