[ci skip] Add labels to PRs with potential ABI breaks

ABI breaks are not supposed to happen after feature freeze, i.e. when
the PHP API numbers have been bumped.  To make it easier to notice
inadvertent ABI breaks, we automatically add an "ABI break" label to
all PRs which modify public (aka. installed) header files.  Some of
these modifications do not constitute an ABI break (e.g. adding a
comment to a header file), but we rely on natural intelligence to sort
that out.  That means these labels should be removed manually, if they
are not appropriate, but if they are, the PR should not be merged into
any stable branch.  For the master branch, where ABI breaks are
permissible, the labels should still be removed if irrelevant, but kept
when the PR is merged.

Since tests are futile[1], we leave that to further (test) PRs.

[1] <https://github.com/php/php-src/pull/15682#issuecomment-2323060586>

Closes GH-15682.
This commit is contained in:
Christoph M. Becker 2024-09-01 13:53:55 +02:00
parent 422aa17b9b
commit 170230f29b
No known key found for this signature in database
GPG Key ID: D66C9593118BCCB6

92
.github/labeler.yml vendored
View File

@ -241,3 +241,95 @@
"SAPI: phpdbg":
- sapi/phpdbg/**/*
"ABI break":
- changed-files:
- any-glob-to-any-file:
- 'TSRM/*.h'
- 'Zend/*.h'
- 'Zend/Optimizer/zend_call_graph.h'
- 'Zend/Optimizer/zend_cfg.h'
- 'Zend/Optimizer/zend_dump.h'
- 'Zend/Optimizer/zend_func_info.h'
- 'Zend/Optimizer/zend_inference.h'
- 'Zend/Optimizer/zend_optimizer.h'
- 'Zend/Optimizer/zend_ssa.h'
- 'ext/curl/php_curl.h'
- 'ext/date/lib/timelib.h'
- 'ext/date/lib/timelib_config.h'
- 'ext/date/php_date.h'
- 'ext/dom/xml_common.h'
- 'ext/filter/php_filter.h'
- 'ext/gd/*.h'
- 'ext/gd/libgd/*.h'
- 'ext/gmp/php_gmp_int.h'
- 'ext/hash/php_hash.h'
- 'ext/hash/php_hash_adler32.h'
- 'ext/hash/php_hash_crc32.h'
- 'ext/hash/php_hash_gost.h'
- 'ext/hash/php_hash_haval.h'
- 'ext/hash/php_hash_md.h'
- 'ext/hash/php_hash_murmur.h'
- 'ext/hash/php_hash_ripemd.h'
- 'ext/hash/php_hash_sha.h'
- 'ext/hash/php_hash_sha3.h'
- 'ext/hash/php_hash_snefru.h'
- 'ext/hash/php_hash_tiger.h'
- 'ext/hash/php_hash_whirlpool.h'
- 'ext/hash/php_hash_xxhash.h'
- 'ext/iconv/*.h'
- 'ext/json/php_json.h'
- 'ext/json/php_json_parser.h'
- 'ext/json/php_json_scanner.h'
- 'ext/libxml/php_libxml.h'
- 'ext/mbstring/libmbfl/config.h'
- 'ext/mbstring/libmbfl/mbfl/eaw_table.h'
- 'ext/mbstring/libmbfl/mbfl/mbfilter.h'
- 'ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h'
- 'ext/mbstring/libmbfl/mbfl/mbfilter_pass.h'
- 'ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_consts.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_convert.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_defs.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_encoding.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_filter_output.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_language.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_memory_device.h'
- 'ext/mbstring/libmbfl/mbfl/mbfl_string.h'
- 'ext/mbstring/mbstring.h'
- 'ext/mbstring/php_mbregex.h'
- 'ext/mbstring/php_onig_compat.h'
- 'ext/mysqli/php_mysqli_structs.h'
- 'ext/mysqlnd/*.h'
- 'ext/pcre/pcre2lib/*.h'
- 'ext/pcre/php_pcre.h'
- 'ext/pdo/php_pdo.h'
- 'ext/pdo/php_pdo_driver.h'
- 'ext/pdo/php_pdo_error.h'
- 'ext/random/php_random.h'
- 'ext/session/mod_files.h'
- 'ext/session/mod_mm.h'
- 'ext/session/mod_user.h'
- 'ext/session/php_session.h'
- 'ext/simplexml/php_simplexml.h'
- 'ext/simplexml/php_simplexml_exports.h'
- 'ext/sockets/php_sockets.h'
- 'ext/sockets/windows_common.h'
- 'ext/sodium/php_libsodium.h'
- 'ext/spl/php_spl.h'
- 'ext/spl/spl_array.h'
- 'ext/spl/spl_directory.h'
- 'ext/spl/spl_dllist.h'
- 'ext/spl/spl_engine.h'
- 'ext/spl/spl_exceptions.h'
- 'ext/spl/spl_fixedarray.h'
- 'ext/spl/spl_functions.h'
- 'ext/spl/spl_heap.h'
- 'ext/spl/spl_iterators.h'
- 'ext/spl/spl_observer.h'
- 'ext/standard/*.h'
- 'ext/xml/*.h'
- 'main/*.h'
- 'main/streams/*.h'
- 'sapi/embed/php_embed.h'
- 'win32/*.h'