friendsofphp / pickle
Installer for PHP extension, supports pecl package or install from src tree directly
Installs: 3 242
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1 647
Watchers: 56
Forks: 89
Open Issues: 40
Type:application
Requires
- php: >=7.2
- ext-dom: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-simplexml: *
- ext-zlib: *
- composer/composer: <2.0
- justinrainbow/json-schema: ^3.0 || ^4.0 || ^5.0
- mlocati/composer-patcher: ^1.2.2
- padraic/phar-updater: ~1.0@dev
- symfony/console: ^5.0
Requires (Dev)
- atoum/atoum: ~3.4
- atoum/praspel-extension: ~0.17
- atoum/visibility-extension: ~1.3
- behat/behat: ~3.6
- friendsofphp/php-cs-fixer: ^2.18.1
- symfony/process: ^5.0
This package is auto-updated.
Last update: 2024-11-29 23:20:12 UTC
README
Pickle installs PHP extensions easily on all platforms.
Installation
Grab the latest phar at https://github.com/FriendsOfPHP/pickle/releases/latest
wget https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar
and run using
$ php pickle.phar
or add the execute flag
$ chmod +x pickle.phar
then run as:
$ pickle.phar info apcu
You can also rename the phar to "pickle"
$ mv pickle.phar pickle
so it can be called using pickle only.
And finally you can add it to your path or copy it in /usr/local/bin or your favorite binary directory.
On windows, use
$ php pickle.phar
or create a .bat containing:
@echo OFF
setlocal DISABLEDELAYEDEXPANSION
c:\path\to\php.exe "c:\path\to\pickle.phar" %*
If someone would be kind enough to write an installer script, we would be eternally thankful :)
Introduction
Pickle is a new PHP extension installer. It is based on Composer and the plan is to get Composer to fully support it. See composer/composer#2898 (comment) for the Composer part of the discussions.
Pickle fully supports existing extensions in http://pecl.php.net, running the following will install the latest available version of the memcache extension:
$ pickle install memcache
Windows is fully supported, to install binaries or from the sources (work in progress and given that you have a working build environment in place).
The concept behind Pickle is to ease the life of both developers and end users.
For end users, nothing changes much except that Pickle is based on modern concepts and works with multiple protocols (git or http(s) URLs).
For developers, it drastically reduces the release work. Extension meta information is not duplicated anymore. Configuration options, files to package etc. are automatically fetched from the sources and the respective files are updated during the release process. There is no risk anymore of forgetting to update the version here or there, or to neglect to include a file.
Installation From Sources
While the phar usage is recommended, one is indeed able to use it from git.
Clone this repository and install the dependencies with Composer:
$ composer install
If you like to create your own phar from the pickle sources, you will need to install Box (http://box-project.github.io/box2/). Then clone the repository and run the following commands:
$ cd pickle
$ composer install --no-dev --optimize-autoloader
$ php -d phar.readonly=0 box.phar build
Usage
Usage is pretty straightforward. For example, to install the memcache extension run the following command:
$ bin/pickle install memcache
If you need to install a specific version of an extension, you may do so:
$ bin/pickle install redis@5.3.2
You can also use pickle from your extension directory, the following command:
$ cd myext
$ bin/pickle install
A list of the commands is available using:
$ bin/pickle list
To get extended help for a given command, use:
$ bin/pickle help install
To convert a package (based on package.xml current PECL installer), use:
$ bin/pickle convert /home/pierre/myext/
Or run it from the extension source directory.
Contributing
Fork the project, create a feature branch and send us a pull request.
To ensure a consistent code base, you should make sure the code follows the PSR-1 and PSR-2 coding standards.
To check CS issues, you can use the cs-check
composer command:
$ composer run cs-check
To automatically fix CS issues, you can use the cs-fix
composer command:
$ composer run cs-fix
Support
Support is available via the issue
tracker in the Github project page
or via IRC, EFNet, channel #pickle
.
Running tests
You should run the tests by setting the PICKLE_PECL_TESTSERVER
environment variable to yes
(or true
or 1
).
This implies that test are executed using a well-defined environment instead of using a live web server.
# On Unix-like systems export PICKLE_PECL_TESTSERVER=yes # On Windows systems set PICKLE_PECL_TESTSERVER=yes
Unit tests are written using atoum.
You will get atoum, among other dependencies, when running composer install
.
To run tests, you will need to run the following command:
$ vendor/bin/atoum
# To run tests in a loop, ideal to do TDD
$ vendor/bin/atoum --loop
There are also some Behat tests.
You will get Behat, among other dependencies, when running composer install
.
To run tests, you will need to run the following command:
$ vendor/bin/behat
# To choose the test suite you want to run
$ vendor/bin/behat -s pickle
Behat tests also test the phar, generate it prior to run the full test as described here (composer install --no-dev mode).
Pickle is covered using 4 Behat tests suites:
pickle
runs tests against pickle's sourcespickle_phar
runs tests against pickle's Phar which you have to manually buildpecl
tests PECL extensions conversion with pickle's sourcesphar_pecl
tests PECL extensions conversion with pickle's Phar