%undefine __brp_mangle_shebangs %global gh_commit 2a7c71266b2545a3bed9f4860734081963f6e688 %global gh_short %(c=%{gh_commit}; echo ${c:0:7}) %global gh_branch 2.0-dev %global gh_owner composer %global gh_project composer %global api_version 2.6.0 %global run_version 2.2.2 %global upstream_version 2.8.3 %global _phpunit %{_bindir}/phpunit9 %global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) %global bashcomproot %(dirname %{bashcompdir} 2>/dev/null) Name: composer Version: %{upstream_version} Release: 1 Summary: Dependency Manager for PHP # SPDX: composer and all dependencies are MIT License: MIT URL: https://getcomposer.org/ Source0: %{gh_project}-%{upstream_version}-%{gh_short}.tgz # Profile scripts Source1: %{name}-bash-completion Source3: %{name}.sh Source4: %{name}.csh # Get a git snapshot to retrieve the test suite Source5: makesrc.sh # Use our autoloader, resources path, fix for tests Patch0: %{name}-rpm.patch # Disable XDG support as only partially implemented Patch1: %{name}-noxdg.patch BuildArch: noarch # platform set in makesrc.sh BuildRequires: php(language) >= 7.2.5 BuildRequires: php-cli BuildRequires: php-json BuildRequires: pkgconfig(bash-completion) Requires: php(language) >= 7.2.5 Requires: php-cli Supplements: php-cli # System certificates Requires: ca-certificates # From composer.json, suggest # "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", # "ext-zip": "Enabling the zip extension allows you to unzip archives", # "ext-zlib": "Allow gzip compression of HTTP requests" Requires: php-openssl Requires: php-zip Requires: php-zlib # From phpcompatinfo for version 2.2.5 Requires: php-ctype Requires: php-curl Requires: php-date Requires: php-dom Requires: php-filter Requires: php-hash Requires: php-iconv Requires: php-intl Requires: php-json Requires: php-libxml Requires: php-mbstring Requires: php-pcntl Requires: php-pcre Requires: php-phar Requires: php-posix Requires: php-reflection Requires: php-spl Requires: php-tokenizer Requires: php-xsl Requires: php-zlib # Bundled libraries # License MIT Provides: bundled(php-composer(composer/ca-bundle)) = 1.5.3 Provides: bundled(php-composer(composer/class-map-generator)) = 1.4.0 Provides: bundled(php-composer(composer/metadata-minifier)) = 1.0.0 Provides: bundled(php-composer(composer/pcre)) = 2.3.2 Provides: bundled(php-composer(composer/semver)) = 3.4.3 Provides: bundled(php-composer(composer/spdx-licenses)) = 1.5.8 Provides: bundled(php-composer(composer/xdebug-handler)) = 3.0.5 Provides: bundled(php-composer(justinrainbow/json-schema)) = 5.3.0 Provides: bundled(php-composer(psr/container)) = 1.1.1 Provides: bundled(php-composer(psr/log)) = 1.1.4 Provides: bundled(php-composer(react/promise)) = v3.2.0 Provides: bundled(php-composer(seld/jsonlint)) = 1.11.0 Provides: bundled(php-composer(seld/phar-utils)) = 1.2.1 Provides: bundled(php-composer(seld/signal-handler)) = 2.0.2 Provides: bundled(php-composer(symfony/console)) = v5.4.47 Provides: bundled(php-composer(symfony/deprecation-contracts)) = v2.5.3 Provides: bundled(php-composer(symfony/filesystem)) = v5.4.45 Provides: bundled(php-composer(symfony/finder)) = v5.4.45 Provides: bundled(php-composer(symfony/polyfill-ctype)) = v1.31.0 Provides: bundled(php-composer(symfony/polyfill-intl-grapheme)) = v1.31.0 Provides: bundled(php-composer(symfony/polyfill-intl-normalizer)) = v1.31.0 Provides: bundled(php-composer(symfony/polyfill-mbstring)) = v1.31.0 Provides: bundled(php-composer(symfony/polyfill-php73)) = v1.31.0 Provides: bundled(php-composer(symfony/polyfill-php80)) = v1.31.0 Provides: bundled(php-composer(symfony/polyfill-php81)) = v1.31.0 Provides: bundled(php-composer(symfony/process)) = v5.4.47 Provides: bundled(php-composer(symfony/service-contracts)) = v2.5.3 Provides: bundled(php-composer(symfony/string)) = v5.4.47 # Composer library Provides: php-composer(composer/composer) = %{version} # Special internal for Plugin API Provides: php-composer(composer-plugin-api) = %{api_version} Provides: php-composer(composer-runtime-api) = %{run_version} %description Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere. Documentation: https://getcomposer.org/doc/ %prep %autosetup -p1 -n %{gh_project}-%{gh_commit} find . \( -name \*.rpm -o -name \*noxdg \) -delete -print rm vendor/composer/ca-bundle/res/cacert.pem : 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-composer(%s)) = %s", $pkg["name"], $pkg["version"]); } foreach($res as $lic => $lib) { sort($lib); printf("# License %s\n%s\n", $lic, implode("\n", $lib)); } ' : fix reported version sed -e '/BRANCH_ALIAS_VERSION/s/@package_branch_alias_version@//' \ -i src/Composer/Composer.php : check Plugin API version php -r ' namespace Composer; include "src/bootstrap.php"; if (version_compare(Plugin\PluginInterface::PLUGIN_API_VERSION, "%{api_version}")) { printf("Plugin API version is %s, expected %s\n", Plugin\PluginInterface::PLUGIN_API_VERSION, "%{api_version}"); exit(1); } if (version_compare(Composer::RUNTIME_API_VERSION, "%{run_version}")) { printf("Runtime API version is %s, expected %s\n", Composer::RUNTIME_API_VERSION, "%{run_version}"); exit(1); }' %build # Nothing to build %install : Profile scripts install -Dpm 644 %{SOURCE1} %{buildroot}%{bashcompdir}/%{name} mkdir -p %{buildroot}%{_sysconfdir}/profile.d install -m 644 %{SOURCE3} %{SOURCE4} %{buildroot}%{_sysconfdir}/profile.d/ : Library autoloader for compatibility mkdir -p %{buildroot}%{_datadir}/php/Composer ln -s ../../composer/vendor/autoload.php %{buildroot}%{_datadir}/php/Composer/autoload.php : Sources mkdir -p %{buildroot}%{_datadir}/%{name} cp -pr src res vendor LICENSE\ %{buildroot}%{_datadir}/%{name}/ : Command install -Dpm 755 bin/%{name} %{buildroot}%{_bindir}/%{name} : Licenses ln -sf ../../%{name}/LICENSE LICENSE cd vendor for lic in */*/LICENSE do dir=$(dirname $lic) own=$(dirname $dir) prj=$(basename $dir) ln -sf ../../composer/vendor/$own/$prj/LICENSE ../$own-$prj-LICENSE done %check : Check autoloader php -r ' include "%{buildroot}%{_datadir}/%{name}/src/bootstrap.php"; exit (class_exists("Composer\\Composer") ? 0 : 1); ' : Check compatibility autoloader php -r ' include "%{buildroot}%{_datadir}/php/Composer/autoload.php"; exit (class_exists("Composer\\Composer") ? 0 : 2); ' %files %license LICENSE %doc *.md doc %doc composer.json %config(noreplace) %{_sysconfdir}/profile.d/%{name}.* %{_bindir}/%{name} %{_datadir}/php/Composer %{_datadir}/%{name} %{bashcomproot} %changelog * Wed Nov 27 2024 Funda Wang - 2.8.3-1 - Import package from Remi