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 8 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
39 changes: 39 additions & 0 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,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 +251,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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,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.

76 changes: 76 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
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.

An incomplete list of recent contributors (alphabetical):

Addison Crump
Alex Dowad
Carlo Marcelo Arenas Belón

You may browse Git's history for further details of many past contributors.

The maintainers are grateful for all contributions and participation over the years, whether or not listed here in this recent summary.
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
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
75 changes: 42 additions & 33 deletions LICENCE → LICENCE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
PCRE2 LICENCE
-------------
PCRE2 License
=============

| SPDX-License-Identifier: | BSD-3-Clause WITH PCRE2-exception |
|---------|-------|

PCRE2 is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.
Expand All @@ -16,40 +19,46 @@ optimize pattern matching. This is an optional feature that can be omitted when
the library is built.


THE BASIC LIBRARY FUNCTIONS
---------------------------
COPYRIGHT
---------

### The basic library functions

Written by: Philip Hazel
Email local part: Philip.Hazel
Email domain: gmail.com
Written by: Philip Hazel
Email local part: Philip.Hazel
Email domain: gmail.com

Retired from University of Cambridge Computing Service,
Cambridge, England.
Retired from University of Cambridge Computing Service,
Cambridge, England.

Copyright (c) 1997-2024 University of Cambridge
All rights reserved.
Copyright (c) 1997-???? University of Cambridge
Copyright (c) ????-2024 Philip Hazel
All rights reserved.
NWilson marked this conversation as resolved.
Show resolved Hide resolved

### PCRE2 Just-In-Time compilation support

PCRE2 JUST-IN-TIME COMPILATION SUPPORT
--------------------------------------
Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu

Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu
Copyright (c) 2010-2024 Zoltan Herczeg
All rights reserved.

Copyright(c) 2010-2024 Zoltan Herczeg
All rights reserved.
### Stack-less Just-In-Time compiler

Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu

STACK-LESS JUST-IN-TIME COMPILER
--------------------------------
Copyright (c) 2009-2024 Zoltan Herczeg
All rights reserved.

Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu
### All other contributions

Copyright(c) 2009-2024 Zoltan Herczeg
All rights reserved.
Many other contributors have participated in the authorship of PCRE2. As PCRE2
has never required a Contributor Licensing Agreement, or other copyright
assignment agreement, all contributions have copyright retained by each
original contributor or their employer.


THE "BSD" LICENCE
Expand All @@ -58,16 +67,16 @@ THE "BSD" LICENCE
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notices,
this list of conditions and the following disclaimer.
* Redistributions of source code must retain the above copyright notices,
this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
notices, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Redistributions in binary form must reproduce the above copyright
notices, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

* Neither the name of the University of Cambridge nor the names of any
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
* Neither the name of the University of Cambridge nor the names of any
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Expand Down
30 changes: 17 additions & 13 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ AM_CPPFLAGS="-I$(srcdir)/src"
## Specify the documentation files that are distributed.

dist_doc_DATA = \
AUTHORS \
AUTHORS.md \
COPYING \
ChangeLog \
LICENCE \
LICENCE.md \
NEWS \
README \
SECURITY.md \
doc/pcre2.txt \
doc/pcre2-config.txt \
doc/pcre2grep.txt \
Expand Down Expand Up @@ -86,6 +87,7 @@ dist_html_DATA = \
doc/html/pcre2_set_max_pattern_length.html \
doc/html/pcre2_set_max_varlookbehind.html \
doc/html/pcre2_set_offset_limit.html \
doc/html/pcre2_set_optimize.html \
doc/html/pcre2_set_newline.html \
doc/html/pcre2_set_parens_nest_limit.html \
doc/html/pcre2_set_recursion_limit.html \
Expand Down Expand Up @@ -186,6 +188,7 @@ dist_man_MANS = \
doc/pcre2_set_max_pattern_length.3 \
doc/pcre2_set_max_varlookbehind.3 \
doc/pcre2_set_offset_limit.3 \
doc/pcre2_set_optimize.3 \
doc/pcre2_set_newline.3 \
doc/pcre2_set_parens_nest_limit.3 \
doc/pcre2_set_recursion_limit.3 \
Expand Down Expand Up @@ -274,6 +277,14 @@ EXTRA_DIST += \
NON-AUTOTOOLS-BUILD \
HACKING

# These are support files for building with Bazel or Zig

EXTRA_DIST += \
BUILD.bazel \
MODULE.bazel \
WORKSPACE.bazel \
build.zig
Comment on lines +282 to +286
Copy link
Member Author

@NWilson NWilson Dec 9, 2024

Choose a reason for hiding this comment

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

Within reason, I feel that users grabbing the tarball should be getting the same experience as users who check out from git (except that the tarball users don't need to run autogen.sh). So I've added some missing files to the tarball.

Copy link
Contributor

@carenas carenas Dec 10, 2024

Choose a reason for hiding this comment

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

Carefully here, since these specific files are usually updated in non backward compatible ways, and are (I presume) used by some external build process that most likely only uses the git files.


# These are support files for building under VMS

EXTRA_DIST += \
Expand All @@ -282,16 +293,6 @@ EXTRA_DIST += \
vms/pcre2.h_patch \
vms/stdint.h

# These files are used in the preparation of a release

EXTRA_DIST += \
PrepareRelease \
CheckMan \
CleanTxt \
Detrail \
132html \
doc/index.html.src
Comment on lines -288 to -293
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 don't feel we need to be bundling into the tarball all our maintainer scripts.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Indeed not, nowadays. I think they were originally added way back, certainly before GitHub, probably even before Svn, when tarball was the only way to download anything. Ah yes, its documented as happening in 2007.


# These files are usable versions of pcre2.h and config.h that are distributed
# for the benefit of people who are building PCRE2 manually, without the
# Autotools support.
Expand Down Expand Up @@ -716,9 +717,12 @@ EXTRA_DIST += \
testdata/grepinput \
testdata/grepinput3 \
testdata/grepinput8 \
testdata/grepinputBad8 \
testdata/grepinputBad8_Trail \
testdata/grepinputC.bz2 \
testdata/grepinputC.gz \
testdata/grepinputM \
testdata/grepinputUN \
testdata/grepinputv \
testdata/grepinputx \
testdata/greplist \
Expand Down Expand Up @@ -827,7 +831,7 @@ CLEANFILES += \
test3outputB \
testtry \
teststdout \
teststderr \
teststderr \
teststderrgrep \
testtemp1grep \
testtemp2grep \
Expand Down
Loading
Loading