diff --git a/composer-bash-completion b/composer-bash-completion new file mode 100644 index 0000000..5d484cc --- /dev/null +++ b/composer-bash-completion @@ -0,0 +1,81 @@ +# 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 + IFS=$'\n' + local sf_cmd="${COMP_WORDS[0]}" + + # for an alias, get the real script behind it + if [[ $(type -t $sf_cmd) == "alias" ]]; then + sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") + fi + + if [ ! -f "$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" "-sbash" "-c$cword" "-S2.3.10") + 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 fc6b127..73195e7 100644 --- a/composer-noxdg.patch +++ b/composer-noxdg.patch @@ -1,9 +1,9 @@ diff -up ./src/Composer/Factory.php.noxdg ./src/Composer/Factory.php ---- ./src/Composer/Factory.php.noxdg 2021-05-31 15:37:50.548115679 +0200 -+++ ./src/Composer/Factory.php 2021-05-31 15:39:05.192882880 +0200 -@@ -653,6 +653,10 @@ class Factory - */ - private static function useXdg() +--- ./src/Composer/Factory.php.noxdg 2022-03-16 09:51:30.398977729 +0100 ++++ ./src/Composer/Factory.php 2022-03-16 09:52:14.113841110 +0100 +@@ -665,6 +665,10 @@ class Factory + + private static function useXdg(): bool { + // As XDG is very patially implemted + // resulting in command/code in ~/.config diff --git a/composer-rpm.patch b/composer-rpm.patch index cbb4b3c..5cfb149 100644 --- a/composer-rpm.patch +++ b/composer-rpm.patch @@ -1,7 +1,7 @@ diff -up ./bin/composer.rpm ./bin/composer ---- ./bin/composer.rpm 2021-09-14 15:45:17.000000000 +0200 -+++ ./bin/composer 2021-09-14 15:45:33.025118009 +0200 -@@ -6,7 +6,7 @@ if (PHP_SAPI !== 'cli' && PHP_SAPI !== ' +--- ./bin/composer.rpm 2022-06-02 06:47:42.000000000 +0200 ++++ ./bin/composer 2022-06-02 06:49:45.037192985 +0200 +@@ -11,7 +11,7 @@ if (PHP_VERSION_ID < 70205) { } setlocale(LC_ALL, 'C'); @@ -11,10 +11,10 @@ diff -up ./bin/composer.rpm ./bin/composer 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 2021-09-14 15:45:17.000000000 +0200 -+++ ./src/Composer/Autoload/AutoloadGenerator.php 2021-09-14 15:45:33.025118009 +0200 -@@ -395,7 +395,7 @@ EOF; - $filesystem->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion, $checkPlatform)); +--- ./src/Composer/Autoload/AutoloadGenerator.php.rpm 2022-06-02 06:47:42.000000000 +0200 ++++ ./src/Composer/Autoload/AutoloadGenerator.php 2022-06-02 06:49:45.037192985 +0200 +@@ -425,7 +425,7 @@ EOF; + $filesystem->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $checkPlatform)); $filesystem->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php'); - $filesystem->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE'); @@ -23,9 +23,9 @@ diff -up ./src/Composer/Autoload/AutoloadGenerator.php.rpm ./src/Composer/Autolo 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 2021-09-14 15:45:17.000000000 +0200 -+++ ./src/Composer/Compiler.php 2021-09-14 15:45:33.025118009 +0200 -@@ -118,7 +118,7 @@ class Compiler +--- ./src/Composer/Compiler.php.rpm 2022-06-02 06:47:42.000000000 +0200 ++++ ./src/Composer/Compiler.php 2022-06-02 06:49:45.037192985 +0200 +@@ -107,7 +107,7 @@ class Compiler // Add Composer resources $finder = new Finder(); $finder->files() @@ -35,9 +35,9 @@ diff -up ./src/Composer/Compiler.php.rpm ./src/Composer/Compiler.php ; foreach ($finder as $file) { diff -up ./src/Composer/InstalledVersions.php.rpm ./src/Composer/InstalledVersions.php ---- ./src/Composer/InstalledVersions.php.rpm 2021-09-14 15:45:17.000000000 +0200 -+++ ./src/Composer/InstalledVersions.php 2021-09-14 15:45:33.026118007 +0200 -@@ -251,7 +251,7 @@ class InstalledVersions +--- ./src/Composer/InstalledVersions.php.rpm 2022-06-02 06:47:42.000000000 +0200 ++++ ./src/Composer/InstalledVersions.php 2022-06-02 06:49:45.037192985 +0200 +@@ -266,7 +266,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 @@ -46,7 +46,7 @@ diff -up ./src/Composer/InstalledVersions.php.rpm ./src/Composer/InstalledVersio self::$installed = include __DIR__ . '/installed.php'; } else { self::$installed = array(); -@@ -324,7 +324,7 @@ class InstalledVersions +@@ -339,7 +339,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 @@ -56,31 +56,55 @@ diff -up ./src/Composer/InstalledVersions.php.rpm ./src/Composer/InstalledVersio } else { self::$installed = array(); diff -up ./src/Composer/Json/JsonFile.php.rpm ./src/Composer/Json/JsonFile.php ---- ./src/Composer/Json/JsonFile.php.rpm 2021-09-14 15:45:17.000000000 +0200 -+++ ./src/Composer/Json/JsonFile.php 2021-09-14 15:46:22.434026477 +0200 -@@ -34,7 +34,7 @@ class JsonFile - const JSON_PRETTY_PRINT = 128; - const JSON_UNESCAPED_UNICODE = 256; +--- ./src/Composer/Json/JsonFile.php.rpm 2022-06-02 06:47:42.000000000 +0200 ++++ ./src/Composer/Json/JsonFile.php 2022-06-02 06:49:45.037192985 +0200 +@@ -39,7 +39,7 @@ class JsonFile + /** @deprecated Use \JSON_UNESCAPED_UNICODE */ + public const JSON_UNESCAPED_UNICODE = 256; -- const COMPOSER_SCHEMA_PATH = '/../../../res/composer-schema.json'; -+ const COMPOSER_SCHEMA_PATH = '/usr/share/composer/res/composer-schema.json'; +- public const COMPOSER_SCHEMA_PATH = __DIR__ . '/../../../res/composer-schema.json'; ++ public const COMPOSER_SCHEMA_PATH = '/usr/share/composer/res/composer-schema.json'; /** @var string */ private $path; -@@ -191,7 +191,7 @@ class JsonFile +@@ -219,7 +219,7 @@ class JsonFile $isComposerSchemaFile = false; if (null === $schemaFile) { $isComposerSchemaFile = true; -- $schemaFile = __DIR__ . self::COMPOSER_SCHEMA_PATH; +- $schemaFile = 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 ./src/Composer/PHPStan/ConfigReturnTypeExtension.php.rpm ./src/Composer/PHPStan/ConfigReturnTypeExtension.php +--- ./src/Composer/PHPStan/ConfigReturnTypeExtension.php.rpm 2022-06-02 06:50:28.987916014 +0200 ++++ ./src/Composer/PHPStan/ConfigReturnTypeExtension.php 2022-06-02 06:51:05.429709332 +0200 +@@ -30,7 +30,7 @@ final class ConfigReturnTypeExtension im + + public function __construct() + { +- $schema = JsonFile::parseJson((string) file_get_contents(__DIR__.'/../../../res/composer-schema.json')); ++ $schema = JsonFile::parseJson((string) file_get_contents('/usr/share/composer/res/composer-schema.json')); + /** + * @var string $prop + */ +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-05-24 13:56:16.000000000 +0200 ++++ ./src/Composer/vendor/composer/ca-bundle/src/CaBundle.php 2022-06-02 06:49:45.037192985 +0200 +@@ -125,7 +125,7 @@ class CaBundle + */ + public static function getBundledCaBundlePath() + { +- $caBundleFile = __DIR__.'/../res/cacert.pem'; ++ $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 -up ./tests/Composer/Test/Json/ComposerSchemaTest.php.rpm ./tests/Composer/Test/Json/ComposerSchemaTest.php ---- ./tests/Composer/Test/Json/ComposerSchemaTest.php.rpm 2021-09-14 15:45:17.000000000 +0200 -+++ ./tests/Composer/Test/Json/ComposerSchemaTest.php 2021-09-14 15:45:33.025118009 +0200 -@@ -93,7 +93,8 @@ class ComposerSchemaTest extends TestCas - private function check($json) +--- ./tests/Composer/Test/Json/ComposerSchemaTest.php.rpm 2022-06-02 06:47:42.000000000 +0200 ++++ ./tests/Composer/Test/Json/ComposerSchemaTest.php 2022-06-02 06:49:45.037192985 +0200 +@@ -97,7 +97,8 @@ class ComposerSchemaTest extends TestCas + private function check(string $json) { $validator = new Validator(); - $validator->check(json_decode($json), (object) array('$ref' => 'file://' . __DIR__ . '/../../../../res/composer-schema.json')); @@ -89,43 +113,3 @@ diff -up ./tests/Composer/Test/Json/ComposerSchemaTest.php.rpm ./tests/Composer/ 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 2021-09-14 15:45:17.000000000 +0200 -+++ ./tests/Composer/Test/PolyfillTestCase.php 2021-09-14 15:45:33.026118007 +0200 -@@ -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 --git a/composer.spec b/composer.spec index 91a5503..5370dcf 100644 --- a/composer.spec +++ b/composer.spec @@ -10,35 +10,46 @@ # For compatibility with SCL %undefine __brp_mangle_shebangs +%if 0 %bcond_without tests +%bcond_without syslib +%else +%bcond_with tests +%bcond_with syslib +%endif -%global gh_commit 8a5ad75194f901e3b39ece4bbd22cbdabc79ae8f +%global gh_commit ebac357c0a41359f3981098729042ed6dedc97ba %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.2.0 +%global api_version 2.3.0 %global run_version 2.2.2 -%global upstream_version 2.2.4 -#global upstream_prever RC1 -#global upstream_lower rc1 +%global upstream_version 2.3.10 +#global upstream_prever RC2 +#global upstream_lower rc2 -%global symfony_prefix php-symfony4 -%global symfony_path %{_datadir}/php/Symfony4 -%global symfony_min 4.4 +%global symfony_prefix php-symfony5 +%global symfony_path %{_datadir}/php/Symfony5 +%global symfony_min 5.4.1 %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}%{?upstream_prever:~%{upstream_lower}} Release: 1%{?dist} Summary: Dependency Manager for PHP +# 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 # Get a git snapshot to retrieve the test suite @@ -50,19 +61,23 @@ Patch0: %{name}-rpm.patch 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) %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) < 3) +BuildRequires: (php-composer(composer/xdebug-handler) >= 2.0.2 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.0 with php-composer(seld/phar-utils) < 2) -BuildRequires: (php-composer(psr/log) >= 1.0 with php-composer(psr/log) < 3) +BuildRequires: (php-composer(seld/phar-utils) >= 1.2 with php-composer(seld/phar-utils) < 2) +BuildRequires: (php-composer(psr/log) >= 1.1 with php-composer(psr/log) < 4) 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: (php-composer(composer/pcre) >= 2 with php-composer(composer/pcre) < 4) BuildRequires: %{symfony_prefix}-console >= %{symfony_min} BuildRequires: %{symfony_prefix}-finder >= %{symfony_min} BuildRequires: %{symfony_prefix}-filesystem >= %{symfony_min} @@ -74,44 +89,78 @@ BuildRequires: php-zip BuildRequires: %{_phpunit} # For autoloader BuildRequires: php-fedora-autoloader-devel -BuildRequires: php-seld-phar-utils >= 1.1 -BuildRequires: php-PsrLog >= 1.1 %endif # From composer.json, "require": { -# "php": "^5.3.2 || ^7.0", +# "php": "^7.2.5 || ^8.0", # "composer/ca-bundle": "^1.0", # "composer/metadata-minifier": "^1.0", # "composer/semver": "^3.0", # "composer/spdx-licenses": "^1.2", -# "composer/xdebug-handler": "^2.0", +# "composer/xdebug-handler": "^2.0.2 || ^3.0.3", # "justinrainbow/json-schema": "^5.2.11", -# "psr/log": "^1.0 || ^2.0" +# "psr/log": "^1.0 || ^2.0 || ^3.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) >= 5.3.2 +# "seld/phar-utils": "^1.2", +# "symfony/console": "^5.4.1 || ^6.0", +# "symfony/filesystem": "^5.4 || ^6.0", +# "symfony/finder": "^5.4 || ^6.0", +# "symfony/process": "^5.4 || ^6.0", +# "react/promise": "^2.8", +# "composer/pcre": "^2 || ^3" +# "symfony/polyfill-php73": "^1.24", +# "symfony/polyfill-php80": "^1.24" +Requires: php(language) >= 7.2.5 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) < 3) +Requires: (php-composer(composer/xdebug-handler) >= 2.0.2 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.0 with php-composer(seld/phar-utils) < 2) -Requires: (php-composer(psr/log) >= 1.0 with php-composer(psr/log) < 3) +Requires: (php-composer(seld/phar-utils) >= 1.2 with php-composer(seld/phar-utils) < 2) +Requires: (php-composer(psr/log) >= 1.1 with php-composer(psr/log) < 4) 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: (php-composer(composer/pcre) >= 2 with php-composer(composer/pcre) < 4) 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: ca-certificates +# Bundled libraries +# License MIT +Provides: bundled(php-composer-ca-bundle) = 1.3.2 +Provides: bundled(php-composer-metadata-minifier) = 1.0.0 +Provides: bundled(php-composer-pcre) = 2.0.0 +Provides: bundled(php-composer-semver) = 3.3.2 +Provides: bundled(php-composer-spdx-licenses) = 1.5.7 +Provides: bundled(php-composer-xdebug-handler) = 3.0.3 +Provides: bundled(php-justinrainbow-json-schema) = 5.2.12 +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.9.0 +Provides: bundled(php-seld-phar-utils) = 1.2.0 +Provides: bundled(php-symfony-console) = v5.4.10 +Provides: bundled(php-symfony-deprecation-contracts) = v2.5.2 +Provides: bundled(php-symfony-filesystem) = v5.4.9 +Provides: bundled(php-symfony-finder) = v5.4.8 +Provides: bundled(php-symfony-polyfill-ctype) = v1.26.0 +Provides: bundled(php-symfony-polyfill-intl-grapheme) = v1.26.0 +Provides: bundled(php-symfony-polyfill-intl-normalizer) = v1.26.0 +Provides: bundled(php-symfony-polyfill-mbstring) = v1.26.0 +Provides: bundled(php-symfony-polyfill-php73) = v1.26.0 +Provides: bundled(php-symfony-polyfill-php80) = v1.26.0 +Provides: bundled(php-symfony-process) = v5.4.8 +Provides: bundled(php-symfony-service-contracts) = v2.5.2 +Provides: bundled(php-symfony-string) = v5.4.10 +%endif # 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", @@ -119,14 +168,11 @@ Requires: %{symfony_prefix}-filesystem >= %{symfony_min} Requires: php-openssl Requires: php-zip Requires: php-zlib -# For our autoloader -Requires: php-composer(fedora/autoloader) -Requires: php-seld-phar-utils >= 1.1 -Requires: php-PsrLog >= 1.1 -# From phpcompatinfo for version 2.0.0 +# 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 @@ -170,11 +216,20 @@ if grep -r '\.\./res'; then exit 1 fi +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([ - '%{_datadir}/php/Composer/XdebugHandler2/autoload.php', /* before symfony which load composer */ + [ /* 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', @@ -185,8 +240,11 @@ cat << 'EOF' | tee -a src/Composer/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/Composer/Pcre3/autoload.php', + '%{_datadir}/php/Composer/Pcre2/autoload.php', + ], [ + '%{_datadir}/php/Psr/Log3/autoload.php', '%{_datadir}/php/Psr/Log2/autoload.php', '%{_datadir}/php/Psr/Log/autoload.php', ], @@ -201,8 +259,33 @@ require 'Composer/autoload.php'; \Fedora\Autoloader\Autoload::addPsr0('Composer\\Test\\', __DIR__ . '/'); EOF -rm src/bootstrap.php +%else +: symlink autoloader for library +ln -s vendor/autoload.php src/Composer/autoload.php +: fix layout +sed -e "s:/../..' . '/src/Composer::" -i src/Composer/vendor/composer/autoload_static.php + +: List bundled libraries and Licenses +php -r ' + $pkgs = file_get_contents("src/Composer/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)); + } +' +%endif : fix reported version %if 0%{?gh_date} @@ -237,6 +320,7 @@ if (version_compare(Composer::RUNTIME_API_VERSION, "%{run_version}")) { %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/ @@ -256,7 +340,7 @@ install -Dpm 755 bin/%{name} %{buildroot}%{_bindir}/%{name} %check -%if %{with tests} +%if %{with tests} && %{with syslib} : Online tests rm tests/Composer/Test/Util/RemoteFilesystemTest.php @@ -266,7 +350,10 @@ rm -rf res : Run test suite export BUILDROOT=%{buildroot} -FILTER="--filter '^((?!(testIntegration)).)*$'" +# testSearchWithSpecialChars is online +# testCreateMap fails on 8.1 +# testOutputIgnoresFormatting use InstalledVersions +FILTER="--filter '^((?!(testIntegration|testSearchWithSpecialChars|testCreateMap|testOutputIgnoresFormatting)).)*$'" # Adapt for phunit9 find tests \ @@ -301,9 +388,61 @@ exit $ret %{_bindir}/%{name} %{_datadir}/php/Composer %{_datadir}/%{name} +%{bashcomproot} %changelog +* 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 + +* Wed Mar 30 2022 Remi Collet - 2.2.10-1 +- update to 2.2.10 + +* Wed Mar 16 2022 Remi Collet - 2.2.9-1 +- update to 2.2.9 + +* Tue Mar 15 2022 Remi Collet - 2.2.8-1 +- update to 2.2.8 + +* Fri Feb 25 2022 Remi Collet - 2.2.7-1 +- update to 2.2.7 + +* Sat Feb 5 2022 Remi Collet - 2.2.6-1 +- update to 2.2.6 + +* Sat Jan 22 2022 Remi Collet - 2.2.5-1 +- update to 2.2.5 + * Sun Jan 9 2022 Remi Collet - 2.2.4-1 - update to 2.2.4 diff --git a/makesrc.sh b/makesrc.sh index 9615a91..930ec0b 100755 --- a/makesrc.sh +++ b/makesrc.sh @@ -8,21 +8,29 @@ PREVER=$(sed -n '/^%global upstream_prever/{s/.* //;p}' $NAME.spec) COMMIT=$(sed -n '/^%global gh_commit/{s/.* //;p}' $NAME.spec) SHORT=${COMMIT:0:7} -echo -e "\nCreate git snapshot\nName=$NAME, Owner=$OWNER, Project=$PROJECT, Version=$VERSION$PREVER\n" +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" -echo "Cloning..." -git clone https://github.com/$OWNER/$PROJECT.git $PROJECT-$COMMIT + echo "Cloning..." + git clone https://github.com/$OWNER/$PROJECT.git $PROJECT-$COMMIT -echo "Getting commit..." -pushd $PROJECT-$COMMIT -git checkout $COMMIT -cp composer.json ../composer.json -popd + echo "Getting commit..." + pushd $PROJECT-$COMMIT + git checkout $COMMIT || exit 1 + 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 src/Composer/vendor/composer/installed.json ../ + popd -echo "Archiving..." -tar czf $NAME-$VERSION$PREVER-$SHORT.tgz --exclude .git $PROJECT-$COMMIT - -echo "Cleaning..." -rm -rf $PROJECT-$COMMIT + echo "Archiving..." + tar czf $NAME-$VERSION$PREVER-$SHORT.tgz --exclude .git $PROJECT-$COMMIT + echo "Cleaning..." + rm -rf $PROJECT-$COMMIT +fi echo "Done." diff --git a/sources b/sources index 0c91968..038e012 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (composer-2.2.4-8a5ad75.tgz) = 383c9bcfb39f772c8dfb316b798c383afa0ed899e081c5c03395b52bf3dc5263472719677dde65c412f9a8ca8bcfccacfc097a2465901d1671d232d496d8e868 +SHA512 (composer-2.3.10-ebac357.tgz) = 22302bfb5bb03f87567eda1fcfe906b049d43ff43862472405d13f6af472b1452834d09cb944753b740950c2d98911e6af72bb7b771c048a26cdb165b0c73659