Switch publishing to PIE only (pecl.php.net is deprecated)#5
Merged
Conversation
pecl.php.net no longer accepts new packages, so there is no central PECL channel. Publish via PIE/Packagist only, and document the three source-build install routes (pie / pecl install package.xml from a checkout / plain phpize). - README: install section reworked; note that `pecl install rdump` is not available and `pecl install package.xml` is just a local build helper. - RELEASING.md: PIE/Packagist release steps; drop the PECL onboarding. - .github/workflows/release.yml: on a v* tag, verify version sync, validate package.xml, build + test, build the tarball and attach it to the GitHub Release as a convenience source archive (no pecl.php.net upload). - CHANGELOG.md, .gitattributes. Supersedes #2. https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5
Addresses review of the release tooling: - Require a v* tag ref (GITHUB_REF_TYPE == tag + v* pattern) so a manual workflow_dispatch from a branch fails fast instead of comparing a branch name to the version; the Release upload is gated to push events. - Run the full ci/build-and-test.sh in a container instead of calling run-tests.php directly. run-tests.php is a phpize-generated, gitignored file, and the shared script also exercises the OOM-hook / safe_read / marker / budget smoke gates, so the release meets the same bar as the matrix. - Also check package.xml's <api> against the tag, not just <release>. - Add CHANGELOG.md to package.xml <contents> as a doc so it ships in the tarball. https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5
pecl install package.xml runs the phpize build, but enabling the extension is environment-dependent: on the common scan-dir layouts (Debian/Ubuntu, setup-php) pecl doesn't reliably edit php.ini and you enable it separately. Describe the build-helper role accurately and show how to enable it. https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5
Drop the scan-dir one-liner and verbose framing; state once that all routes build from source and you enable extension=rdump.so as pecl/your distro directs. Keep PIE, the pecl/phpize checkout build, and the note that the central pecl channel is gone. https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5
Distribution is PIE/Packagist, which read composer.json, but the release gate only validated package.xml (the pecl build helper). Add `composer validate --strict --no-check-publish` so a broken manifest fails the release. Add composer to the setup-php tools. (PIE install itself resolves from Packagist by package name, so it can't be exercised pre-publish in the same run; composer validate is the meaningful pre-tag gate for that channel.) https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5
- Default the workflow to contents: read; only the final job that creates the GitHub Release gets contents: write. The package job (checkout, setup-php, Docker build/test, pecl/composer validation) now runs read-only and hands the tarball to the release job via an artifact. - Drop workflow_dispatch: its checks compare against a v* tag, so a Web-UI run against a branch would just fail. Tag-push only; RELEASING.md documents rehearsing the checks locally before tagging. - Note why a single representative PHP (8.3) is fine for release packaging (the tarball is version-agnostic; full version/arch coverage is the other CIs). https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5
- The workflow comment still pointed at `gh workflow run ... --ref` for a dry-run, but workflow_dispatch was removed; reword to match RELEASING.md (rehearse locally). - composer.json passes the publish checks, so run `composer validate --strict` without --no-check-publish to also catch Packagist publish warnings (the real distribution target). Update the RELEASING.md rehearsal command to match. https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
pecl.php.net is deprecated and no longer accepts new packages
(
account-request.phpnow states: "No accounts will be accepted for new PECLpackages … If you are developing a new extension, you cannot add it to PECL"),
so the dual-channel plan in #2 isn't possible. This supersedes #2: publish via
PIE / Packagist only, with source-build installs for everyone else.
README
Install section trimmed to the essentials: all routes build from source (no
prebuilt binaries; needs a compiler +
php-dev), then enableextension=rdump.soas pecl/your distro directs.pie install reliforp/ext-rdump(PIE needs PHP 8.1+ to run; the extensionitself builds on 7.0+),
pecl install package.xml(for the older PHP PIE can't runon) or plain
phpize && ./configure && make,pecl install rdumpfrom the central channel isn't available.(
package.xmlis kept: it still drives the localpecl install package.xmlbuild and
pecl package, neither of which depends on the central channel.)Release tooling
.github/workflows/release.yml— on av*tag:v*tag ref (so a strayworkflow_dispatchfrom a branch failsfast), and gate the Release upload to push events;
php_rdump.h,package.xml<release>and<api>, and the tag;pecl package-validateandcomposer validate --strict— the lattergates the actual distribution manifest that PIE/Packagist read;
ci/build-and-test.sh(phpt suite plus the OOM-hook /safe_read / marker / budget smoke gates), not a bare
run-tests.phpcall(which is a phpize-generated, gitignored file);
source archive (no upload to pecl.php.net).
RELEASING.md— PIE/Packagist release steps (PECL onboarding dropped).CHANGELOG.md— 0.1.0 notes; also added topackage.xml<contents>soit ships in the tarball.
.gitattributes—export-ignoredev-only paths from the dist archive.Not automated (needs maintainer account)
each pushed
vX.Y.Ztag is picked up automatically.pie installresolves from Packagist by package name, so it can't be exercisedpre-publish in the same run;
composer validateis the meaningful pre-tag gatefor that channel.
Closes #2.
https://claude.ai/code/session_017skw8BsHkF8wur7Pf4G9W5