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

Details on new maintainership #603

Merged
merged 18 commits into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,28 @@ jobs:
- name: Test
run: cd build && ctest -j3 --output-on-failure

dodo:
# Tests with: Autconf on oldest supported Ubuntu (in non-extended support)
name: GCC -Os, old Autotools
runs-on: ubuntu-20.04
Comment on lines +108 to +109
Copy link
Member Author

Choose a reason for hiding this comment

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

Annoyingly... the changes between Automake 1.15 and 1.16 turn out to be somewhat annoying, and it took several attempts to make my changes to Makefile.am. We didn't have an autoconf build on old Ubuntu, which would have helped me to catch the problems.

steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: true

- name: Prepare
run: ./autogen.sh

- name: Configure
run: ./configure CFLAGS='-Os -Wall -Wextra -Werror -Wno-error=unused-but-set-parameter' --enable-jit --enable-pcre2-16 --enable-pcre2-32 --enable-debug

- name: Build
run: make -j3

- name: Test
run: make check

wasp:
# Tests with: French locale; oldest supported CMake; no JIT; -Os; libreadline
name: GCC -Os, CMake+ninja, no JIT
Expand Down Expand Up @@ -232,6 +254,9 @@ jobs:
maint/RunPerlTest

chaffinch:
# Job to verify that the CMake "unity" build (single-file / jumbo build) passes.
# If this fails, it's usually because two different files define some file-static
# functions or macros which collide.
name: CMake unity build
runs-on: ubuntu-latest
steps:
Expand All @@ -248,3 +273,39 @@ jobs:

- name: Test
run: cd build && ctest -j3 --output-on-failure

heron:
# Job to verify that the tasks performed by PrepareRelease have been done. It is
# the committer's responsibility (currently) to run PrepareRelease themselves when
# making a PR, so that everything is kept in-sync.
name: Check autogenerated file freshness
runs-on: ubuntu-24.04 # TODO: Update to ubuntu-latest when that switches to 24.04
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: false
fetch-depth: 0
fetch-tags: false

- name: PrepareRelease
run: maint/PrepareRelease

- name: 'Rebuild *.h.generic'
run: |
./autogen.sh && ./configure
rm -f src/*.generic
make src/config.h.generic src/pcre2.h.generic

- name: Working directory clean
run: |
if [ -n "`git status --porcelain`" ] ; then
(
echo "Dirty working tree! Affected files:"
git status --porcelain || true
echo ""
echo "Diff:"
git diff || true
Comment on lines +304 to +308
Copy link
Member Author

Choose a reason for hiding this comment

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

You'll now get build failures if you update documentation files, but forget to sync the HTML or TXT.

Copy link
Contributor

Choose a reason for hiding this comment

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

unless we improve the tooling, this sounds a little restrictive.

Truth is that with Philip being the only native English speaker, his "final" touches over the generated documentation were an invaluable part of making sure it is as high quality as it is (including of course, updating the date with the necessary "fixes")

Copy link
Member Author

Choose a reason for hiding this comment

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

Updating the docs can still be done by me (or other native English speaker). But there seems to be no good use-case for having the different copies of the documentation be out-of-sync with each other. If that ever happens, it's simply because a contributor forgot to sync the HTML or TXT files after updating the man pages.

If you'd prefer, we make it so that the CI job applies the changes and pushes a bot-authored commit to the PR. That seemed like a bit too much infrastructure though, for a simple sanity-check.

Copy link
Contributor

Choose a reason for hiding this comment

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

The way I saw it was that the "source" files for the documentation were being updated by the developer, and the merge that Philip did which usually included the "documentation fixes" and "generated files" was akin to a compilation and "release" of the documentation.

specially since there is a copy of it that is autogenerated and publicly available in the web site as part of the github.io content.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Oops. I had completely forgotten to mention github.io to Nick. Apologies.

Copy link
Member Author

Choose a reason for hiding this comment

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

I'm aware of it. It hosts index.md (which is a duplicate of README.md), and the HTML files in docs/.

We could do what some projects do, and have different versions of the docs available (for each library version) so the user has a choice of whether to read the "master" or "10.44" docs.

In a future PR, when I spruce up that website a bit, I'll probably just make it so it shows the docs for the last-released version of PCRE2.

) >&2
exit 1
fi
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ __pycache__
.deps
.libs

INSTALL
Makefile
Makefile.in
RunGrepTest.log
Expand Down Expand Up @@ -91,6 +90,7 @@ m4/lt~obsolete.m4
src/.deps
src/.dirstamp
src/config.h
src/config.h.in
src/pcre2.h
src/pcre2_chartables.c
src/stamp-h1
Expand Down
36 changes: 0 additions & 36 deletions AUTHORS

This file was deleted.

200 changes: 200 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
PCRE2 Authorship and Contributors
=================================

COPYRIGHT
---------

Please see the file [LICENCE](./LICENCE.md) in the PCRE2 distribution for
copyright details.


MAINTAINERS
-----------

The PCRE and PCRE2 libraries were authored and maintained by Philip Hazel.

Since 2024, the contributors with administrator access to the project are now
Nicholas Wilson and Zoltán Herczeg. See the file [SECURITY](./SECURITY.md) for
GPG keys.

Both administrators are volunteers acting in a personal capacity.

<table>
<thead>
<tr>
<th>Name</th>
<th>Role</th>
<tr>
</thead>
<tbody>
<tr>
<td>

Nicholas Wilson<br/>
`nicholas@nicholaswilson.me.uk`<br/>
Currently of Microsoft Research Cambridge, UK

</td>
<td>

* General project administration & maintenance
* Release management
* Code maintenance

</td>
</tr>
<tr>
<td>

Zoltán Herczeg<br/>
`hzmester@freemail.hu`<br/>
Currently of the University of Szeged, Hungary

</td>
<td>

* Code maintenance
* Ownership of `sljit` and PCRE2's JIT

</td>
</tr>
</tbody>
</table>


CONTRIBUTORS
------------

Many others have participated and contributed to PCRE2 over its history.

The maintainers are grateful for all contributions and participation over the
years. We apologise for any names we have forgotten.

We are especially grateful to Philip Hazel, creator of PCRE and PCRE2, and
maintainer from 1997 to 2024.

All names listed alphabetically.

### Contributors to PCRE2

This list is includes names up until the PCRE2 10.44 release. New names will be
Copy link
Contributor

@carenas carenas Dec 11, 2024

Choose a reason for hiding this comment

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

I think "is" is not grammatically correct here

Copy link
Member Author

Choose a reason for hiding this comment

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

!! Well spotted, thanks.

added from the Git history on each release.

Scott Bell
Carlo Marcelo Arenas Belón
Edward Betts
Jan-Willem Blokland
Ross Burton
Dmitry Cherniachenko
Alexey Chupahin
Jessica Clarke
Alejandro Colomar
Jeremie Courreges-Anglas
Addison Crump
Alex Dowad
Daniel Engberg
Daniel Richard G
David Gaussmann
Andrey Gorbachev
Jordan Griege
Jason Hood
Bumsu Hyeon
Roy Ivy
Martin Joerg
Guillem Jover
Ralf Junker
Ayesh Karunaratne
Michael Kaufmann
Yunho Kim
Joshua Kinard
David Korczynski
Uwe Korn
Jonas Kvinge
Kristian Larsson
Kai Lu
Behzod Mansurov
B. Scott Michel
Nathan Moinvaziri
Mike Munday
Marc Mutz
Fabio Pagani
Christian Persch
Tristan Ross
William A Rowe Jr
David Seifert
Yaakov Selkowitz
Rich Siegel
Karl Skomski
Maciej Sroczyński
Wolfgang Stöggl
Thomas Tempelmann
Greg Thain
Lucas Trzesniewski
Theodore Tsirpanis
Matthew Vernon
Rémi Verschelde
Thomas Voss
Ezekiel Warren
Carl Weaver
Chris Wilson
Amin Yahyaabadi
Joe Zhang

### Contributors to PCRE1

These people contributed either by sending patches or reporting serious issues.

Irfan Adilovic
Alexander Barkov
Daniel Bergström
David Burgess
Ross Burton
David Byron
Fred Cox
Christian Ehrlicher
Tom Fortmann
Lionel Fourquaux
Mike Frysinger
Daniel Richard G
Dair Gran
"Graycode" (Red Hat Product Security)
Viktor Griph
Wen Guanxing
Robin Houston
Martin Jerabek
Peter Kankowski
Stephen Kelly
Yunho Kim
Joshua Kinard
Carsten Klein
Evgeny Kotkov
Ronald Landheer-Cieslak
Alan Lehotsky
Dmitry V. Levin
Nuno Lopes
Kai Lu
Giuseppe Maxia
Dan Mooney
Marc Mutz
Markus Oberhumer
Sheri Pierce
Petr Pisar
Ari Pollak
Bob Rossi
Ruiger Rill
Michael Shigorin
Rich Siegel
Craig Silverstein (C++ wrapper)
Karl Skomski
Paul Sokolovsky
Stan Switzer
Ian Taylor
Mark Tetrode
Jeff Trawick
Steven Van Ingelgem
Lawrence Velazquez
Jiong Wang
Stefan Weber
Chris Wilson

Thanks go to Jeffrey Friedl for testing and debugging assistance.
2 changes: 1 addition & 1 deletion BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ copy_file(
out = "src/pcre2_chartables.c",
)

# Removed src/pcre2_ucptables.c below because it is #included in
# Removed src/pcre2_ucptables.c below because it is #included in
Copy link
Member Author

Choose a reason for hiding this comment

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

Ensured that Detrail is run on all files that are part of the output tarball (...except the files where we deliberately don't want to run it, eg CRLF files, and any/all tool outputs from autoconf).

Copy link
Contributor

Choose a reason for hiding this comment

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

Ideally I would like to see that ALL our files get detrail, which necessary implies we need to teach it to work also in Windows style line endings.

I can see there might be a few exceptions (ex: test files that require explicit trailing blank characters), but even those could be exempted at the line number level IMHO.

Copy link
Member Author

Choose a reason for hiding this comment

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

We just have two nasty old .bat files in the repo with CRLF. They're OK for now (I have a task to convert them to .ps1 files someday - which is vastly better than bat). The test files are treated as "binary" and so I haven't proactively detrailed them. But, all the other files in the repo have now been added to Detrail.

# src/pcre2_tables.c. Also fixed typo: ckdint should be chkdint.
# PH, 22-March-2023.
cc_library(
Expand Down
16 changes: 14 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1259,13 +1259,25 @@ set(PCRE2_CONFIG_VERSION_OUT ${CMAKE_CURRENT_BINARY_DIR}/cmake/pcre2-config-vers
configure_file(${PCRE2_CONFIG_VERSION_IN} ${PCRE2_CONFIG_VERSION_OUT} @ONLY)
install(FILES ${PCRE2_CONFIG_OUT} ${PCRE2_CONFIG_VERSION_OUT} DESTINATION cmake)

file(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html)
file(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html ${PROJECT_SOURCE_DIR}/doc/html/*.txt)
file(
GLOB txts
${PROJECT_SOURCE_DIR}/doc/*.txt
AUTHORS.md
COPYING
ChangeLog
LICENCE.md
NEWS
README
SECURITY.md
)
Comment on lines +1262 to +1273
Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed discrepancy between cmake --install and ./configure && make install. They should install the same files ... and they do now.

file(GLOB man1 ${PROJECT_SOURCE_DIR}/doc/*.1)
file(GLOB man3 ${PROJECT_SOURCE_DIR}/doc/*.3)

install(FILES ${man1} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
install(FILES ${man3} DESTINATION ${CMAKE_INSTALL_MANDIR}/man3)
install(FILES ${html} DESTINATION share/doc/pcre2/html)
install(FILES ${txts} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/pcre2)
install(FILES ${html} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/pcre2/html)

if(MSVC AND INSTALL_MSVC_PDB)
install(FILES ${DLL_PDB_FILES} DESTINATION bin CONFIGURATIONS RelWithDebInfo)
Expand Down
8 changes: 6 additions & 2 deletions ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,14 @@ repeats inside a repeated bracket might be incorrectly checked.
utf is disabled, and dupnames is enabled, caseless matching was used even
if caseful matching was needed.

26. Fixed a bug in pcre2grep reported by Alejandro Colomar <alx@kernel.org>
(GitHub issue #577). In certain cases, when lines of above and below context
26. Fixed a bug in pcre2grep reported by Alejandro Colomar <alx@kernel.org>
(GitHub issue #577). In certain cases, when lines of above and below context
were contiguous, a separator line was incorrectly being inserted.

27. Split out the sljit sub-project into a "git submodule". Git users must
now run `git submodule init; git submodule update` after a Git checkout, or
the build will fail due to missing files in deps/sljit.


Version 10.44 07-June-2024
--------------------------
Expand Down
Loading
Loading