diff --git a/composer-bash-completion b/composer-bash-completion deleted file mode 100644 index 0b6447f..0000000 --- a/composer-bash-completion +++ /dev/null @@ -1,84 +0,0 @@ -# This file is part of the Symfony package. -# -# (c) Fabien Potencier -# -# For the full copyright and license information, please view -# https://symfony.com/doc/current/contributing/code/license.html - -_sf_composer() { - # Use newline as only separator to allow space in completion values - local IFS=$'\n' - local sf_cmd="${COMP_WORDS[0]}" - - # for an alias, get the real script behind it - sf_cmd_type=$(type -t $sf_cmd) - if [[ $sf_cmd_type == "alias" ]]; then - sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") - elif [[ $sf_cmd_type == "file" ]]; then - sf_cmd=$(type -p $sf_cmd) - fi - - if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then - return 1 - fi - - local cur prev words cword - _get_comp_words_by_ref -n := cur prev words cword - - local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-S2.9.3") - for w in ${words[@]}; do - w=$(printf -- '%b' "$w") - # remove quotes from typed values - quote="${w:0:1}" - if [ "$quote" == \' ]; then - w="${w%\'}" - w="${w#\'}" - elif [ "$quote" == \" ]; then - w="${w%\"}" - w="${w#\"}" - fi - # empty values are ignored - if [ ! -z "$w" ]; then - completecmd+=("-i$w") - fi - done - - local sfcomplete - if sfcomplete=$(${completecmd[@]} 2>&1); then - local quote suggestions - quote=${cur:0:1} - - # Use single quotes by default if suggestions contains backslash (FQCN) - if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then - quote=\' - fi - - if [ "$quote" == \' ]; then - # single quotes: no additional escaping (does not accept ' in values) - suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) - elif [ "$quote" == \" ]; then - # double quotes: double escaping for \ $ ` " - suggestions=$(for s in $sfcomplete; do - s=${s//\\/\\\\} - s=${s//\$/\\\$} - s=${s//\`/\\\`} - s=${s//\"/\\\"} - printf $'%q%q%q\n' "$quote" "$s" "$quote"; - done) - else - # no quotes: double escaping - suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done) - fi - COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur"))) - __ltrim_colon_completions "$cur" - else - if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then - >&2 echo - >&2 echo $sfcomplete - fi - - return 1 - fi -} - -complete -F _sf_composer composer diff --git a/composer-noxdg.patch b/composer-noxdg.patch index 2927848..607e449 100644 --- a/composer-noxdg.patch +++ b/composer-noxdg.patch @@ -1,14 +1,14 @@ diff -up ./src/Composer/Factory.php.noxdg ./src/Composer/Factory.php ---- ./src/Composer/Factory.php.noxdg 2024-04-20 12:34:54.442117723 +0200 -+++ ./src/Composer/Factory.php 2024-04-20 12:35:39.497640757 +0200 -@@ -702,6 +702,10 @@ class Factory - - private static function useXdg(): bool +--- ./src/Composer/Factory.php.noxdg 2022-01-25 09:39:15.000000000 +0100 ++++ ./src/Composer/Factory.php 2022-01-25 09:50:21.374957261 +0100 +@@ -701,6 +701,10 @@ class Factory + */ + private static function useXdg() { -+ // As XDG is very partially implemented ++ // As XDG is very patially implemted + // resulting in command/code in ~/.config + return false; + foreach (array_keys($_SERVER) as $key) { - if (strpos((string) $key, 'XDG_') === 0) { + if (strpos($key, 'XDG_') === 0) { return true; diff --git a/composer-rpm.patch b/composer-rpm.patch index 7323225..bdf807b 100644 --- a/composer-rpm.patch +++ b/composer-rpm.patch @@ -1,19 +1,43 @@ diff -up ./bin/composer.rpm ./bin/composer ---- ./bin/composer.rpm 2024-10-03 07:10:57.000000000 +0200 -+++ ./bin/composer 2024-10-03 07:11:10.751092365 +0200 -@@ -16,7 +16,7 @@ if (PHP_VERSION_ID < 70205) { +--- ./bin/composer.rpm 2022-01-25 09:39:15.000000000 +0100 ++++ ./bin/composer 2022-01-25 09:50:21.372957269 +0100 +@@ -6,7 +6,7 @@ if (PHP_SAPI !== 'cli' && PHP_SAPI !== ' } setlocale(LC_ALL, 'C'); -require __DIR__.'/../src/bootstrap.php'; -+require '/usr/share/composer/src/bootstrap.php'; ++require '/usr/share/php/Composer/autoload.php'; use Composer\Console\Application; use Composer\XdebugHandler\XdebugHandler; +diff -up ./src/Composer/Autoload/AutoloadGenerator.php.rpm ./src/Composer/Autoload/AutoloadGenerator.php +--- ./src/Composer/Autoload/AutoloadGenerator.php.rpm 2022-01-25 09:39:15.000000000 +0100 ++++ ./src/Composer/Autoload/AutoloadGenerator.php 2022-01-25 09:50:21.373957265 +0100 +@@ -419,7 +419,7 @@ EOF; + $filesystem->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion, $checkPlatform)); + + $filesystem->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php'); +- $filesystem->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE'); ++ $filesystem->safeCopy((getenv('BUILDROOT')?:'') . '/usr/share/composer/LICENSE', $targetDir.'/LICENSE'); + + if ($this->runScripts) { + $this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP, $this->devMode, array(), array( +diff -up ./src/Composer/Compiler.php.rpm ./src/Composer/Compiler.php +--- ./src/Composer/Compiler.php.rpm 2022-01-25 09:39:15.000000000 +0100 ++++ ./src/Composer/Compiler.php 2022-01-25 09:50:21.373957265 +0100 +@@ -125,7 +125,7 @@ class Compiler + // Add Composer resources + $finder = new Finder(); + $finder->files() +- ->in(__DIR__.'/../../res') ++ ->in((getenv('BUILDROOT')?:'') . '/usr/share/composer/res') + ->sort($finderSort) + ; + foreach ($finder as $file) { diff -up ./src/Composer/InstalledVersions.php.rpm ./src/Composer/InstalledVersions.php ---- ./src/Composer/InstalledVersions.php.rpm 2024-10-03 07:10:57.000000000 +0200 -+++ ./src/Composer/InstalledVersions.php 2024-10-03 07:11:10.752092401 +0200 -@@ -266,7 +266,7 @@ class InstalledVersions +--- ./src/Composer/InstalledVersions.php.rpm 2022-01-25 09:39:15.000000000 +0100 ++++ ./src/Composer/InstalledVersions.php 2022-01-25 09:50:21.373957265 +0100 +@@ -264,7 +264,7 @@ class InstalledVersions if (null === self::$installed) { // only require the installed.php file if this file is loaded from its dumped location, // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 @@ -22,24 +46,98 @@ diff -up ./src/Composer/InstalledVersions.php.rpm ./src/Composer/InstalledVersio self::$installed = include __DIR__ . '/installed.php'; } else { self::$installed = array(); -@@ -341,7 +341,7 @@ class InstalledVersions +@@ -337,7 +337,7 @@ class InstalledVersions if (null === self::$installed) { // only require the installed.php file if this file is loaded from its dumped location, // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { + if (substr(__DIR__, -8, 1) !== 'C' && is_file(__DIR__ . '/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; -diff -up ./vendor/composer/ca-bundle/src/CaBundle.php.rpm ./vendor/composer/ca-bundle/src/CaBundle.php ---- ./vendor/composer/ca-bundle/src/CaBundle.php.rpm 2024-09-25 09:49:53.000000000 +0200 -+++ ./vendor/composer/ca-bundle/src/CaBundle.php 2024-10-03 07:11:10.752092401 +0200 + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); +diff -up ./src/Composer/Json/JsonFile.php.rpm ./src/Composer/Json/JsonFile.php +--- ./src/Composer/Json/JsonFile.php.rpm 2022-01-25 09:39:15.000000000 +0100 ++++ ./src/Composer/Json/JsonFile.php 2022-01-25 09:50:21.373957265 +0100 +@@ -35,7 +35,7 @@ class JsonFile + const JSON_PRETTY_PRINT = 128; + const JSON_UNESCAPED_UNICODE = 256; + +- const COMPOSER_SCHEMA_PATH = '/../../../res/composer-schema.json'; ++ const COMPOSER_SCHEMA_PATH = '/usr/share/composer/res/composer-schema.json'; + + /** @var string */ + private $path; +@@ -197,7 +197,7 @@ class JsonFile + $isComposerSchemaFile = false; + if (null === $schemaFile) { + $isComposerSchemaFile = true; +- $schemaFile = __DIR__ . self::COMPOSER_SCHEMA_PATH; ++ $schemaFile = (getenv('BUILDROOT')?:'') . self::COMPOSER_SCHEMA_PATH; + } + + // Prepend with file:// only when not using a special schema already (e.g. in the phar) +diff -up ./tests/Composer/Test/Json/ComposerSchemaTest.php.rpm ./tests/Composer/Test/Json/ComposerSchemaTest.php +--- ./tests/Composer/Test/Json/ComposerSchemaTest.php.rpm 2022-01-25 09:39:15.000000000 +0100 ++++ ./tests/Composer/Test/Json/ComposerSchemaTest.php 2022-01-25 09:50:21.373957265 +0100 +@@ -97,7 +97,8 @@ class ComposerSchemaTest extends TestCas + private function check($json) + { + $validator = new Validator(); +- $validator->check(json_decode($json), (object) array('$ref' => 'file://' . __DIR__ . '/../../../../res/composer-schema.json')); ++ $f = (getenv('BUILDROOT')?:'') . '/usr/share/composer/res/composer-schema.json'; ++ $validator->check(json_decode($json), (object) array('$ref' => 'file://' . $f)); + + if (!$validator->isValid()) { + $errors = $validator->getErrors(); +diff -up ./tests/Composer/Test/PolyfillTestCase.php.rpm ./tests/Composer/Test/PolyfillTestCase.php +--- ./tests/Composer/Test/PolyfillTestCase.php.rpm 2022-01-25 09:39:15.000000000 +0100 ++++ ./tests/Composer/Test/PolyfillTestCase.php 2022-01-25 09:50:21.373957265 +0100 +@@ -15,10 +15,35 @@ namespace Composer\Test { + use PHPUnit\Framework\Constraint\LogicalNot; + use PHPUnit\Framework\Constraint\StringContains; + +- if (method_exists('PHPUnit\Framework\TestCase', 'assertStringContainsString')) { ++ if (method_exists('PHPUnit\Framework\TestCase', 'assertFileDoesNotExist')) { + abstract class PolyfillTestCase extends TestCase + { + } ++ } else if (method_exists('PHPUnit\Framework\TestCase', 'assertStringContainsString')) { ++ abstract class PolyfillTestCase extends TestCase { ++ /** ++ * @param string $filename ++ * @param string $message ++ * ++ * @return void ++ */ ++ public static function assertFileDoesNotExist($filename, $message = '') ++ { ++ static::assertFileNotExists($filename, $message); ++ } ++ ++ /** ++ * @param string $pattern ++ * @param string $string ++ * @param string $message ++ * ++ * @return void ++ */ ++ public static function assertMatchesRegularExpression($pattern, $string, $message = '') ++ { ++ static::assertRegExp($pattern, $string, $message); ++ } ++ } + } else { + abstract class PolyfillTestCase extends TestCase + { +diff -up ./src/Composer/vendor/composer/ca-bundle/src/CaBundle.php.rpm ./src/Composer/vendor/composer/ca-bundle/src/CaBundle.php +--- ./src/Composer/vendor/composer/ca-bundle/src/CaBundle.php.rpm 2022-01-25 09:50:57.595802751 +0100 ++++ ./src/Composer/vendor/composer/ca-bundle/src/CaBundle.php 2022-01-25 09:51:36.038638770 +0100 @@ -125,7 +125,7 @@ class CaBundle */ public static function getBundledCaBundlePath() { - $caBundleFile = __DIR__.'/../res/cacert.pem'; -+ $caBundleFile = '/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'; // System CA, always ++ $caBundleFile = '/etc/pki/tls/certs/ca-bundle.crt'; // System CA, always // cURL does not understand 'phar://' paths // see https://github.com/composer/ca-bundle/issues/10 diff --git a/composer.spec b/composer.spec index f6de2ad..15a3a12 100644 --- a/composer.spec +++ b/composer.spec @@ -1,44 +1,54 @@ # remirepo/fedora spec file for composer # -# SPDX-FileCopyrightText: Copyright 2015-2025 Remi Collet -# SPDX-License-Identifier: CECILL-2.1 -# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +# Copyright (c) 2015-2022 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/4.0/ # # Please, preserve the changelog entries # +# For compatibility with SCL +%undefine __brp_mangle_shebangs -%global gh_commit fb3bee27676fd852a8a11ebbb1de19b4dada5aba +%if 0%{?fedora} +%bcond_without tests +%bcond_without syslib +%else +%bcond_with tests +%bcond_with syslib +%endif + +%global gh_commit ba61e768b410736efe61df01b61f1ec44f51474f %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.9.0 +%global api_version 2.2.0 %global run_version 2.2.2 -%global upstream_version 2.9.3 +%global upstream_version 2.2.12 #global upstream_prever RC1 #global upstream_lower rc1 -%global _phpunit %{_bindir}/phpunit9 -%global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) -%global bashcomproot %(dirname %{bashcompdir} 2>/dev/null) +%global symfony_prefix php-symfony4 +%global symfony_path %{_datadir}/php/Symfony4 +%global symfony_min 4.4 +%global _phpunit %{_bindir}/phpunit9 Name: composer Version: %{upstream_version}%{?upstream_prever:~%{upstream_lower}} Release: 1%{?dist} Summary: Dependency Manager for PHP -# SPDX: composer and all dependencies are MIT +# composer and all dependencies are MIT License: MIT URL: https://getcomposer.org/ Source0: %{gh_project}-%{upstream_version}%{?upstream_prever}-%{gh_short}.tgz # Profile scripts -Source1: %{name}-bash-completion Source3: %{name}.sh Source4: %{name}.csh -# Create a git snapshot with dependencies +# Get a git snapshot to retrieve the test suite Source5: makesrc.sh # Use our autoloader, resources path, fix for tests @@ -51,55 +61,115 @@ BuildArch: noarch BuildRequires: php(language) >= 7.2.5 BuildRequires: php-cli BuildRequires: php-json -BuildRequires: pkgconfig(bash-completion) -BuildRequires: composer-generators +%if %{with tests} +BuildRequires: (php-composer(composer/ca-bundle) >= 1.0 with php-composer(composer/ca-bundle) < 2) +BuildRequires: (php-composer(composer/metadata-minifier) >= 1.0 with php-composer(composer/metadata-minifier) < 2) +BuildRequires: (php-composer(composer/semver) >= 3.0 with php-composer(composer/semver) < 4) +BuildRequires: (php-composer(composer/spdx-licenses) >= 1.2 with php-composer(composer/spdx-licenses) < 2) +BuildRequires: (php-composer(composer/xdebug-handler) >= 2.0 with php-composer(composer/xdebug-handler) < 4) +BuildRequires: (php-composer(seld/jsonlint) >= 1.4 with php-composer(seld/jsonlint) < 2) +BuildRequires: (php-composer(seld/phar-utils) >= 1.1 with php-composer(seld/phar-utils) < 2) +BuildRequires: (php-composer(psr/log) >= 1.1 with php-composer(psr/log) < 3) +BuildRequires: (php-composer(justinrainbow/json-schema) >= 5.2.11 with php-composer(justinrainbow/json-schema) < 6) +BuildRequires: (php-composer(react/promise) >= 2.7 with php-composer(react/promise) < 3) +BuildRequires: (php-composer(composer/pcre) >= 1.0 with php-composer(composer/pcre) < 2) +BuildRequires: %{symfony_prefix}-console >= %{symfony_min} +BuildRequires: %{symfony_prefix}-finder >= %{symfony_min} +BuildRequires: %{symfony_prefix}-filesystem >= %{symfony_min} +BuildRequires: %{symfony_prefix}-process >= %{symfony_min} +BuildRequires: php-zip +# From composer.json, "require-dev": { +# "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0", +# "phpspec/prophecy": "^1.10" +BuildRequires: %{_phpunit} +# For autoloader +BuildRequires: php-fedora-autoloader-devel +%endif # From composer.json, "require": { -# "php": "^7.2.5 || ^8.0", -# "ext-json": "*", -# "composer/ca-bundle": "^1.5", -# "composer/class-map-generator": "^1.4.0", +# "php": "^5.3.2 || ^7.0", +# "composer/ca-bundle": "^1.0", # "composer/metadata-minifier": "^1.0", -# "composer/semver": "^3.3", -# "composer/spdx-licenses": "^1.5.7", -# "composer/xdebug-handler": "^2.0.2 || ^3.0.3", -# "justinrainbow/json-schema": "^6.5.1", -# "psr/log": "^1.0 || ^2.0 || ^3.0", -# "seld/jsonlint": "^1.4", -# "seld/phar-utils": "^1.2", -# "symfony/console": "^5.4.47 || ^6.4.25 || ^7.1.10 || ^8.0", -# "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.1.10 || ^8.0", -# "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.1.10 || ^8.0", -# "symfony/process": "^5.4.47 || ^6.4.25 || ^7.1.10 || ^8.0", -# "react/promise": "^3.3", -# "composer/pcre": "^2.3 || ^3.3", -# "symfony/polyfill-php73": "^1.24", -# "symfony/polyfill-php80": "^1.24", -# "symfony/polyfill-php81": "^1.24", -# "seld/signal-handler": "^2.0" +# "composer/semver": "^3.0", +# "composer/spdx-licenses": "^1.2", +# "composer/xdebug-handler": "^2.0 || ^3.0", +# "justinrainbow/json-schema": "^5.2.11", +# "psr/log": "^1.0 || ^2.0" +# "seld/jsonlint": "~1.4", +# "seld/phar-utils": "^1.0", +# "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", +# "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", +# "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", +# "symfony/process": "^^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", +# "react/promise": "^1.2 || ^2.7", +# "composer/pcre": "^1.0" Requires: php(language) >= 7.2.5 -Requires: php-json Requires: php-cli +%if %{with syslib} +Requires: (php-composer(composer/ca-bundle) >= 1.0 with php-composer(composer/ca-bundle) < 2) +Requires: (php-composer(composer/metadata-minifier) >= 1.0 with php-composer(composer/metadata-minifier) < 2) +Requires: (php-composer(composer/semver) >= 3.0 with php-composer(composer/semver) < 4) +Requires: (php-composer(composer/spdx-licenses) >= 1.2 with php-composer(composer/spdx-licenses) < 2) +Requires: (php-composer(composer/xdebug-handler) >= 2.0 with php-composer(composer/xdebug-handler) < 4) +Requires: (php-composer(seld/jsonlint) >= 1.4 with php-composer(seld/jsonlint) < 2) +Requires: (php-composer(seld/phar-utils) >= 1.1 with php-composer(seld/phar-utils) < 2) +Requires: (php-composer(psr/log) >= 1.1 with php-composer(psr/log) < 3) +Requires: (php-composer(justinrainbow/json-schema) >= 5.2.11 with php-composer(justinrainbow/json-schema) < 6) +Requires: (php-composer(react/promise) >= 2.7 with php-composer(react/promise) < 3) +Requires: (php-composer(composer/pcre) >= 1.0 with php-composer(composer/pcre) < 2) +Requires: %{symfony_prefix}-console >= %{symfony_min} +Requires: %{symfony_prefix}-finder >= %{symfony_min} +Requires: %{symfony_prefix}-process >= %{symfony_min} +Requires: %{symfony_prefix}-filesystem >= %{symfony_min} +# For our autoloader +Requires: php-composer(fedora/autoloader) +%else # System certificates -Requires: /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem - +Requires: ca-certificates +# Bundled libraries +Provides: bundled(php-composer-ca-bundle) = 1.3.1 +Provides: bundled(php-composer-metadata-minifier) = 1.0.0 +Provides: bundled(php-composer-pcre) = 1.0.1 +Provides: bundled(php-composer-semver) = 3.3.1 +Provides: bundled(php-composer-spdx-licenses) = 1.5.6 +Provides: bundled(php-composer-xdebug-handler) = 3.0.3 +Provides: bundled(php-justinrainbow-json-schema) = 5.2.11 +Provides: bundled(php-psr-container) = 1.1.1 +Provides: bundled(php-psr-log) = 1.1.4 +Provides: bundled(php-react-promise) = v2.9.0 +Provides: bundled(php-seld-jsonlint) = 1.8.3 +Provides: bundled(php-seld-phar-utils) = 1.2.0 +Provides: bundled(php-symfony-console) = v5.4.5 +Provides: bundled(php-symfony-deprecation-contracts) = v2.5.0 +Provides: bundled(php-symfony-filesystem) = v5.4.6 +Provides: bundled(php-symfony-finder) = v5.4.3 +Provides: bundled(php-symfony-polyfill-ctype) = v1.25.0 +Provides: bundled(php-symfony-polyfill-intl-grapheme) = v1.25.0 +Provides: bundled(php-symfony-polyfill-intl-normalizer) = v1.25.0 +Provides: bundled(php-symfony-polyfill-mbstring) = v1.25.0 +Provides: bundled(php-symfony-polyfill-php73) = v1.25.0 +Provides: bundled(php-symfony-polyfill-php80) = v1.25.0 +Provides: bundled(php-symfony-process) = v5.4.5 +Provides: bundled(php-symfony-service-contracts) = v2.5.0 +Provides: bundled(php-symfony-string) = v5.4.3 +%endif # From composer.json, suggest -# "ext-curl": "Provides HTTP support (will fallback to PHP streams if missing)", -# "ext-openssl": "Enables access to repositories and packages over HTTPS", -# "ext-zip": "Allows direct extraction of ZIP archives (unzip/7z binaries will be used instead if available)", -# "ext-zlib": "Enables gzip for HTTP requests" -Requires: php-curl +# "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 @@ -112,14 +182,12 @@ Requires: php-tokenizer Requires: php-xsl Requires: php-zlib +# 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} -# PEAR is now deprecated -# composer is designed to replace it -Supplements: php-pear - %description Composer helps you declare, manage and install dependencies of PHP projects, @@ -131,20 +199,97 @@ Documentation: https://getcomposer.org/doc/ %prep %setup -q -n %{gh_project}-%{gh_commit} -%patch -P0 -p1 -b .rpm -%patch -P1 -p1 -b .noxdg +%patch0 -p1 -b .rpm +%patch1 -p1 -b .noxdg find . \( -name \*.rpm -o -name \*noxdg \) -delete -print -rm vendor/composer/ca-bundle/res/cacert.pem +rm src/bootstrap.php +rm src/Composer/vendor/composer/ca-bundle/res/cacert.pem + +%if %{with syslib} +rm -rf src/Composer/vendor + +phpab --template fedora --output src/Composer/autoload.php src/Composer +cat << 'EOF' | tee -a src/Composer/autoload.php + +\Fedora\Autoloader\Dependencies::required([ + [ /* before symfony which load composer */ + '%{_datadir}/php/Composer/XdebugHandler3/autoload.php', + '%{_datadir}/php/Composer/XdebugHandler2/autoload.php', + ], + '%{symfony_path}/Component/Console/autoload.php', + '%{symfony_path}/Component/Finder/autoload.php', + '%{symfony_path}/Component/Process/autoload.php', + '%{symfony_path}/Component/Filesystem/autoload.php', + '%{_datadir}/php/Seld/JsonLint/autoload.php', + '%{_datadir}/php/Seld/PharUtils/autoload.php', + '%{_datadir}/php/Composer/CaBundle/autoload.php', + '%{_datadir}/php/Composer/Spdx/autoload.php', + '%{_datadir}/php/Composer/MetadataMinifier/autoload.php', + '%{_datadir}/php/Composer/Semver3/autoload.php', + '%{_datadir}/php/Composer/Pcre/autoload.php', + [ + '%{_datadir}/php/Psr/Log2/autoload.php', + '%{_datadir}/php/Psr/Log/autoload.php', + ], + '%{_datadir}/php/JsonSchema5/autoload.php', + '%{_datadir}/php/React/Promise/autoload.php', +]); +EOF + +cat << 'EOF' | tee tests/bootstrap.php + - 2.9.3-1 -- update to 2.9.3 - -* Thu Nov 20 2025 Remi Collet - 2.9.2-1 -- update to 2.9.2 - -* Thu Nov 13 2025 Remi Collet - 2.9.1-1 -- update to 2.9.1 - -* Thu Nov 13 2025 Remi Collet - 2.9.0-1 -- update to 2.9.0 - -* Fri Sep 19 2025 Remi Collet - 2.8.12-1 -- update to 2.8.12 - -* Wed Aug 27 2025 Remi Collet - 2.8.11-1 -- update to 2.8.11 - -* Wed Jul 23 2025 Fedora Release Engineering - 2.8.10-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jul 11 2025 Remi Collet - 2.8.10-1 -- update to 2.8.10 - -* Tue May 13 2025 Remi Collet - 2.8.9-1 -- update to 2.8.9 - -* Sat Apr 5 2025 Remi Collet - 2.8.8-1 -- update to 2.8.8 - -* Tue Feb 25 2025 Remi Collet - 2.8.6-1 -- update to 2.8.6 - -* Tue Jan 21 2025 Remi Collet - 2.8.5-1 -- update to 2.8.5 - -* Thu Jan 16 2025 Fedora Release Engineering - 2.8.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Dec 11 2024 Remi Collet - 2.8.4-1 -- update to 2.8.4 -- re-license spec file to CECILL-2.1 - -* Mon Nov 18 2024 Remi Collet - 2.8.3-1 -- update to 2.8.3 - -* Wed Oct 30 2024 Remi Collet - 2.8.2-3 -- keep upstream layout for simplicity - -* Wed Oct 30 2024 Remi Collet - 2.8.2-2 -- update to 2.8.2 -- fix diagnose command - -* Fri Oct 4 2024 Remi Collet - 2.8.1-1 -- update to 2.8.1 - -* Thu Oct 3 2024 Remi Collet - 2.8.0-1 -- update to 2.8.0 - -* Wed Sep 4 2024 Remi Collet - 2.7.9-1 -- update to 2.7.9 - -* Fri Aug 23 2024 Remi Collet - 2.7.8-1 -- update to 2.7.8 - -* Wed Jul 17 2024 Fedora Release Engineering - 2.7.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Tue Jun 11 2024 Remi Collet - 2.7.7-1 -- update to 2.7.7 - -* Sun May 5 2024 Remi Collet - 2.7.6-1 -- update to 2.7.6 - -* Tue Apr 23 2024 Remi Collet - 2.7.4-1 -- update to 2.7.4 - -* Tue Mar 12 2024 Remi Collet - 2.7.2-1 -- update to 2.7.2 - -* Sat Feb 10 2024 Remi Collet - 2.7.1-1 -- update to 2.7.1 - -* Wed Jan 24 2024 Fedora Release Engineering - 2.6.6-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 2.6.6-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Dec 9 2023 Remi Collet - 2.6.6-1 -- update to 2.6.6 - -* Fri Oct 6 2023 Remi Collet - 2.6.5-1 -- update to 2.6.5 - -* Fri Sep 29 2023 Remi Collet - 2.6.4-1 -- update to 2.6.4 - -* Fri Sep 15 2023 Remi Collet - 2.6.3-1 -- update to 2.6.3 - -* Mon Sep 4 2023 Remi Collet - 2.6.2-1 -- update to 2.6.2 - -* Fri Sep 1 2023 Remi Collet - 2.6.1-1 -- update to 2.6.1 - -* Fri Sep 1 2023 Remi Collet - 2.6.0-1 -- update to 2.6.0 - -* Wed Jul 19 2023 Fedora Release Engineering - 2.5.8-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jun 10 2023 Remi Collet - 2.5.8-1 -- update to 2.5.8 - -* Wed May 24 2023 Remi Collet - 2.5.7-1 -- update to 2.5.7 - -* Wed May 24 2023 Remi Collet - 2.5.6-1 -- update to 2.5.6 - -* Tue Mar 21 2023 Remi Collet - 2.5.5-1 -- update to 2.5.5 - -* Wed Feb 15 2023 Remi Collet - 2.5.4-1 -- update to 2.5.4 - -* Fri Feb 10 2023 Remi Collet - 2.5.3-1 -- update to 2.5.3 - -* Mon Feb 6 2023 Remi Collet - 2.5.2-1 -- update to 2.5.2 - -* Thu Jan 19 2023 Fedora Release Engineering - 2.5.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Dec 22 2022 Remi Collet - 2.5.1-1 -- update to 2.5.1 - -* Tue Dec 20 2022 Remi Collet - 2.5.0-1 -- update to 2.5.0 - -* Fri Oct 28 2022 Remi Collet - 2.4.4-1 -- update to 2.4.4 - -* Sat Oct 15 2022 Remi Collet - 2.4.3-1 -- update to 2.4.3 - -* Thu Sep 15 2022 Remi Collet - 2.4.2-1 -- update to 2.4.2 - -* Mon Aug 29 2022 Remi Collet - 2.4.1-1 -- update to 2.4.1 - -* Tue Aug 16 2022 Remi Collet - 2.4.0-1 -- update to 2.4.0 - -* Wed Jul 20 2022 Fedora Release Engineering - 2.3.10-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jul 14 2022 Remi Collet - 2.3.10-1 -- update to 2.3.10 - -* Tue Jul 5 2022 Remi Collet - 2.3.9-1 -- update to 2.3.9 - -* Fri Jul 1 2022 Remi Collet - 2.3.8-1 -- update to 2.3.8 -- add bash completion file (for upcoming 2.4) - -* Tue Jun 7 2022 Remi Collet - 2.3.7-1 -- update to 2.3.7 - -* Thu Jun 2 2022 Remi Collet - 2.3.6-1 -- update to 2.3.6 - -* Thu Apr 14 2022 Remi Collet - 2.3.5-1 -- update to 2.3.5 - -* Fri Apr 8 2022 Remi Collet - 2.3.4-1 -- update to 2.3.4 - -* Sat Apr 2 2022 Remi Collet - 2.3.3-1 -- update to 2.3.3 - -* Thu Mar 31 2022 Remi Collet - 2.3.2-1 -- update to 2.3.2 - -* Wed Mar 30 2022 Remi Collet - 2.3.0-1 -- update to 2.3.0 -- always use bundled libraries - as symfony/* 5.4 and composer/pcre 2 are not available +* Thu Apr 14 2022 Remi Collet - 2.2.12-1 +- update to 2.2.12 * Wed Mar 30 2022 Remi Collet - 2.2.10-1 - update to 2.2.10 @@ -423,15 +394,9 @@ php -r ' * Sat Feb 5 2022 Remi Collet - 2.2.6-1 - update to 2.2.6 -* Tue Jan 25 2022 Remi Collet - 2.2.5-2 -- use system libraries on Fedora, bundled libraries on EL - * Sat Jan 22 2022 Remi Collet - 2.2.5-1 - update to 2.2.5 -* Wed Jan 19 2022 Fedora Release Engineering - 2.2.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - * Sun Jan 9 2022 Remi Collet - 2.2.4-1 - update to 2.2.4 @@ -477,9 +442,6 @@ php -r ' - update to 2.1.4 - raise dependency on justinrainbow/json-schema 5.2.11 -* Wed Jul 21 2021 Fedora Release Engineering - 2.1.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - * Thu Jun 10 2021 Remi Collet - 2.1.3-1 - update to 2.1.3 diff --git a/makesrc.sh b/makesrc.sh index dc25efb..930ec0b 100755 --- a/makesrc.sh +++ b/makesrc.sh @@ -8,7 +8,7 @@ PREVER=$(sed -n '/^%global upstream_prever/{s/.* //;p}' $NAME.spec) COMMIT=$(sed -n '/^%global gh_commit/{s/.* //;p}' $NAME.spec) SHORT=${COMMIT:0:7} -if [ -f $NAME-$VERSION$PREVER-$SHORT.tgz -a "$1" != "-f" ]; then +if [ -f $NAME-$VERSION$PREVER-$SHORT.tgz ]; then echo skip $NAME-$VERSION$PREVER-$SHORT.tgz already here else echo -e "\nCreate git snapshot\nName=$NAME, Owner=$OWNER, Project=$PROJECT, Version=$VERSION$PREVER\n" @@ -22,10 +22,9 @@ else cp composer.json ../composer.json composer config platform.php 7.2.5 rm composer.lock + export COMPOSER_VENDOR_DIR=src/Composer/vendor composer install --no-interaction --no-progress --no-dev --optimize-autoloader - cp vendor/composer/installed.json ../ - # bash completion - bin/composer completion bash >../composer-bash-completion + cp src/Composer/vendor/composer/installed.json ../ popd echo "Archiving..." diff --git a/sources b/sources index 05fc8e8..20eba6d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (composer-2.9.3-fb3bee2.tgz) = b8f9a7bc73a7b765f113a22308e2b4b35c14ebfadadc57047a37f210be4099a49abc72c85c5c9ce200baa3e63ad0c1a97da744277ca1da948b419af40379658c +SHA512 (composer-2.2.12-ba61e76.tgz) = eb47b368b43633a6e52684d7c6b7961cd571ad0edf8edc5585acc95891cb6958992d9dec6c88ab947ce95f8597139f76ab58ee8b401d2bf9af7511d2aabfc24a