-
Notifications
You must be signed in to change notification settings - Fork 59
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
Removed PHAR builds support #770
base: 8.9.x
Are you sure you want to change the base?
Conversation
This also removes all tooling around PHAR builds. While PHARs have some use for some community members, PHARs: * do not come with a runtime/environment * are inherently unsafe, because (even if signed) you are relying on packages downloaded and installed by maintainer who created the `.phar` file * do not match your system requirements, which may be misaligned with bundled libraries, since you are relying on the maintainer's ( @Roave / @Ocramius ) selected set of dependencies There are various ways to install PHP tools that are way better than PHAR, and that are to be endorsed instead. ## `nix` flake See https://nixos.wiki/wiki/flakes Nix flakes are completely immutable, stable, fully reproducible, customizable, and come with a full supply chain traceability of all dependencies. For maximum stability in your builds, use a nix flake. Patches are welcome to turn this package into a nix flake in itself. ## `composer.json`, `composer.lock` and `composer install` If you have an environment, and you want to install this package into it, generate a `composer.json` and `composer.lock` at a specific location: ```sh cd path/to/tools composer require roave/backward-compatibility-check git add composer.json git add composer.lock git commit -m "Managing own locked version of \`roave/backward-compatibility-check\`" ``` You can then `composer install` from that directory at any time, and run `./path/to/tools/vendor/bin/roave-backward-compatibility-check`. `composer install` will verify that your environment is suited for installation. ## use a `Dockerfile` This approach comes with the same downsides of `.phar` files, but: * tooling to scan for vulnerabilities inside docker images exist, and is very much growing * a docker image comes with the runtime to execute `roave/backward-compatibility-check`, and you can even run the full test suite before baking the image and calling it "compatible"
I should add that I'm removing the tooling also because I'm fed up with coming back to it every few months and finding it broken: given multiple better tools exist, |
Composer is literally the only phar I use I think, but I know some people do use phar for tools like this. I'm generally okay with this, but with caveat;
Conversely to this proposal, an idea to keep phar around;
|
I couldn't agree more with this! PHARs are very convenient, but in 2024 if they cannot be reproduced, it's critical. Therefore, my contribution to this: NixOS/nixpkgs#313907 Once this will be merged, anybody running Nix will have access to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with everything said here. The overhead is not worth the benefit at this point.
At first I've been hesitant about PHPStan's deployment style, but now I like and endorse it: provide a PHAR as a composer package. |
This also removes all tooling around PHAR builds.
While PHARs have some use for some community members, PHARs:
.phar
fileThere are various ways to install PHP tools that are way better than PHAR, and that are to be endorsed instead.
nix
flakeSee https://nixos.wiki/wiki/flakes
Nix flakes are completely immutable, stable, fully reproducible, customizable, and come with a full supply chain traceability of all dependencies.
For maximum stability in your builds, use a nix flake. Patches are welcome to turn this package into a nix flake in itself.
composer.json
,composer.lock
andcomposer install
If you have an environment, and you want to install this package into it, generate a
composer.json
andcomposer.lock
at a specific location:You can then
composer install
from that directory at any time, and run./path/to/tools/vendor/bin/roave-backward-compatibility-check
.composer install
will verify that your environment is suited for installation.use a
Dockerfile
This approach comes with the same downsides of
.phar
files, but:roave/backward-compatibility-check
, and you can even run the full test suite before baking the image and calling it "compatible"