# remirepo/fedora spec file for pie # # Copyright (c) 2024 Remi Collet # License: CC-BY-SA-4.0 # http://creativecommons.org/licenses/by-sa/4.0/ # # Please, preserve the changelog entries # # For compatibility with SCL %undefine __brp_mangle_shebangs %global gh_commit 51f0d5072d7346c90d20bf9a5633e67938fefcca %global gh_short %(c=%{gh_commit}; echo ${c:0:7}) #global gh_date 20241003 %global gh_branch main %global gh_owner php %global gh_project pie %global upstream_version 0.1.0 #global upstream_prever dev #global upstream_lower DEV %global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) %global bashcomproot %(dirname %{bashcompdir} 2>/dev/null) Name: pie Version: %{upstream_version}%{?upstream_prever:~%{upstream_lower}} Release: 1%{?gh_date:.%{gh_date}.%{gh_short}}%{?dist} Summary: PHP Installer for Extensions # SPDX: pie is BSD-3-Clause, all dependencies are MIT License: BSD-3-Clause and MIT URL: https://github.com/php/pie Source0: %{gh_project}-%{upstream_version}%{?upstream_prever}-%{gh_short}.tgz Source1: %{name}-bash-completion # Get a git snapshot to retrieve the test suite Source9: makesrc.sh # Fix autoloader path Patch0: %{name}-rpm.patch BuildArch: noarch # platform set in makesrc.sh BuildRequires: php(language) >= 8.1 BuildRequires: php-cli BuildRequires: php-json BuildRequires: php-zip BuildRequires: pkgconfig(bash-completion) # From composer.json, "require": { # "php": "8.1.*||8.2.*||8.3.*||8.4.*", # "ext-zip": "*", Requires: php(language) >= 8.1 Requires: php-cli Requires: php-zip # System certificates Requires: ca-certificates # From phpcompatinfo Requires: php-curl Requires: php-dom Requires: php-intl Requires: php-json Requires: php-libxml Requires: php-mbstring Requires: php-phar Requires: php-xsl # Bundled libraries # License MIT Provides: bundled(php-composer-ca-bundle) = 1.5.2 Provides: bundled(php-composer-class-map-generator) = 1.4.0 Provides: bundled(php-composer-composer) = dev-main Provides: bundled(php-composer-metadata-minifier) = 1.0.0 Provides: bundled(php-composer-pcre) = 3.3.1 Provides: bundled(php-composer-semver) = 3.4.3 Provides: bundled(php-composer-spdx-licenses) = 1.5.8 Provides: bundled(php-composer-xdebug-handler) = 3.0.5 Provides: bundled(php-guzzlehttp-guzzle) = 7.9.2 Provides: bundled(php-guzzlehttp-promises) = 2.0.3 Provides: bundled(php-guzzlehttp-psr7) = 2.7.0 Provides: bundled(php-illuminate-container) = v10.48.22 Provides: bundled(php-illuminate-contracts) = v10.48.22 Provides: bundled(php-justinrainbow-json-schema) = 5.3.0 Provides: bundled(php-psr-container) = 2.0.2 Provides: bundled(php-psr-http-client) = 1.0.3 Provides: bundled(php-psr-http-factory) = 1.1.0 Provides: bundled(php-psr-http-message) = 2.0 Provides: bundled(php-psr-log) = 3.0.2 Provides: bundled(php-psr-simple-cache) = 3.0.0 Provides: bundled(php-ralouphie-getallheaders) = 3.0.3 Provides: bundled(php-react-promise) = v3.2.0 Provides: bundled(php-seld-jsonlint) = 1.11.0 Provides: bundled(php-seld-phar-utils) = 1.2.1 Provides: bundled(php-seld-signal-handler) = 2.0.2 Provides: bundled(php-symfony-console) = v6.4.12 Provides: bundled(php-symfony-deprecation-contracts) = v3.5.0 Provides: bundled(php-symfony-filesystem) = v6.4.12 Provides: bundled(php-symfony-finder) = v6.4.11 Provides: bundled(php-symfony-polyfill-ctype) = v1.31.0 Provides: bundled(php-symfony-polyfill-intl-grapheme) = v1.31.0 Provides: bundled(php-symfony-polyfill-intl-normalizer) = v1.31.0 Provides: bundled(php-symfony-polyfill-mbstring) = v1.31.0 Provides: bundled(php-symfony-polyfill-php73) = v1.31.0 Provides: bundled(php-symfony-polyfill-php80) = v1.31.0 Provides: bundled(php-symfony-polyfill-php81) = v1.31.0 Provides: bundled(php-symfony-process) = v6.4.12 Provides: bundled(php-symfony-service-contracts) = v3.5.0 Provides: bundled(php-symfony-string) = v6.4.12 Provides: bundled(php-webmozart-assert) = 1.11.0 # Composer library Provides: php-composer(php/pie) = %{version} %description PIE (PHP Installer for Extensions). PIE can install an extension to any installed PHP version. A list of extensions that support PIE can be found on https://packagist.org/extensions. Documentation: /usr/share/doc/pie/docs/usage.md %prep %setup -q -n %{gh_project}-%{gh_commit} %patch -P0 -p1 -b .rpm find . \( -name \*.rpm -o -name \*noxdg \) -delete -print : Set version sed -e 's/@pie_version@/%{upstream_version}%{?upstream_prever}/' -i bin/pie : List bundled libraries and Licenses php -r ' $pkgs = file_get_contents("vendor/composer/installed.json"); $pkgs = json_decode($pkgs, true); if (!is_array($pkgs) || !isset($pkgs["packages"])) { echo "cant decode json file\n"; exit(3); } $res = []; foreach($pkgs["packages"] as $pkg) { $lic = implode(" and ", $pkg["license"]); if (!isset($res[$lic])) $res[$lic] = []; $res[$lic][] = sprintf("Provides: bundled(php-%s) = %s", str_replace(["/", "_"], ["-", "-"], $pkg["name"]), $pkg["version"]); } foreach($res as $lic => $lib) { sort($lib); printf("# License %s\n%s\n", $lic, implode("\n", $lib)); } ' %build # Nothing %install : Profile scripts install -Dpm 644 %{SOURCE1} %{buildroot}%{bashcompdir}/%{name} : Library mkdir -p %{buildroot}%{_datadir}/%{name} cp -pr src %{buildroot}%{_datadir}/%{name}/src cp -pr vendor %{buildroot}%{_datadir}/%{name}/vendor : Command install -Dpm 755 bin/%{name} %{buildroot}%{_bindir}/%{name} : Licenses cd vendor for lic in */*/LICENSE do dir=$(dirname $lic) own=$(dirname $dir) prj=$(basename $dir) ln -sf ../../pie/vendor/$own/$prj/LICENSE ../$own-$prj-LICENSE done %files %license LICENSE.md %license *LICENSE %doc *.md docs %doc composer.json %{_bindir}/%{name} %{_datadir}/%{name} %{bashcomproot} %changelog * Thu Oct 10 2024 Remi Collet - 0.1.0-1 - update to 0.1.0 (pre-release) * Fri Oct 4 2024 Remi Collet - 0.0.0~DEV-1.20241003.bbb9b6b - Initial package from dev-main