Compare commits

..

21 commits

Author SHA1 Message Date
Remi Collet
7be73d2f7f v2.2.12 2022-04-14 07:18:39 +02:00
Remi Collet
b62dca78b2 v2.2.10
(cherry picked from commit 99e9ef55ce)
2022-03-30 07:41:45 +02:00
Remi Collet
61ddcc665e v2.2.9
(cherry picked from commit 26c47b0acf)
2022-03-16 08:03:16 +01:00
Remi Collet
a8cb795377 v2.2.8
(cherry picked from commit 6769264671)
2022-03-15 14:15:04 +01:00
Remi Collet
d1051c1206 v2.2.7
(cherry picked from commit 1d2985b4de)
2022-02-25 12:33:52 +01:00
Remi Collet
dd41225ec3 use system libraries on Fedora, bundled libraries on EL
(cherry picked from commit 01bbe4863e)

add missing requires on php-dom

(cherry picked from commit 47cab181a1)

v2.2.6

(cherry picked from commit 358d437f30)
(cherry picked from commit b3b9da84eb)
2022-02-07 10:10:18 +01:00
Remi Collet
7ae952fb2a v2.2.5
(cherry picked from commit 20b248a369)
(cherry picked from commit 1202c85cf8)
2022-01-24 10:10:54 +01:00
Remi Collet
b31192398b v2.2.4
(cherry picked from commit 889766206c)
2022-01-10 08:03:05 +01:00
Remi Collet
03277a65f0 v2.2.3
(cherry picked from commit 850346b461)
2022-01-03 08:11:31 +01:00
Remi Collet
7d1afc4a09 v2.2.1
(cherry picked from commit 4d4a8a1acc)
2021-12-23 07:44:03 +01:00
Remi Collet
4a9303858b update to 2.2.0
add dependency on composer/pcre

(cherry picked from commit 0f53a95fd0)
2021-12-22 11:57:13 +01:00
Remi Collet
da42f90804 v2.1.14
(cherry picked from commit 9b68f26232)
2021-11-30 11:44:23 +01:00
Remi Collet
ecbf182b91 v2.1.12
(cherry picked from commit 13c11c61de)
2021-11-10 08:46:30 +01:00
Remi Collet
6a2468967c v2.1.11
(cherry picked from commit b9eef84abe)
2021-11-02 13:42:48 +01:00
Remi Collet
19c7566a67 update to 2.1.10
allow psr/log v2

(cherry picked from commit c1fca0e48e)
2021-11-02 08:42:53 +01:00
Remi Collet
193b764925 v2.1.9
(cherry picked from commit bc9b5b34de)
2021-10-05 10:29:57 +02:00
Remi Collet
f9a9e576f4 v2.1.8
(cherry picked from commit 1bea4b046b)
2021-09-20 15:27:09 +02:00
Remi Collet
7d19fc1982 v2.1.7
(cherry picked from commit 22d335b4c2)
2021-09-14 15:52:15 +02:00
Remi Collet
cfc50f3a57 v2.1.6
(cherry picked from commit ab4babeb93)
2021-09-01 12:20:50 +02:00
Remi Collet
ca72636bec v2.1.5
(cherry picked from commit c13424a7ba)
2021-07-23 11:43:28 +02:00
Remi Collet
7532a50ee6 update to 2.1.4
raise dependency on justinrainbow/json-schema 5.2.11

(cherry picked from commit 7c68b5d75c)
2021-07-22 15:46:08 +02:00
6 changed files with 372 additions and 397 deletions

View file

@ -1,84 +0,0 @@
# This file is part of the Symfony package.
#
# (c) Fabien Potencier <fabien@symfony.com>
#
# 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

View file

@ -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;

View file

@ -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<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $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

View file

@ -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
<?php
require 'Composer/autoload.php';
\Fedora\Autoloader\Autoload::addPsr0('Composer\\Test\\', __DIR__ . '/');
EOF
%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);
}
$lic = [];
foreach($pkgs["packages"] as $pkg) {
printf("Provides: bundled(php-%s) = %s\n", str_replace(["/", "_"], ["-", "-"], $pkg["name"]), $pkg["version"]);
$lic = array_merge($lic, $pkg["license"]);
}
sort($lic);
printf("\nLicense: %s\n\n", implode(" and ", array_unique($lic)));
'
%endif
if grep -r '\.\./res'; then
: Patch need to fixed
exit 1
fi
: fix reported version
%if 0%{?gh_date}
DATE=%{gh_date}
DATE=${DATE:0:4}-${DATE:4:2}-${DATE:6:2}
sed -e '/VERSION/s/@package_version@/%{gh_commit}/' \
-e '/BRANCH_ALIAS_VERSION/s/@package_branch_alias_version@/%{gh_branch}/' \
-e "/RELEASE_DATE/s/@release_date@/$DATE/" \
-i src/Composer/Composer.php
%else
sed -e '/BRANCH_ALIAS_VERSION/s/@package_branch_alias_version@//' \
-i src/Composer/Composer.php
%endif
: check Plugin API version
php -r '
namespace Composer;
include "src/bootstrap.php";
include "src/Composer/autoload.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);
@ -156,257 +301,83 @@ if (version_compare(Composer::RUNTIME_API_VERSION, "%{run_version}")) {
%build
: Nothing to build
# Nothing
%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
: Library
mkdir -p %{buildroot}%{_datadir}/php
cp -pr src/* %{buildroot}%{_datadir}/php
: Sources
mkdir -p %{buildroot}%{_datadir}/%{name}
cp -pr src res vendor LICENSE\
%{buildroot}%{_datadir}/%{name}/
: Resources
mkdir -p %{buildroot}%{_datadir}/%{name}
cp -pr res %{buildroot}%{_datadir}/%{name}/res
cp -p LICENSE %{buildroot}%{_datadir}/%{name}/LICENSE
ln -sf %{_datadir}/%{name}/LICENSE LICENSE
: 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);
'
%if %{with tests} && %{with syslib}
: Online tests
rm tests/Composer/Test/Util/RemoteFilesystemTest.php
: Ensure not used
rm -rf res
: Run test suite
export BUILDROOT=%{buildroot}
# testSearchWithSpecialChars is online
# testCreateMap fails on 8.1
# testOutputIgnoresFormatting use InstalledVersions
FILTER="--filter '^((?!(testIntegration|testSearchWithSpecialChars|testCreateMap|testOutputIgnoresFormatting)).)*$'"
# Adapt for phunit9
find tests \
-name \*.php \
-exec sed -e '/function setUpBeforeClass(/s/$/:void/' \
-e '/function tearDownAfterClass(/s/$/:void/' \
-e '/function setUp(/s/$/:void/' \
-e '/function tearDown(/s/$/:void/' \
-i {} \;
# testIntegration may hang on local build
ret=0
for cmd in php php74 php80 php81; do
if which $cmd; then
$cmd -d memory_limit=1G %{_phpunit} \
$FILTER \
--include-path %{buildroot}%{_datadir}/php || ret=1
fi
done
exit $ret
%else
: Test suite disabled
%endif
%files
%license *LICENSE
%doc *.md
%doc doc
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc *.md doc
%doc composer.json
%config(noreplace) %{_sysconfdir}/profile.d/%{name}.*
%{_bindir}/%{name}
%{_datadir}/php/Composer
%{_datadir}/%{name}
%{bashcomproot}
%changelog
* Wed Dec 31 2025 Remi Collet <remi@remirepo.net> - 2.9.3-1
- update to 2.9.3
* Thu Nov 20 2025 Remi Collet <remi@remirepo.net> - 2.9.2-1
- update to 2.9.2
* Thu Nov 13 2025 Remi Collet <remi@remirepo.net> - 2.9.1-1
- update to 2.9.1
* Thu Nov 13 2025 Remi Collet <remi@remirepo.net> - 2.9.0-1
- update to 2.9.0
* Fri Sep 19 2025 Remi Collet <remi@remirepo.net> - 2.8.12-1
- update to 2.8.12
* Wed Aug 27 2025 Remi Collet <remi@remirepo.net> - 2.8.11-1
- update to 2.8.11
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.10-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Fri Jul 11 2025 Remi Collet <remi@remirepo.net> - 2.8.10-1
- update to 2.8.10
* Tue May 13 2025 Remi Collet <remi@remirepo.net> - 2.8.9-1
- update to 2.8.9
* Sat Apr 5 2025 Remi Collet <remi@remirepo.net> - 2.8.8-1
- update to 2.8.8
* Tue Feb 25 2025 Remi Collet <remi@remirepo.net> - 2.8.6-1
- update to 2.8.6
* Tue Jan 21 2025 Remi Collet <remi@remirepo.net> - 2.8.5-1
- update to 2.8.5
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Dec 11 2024 Remi Collet <remi@remirepo.net> - 2.8.4-1
- update to 2.8.4
- re-license spec file to CECILL-2.1
* Mon Nov 18 2024 Remi Collet <remi@remirepo.net> - 2.8.3-1
- update to 2.8.3
* Wed Oct 30 2024 Remi Collet <remi@remirepo.net> - 2.8.2-3
- keep upstream layout for simplicity
* Wed Oct 30 2024 Remi Collet <remi@remirepo.net> - 2.8.2-2
- update to 2.8.2
- fix diagnose command
* Fri Oct 4 2024 Remi Collet <remi@remirepo.net> - 2.8.1-1
- update to 2.8.1
* Thu Oct 3 2024 Remi Collet <remi@remirepo.net> - 2.8.0-1
- update to 2.8.0
* Wed Sep 4 2024 Remi Collet <remi@remirepo.net> - 2.7.9-1
- update to 2.7.9
* Fri Aug 23 2024 Remi Collet <remi@remirepo.net> - 2.7.8-1
- update to 2.7.8
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Tue Jun 11 2024 Remi Collet <remi@remirepo.net> - 2.7.7-1
- update to 2.7.7
* Sun May 5 2024 Remi Collet <remi@remirepo.net> - 2.7.6-1
- update to 2.7.6
* Tue Apr 23 2024 Remi Collet <remi@remirepo.net> - 2.7.4-1
- update to 2.7.4
* Tue Mar 12 2024 Remi Collet <remi@remirepo.net> - 2.7.2-1
- update to 2.7.2
* Sat Feb 10 2024 Remi Collet <remi@remirepo.net> - 2.7.1-1
- update to 2.7.1
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sat Dec 9 2023 Remi Collet <remi@remirepo.net> - 2.6.6-1
- update to 2.6.6
* Fri Oct 6 2023 Remi Collet <remi@remirepo.net> - 2.6.5-1
- update to 2.6.5
* Fri Sep 29 2023 Remi Collet <remi@remirepo.net> - 2.6.4-1
- update to 2.6.4
* Fri Sep 15 2023 Remi Collet <remi@remirepo.net> - 2.6.3-1
- update to 2.6.3
* Mon Sep 4 2023 Remi Collet <remi@remirepo.net> - 2.6.2-1
- update to 2.6.2
* Fri Sep 1 2023 Remi Collet <remi@remirepo.net> - 2.6.1-1
- update to 2.6.1
* Fri Sep 1 2023 Remi Collet <remi@remirepo.net> - 2.6.0-1
- update to 2.6.0
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sat Jun 10 2023 Remi Collet <remi@remirepo.net> - 2.5.8-1
- update to 2.5.8
* Wed May 24 2023 Remi Collet <remi@remirepo.net> - 2.5.7-1
- update to 2.5.7
* Wed May 24 2023 Remi Collet <remi@remirepo.net> - 2.5.6-1
- update to 2.5.6
* Tue Mar 21 2023 Remi Collet <remi@remirepo.net> - 2.5.5-1
- update to 2.5.5
* Wed Feb 15 2023 Remi Collet <remi@remirepo.net> - 2.5.4-1
- update to 2.5.4
* Fri Feb 10 2023 Remi Collet <remi@remirepo.net> - 2.5.3-1
- update to 2.5.3
* Mon Feb 6 2023 Remi Collet <remi@remirepo.net> - 2.5.2-1
- update to 2.5.2
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Dec 22 2022 Remi Collet <remi@remirepo.net> - 2.5.1-1
- update to 2.5.1
* Tue Dec 20 2022 Remi Collet <remi@remirepo.net> - 2.5.0-1
- update to 2.5.0
* Fri Oct 28 2022 Remi Collet <remi@remirepo.net> - 2.4.4-1
- update to 2.4.4
* Sat Oct 15 2022 Remi Collet <remi@remirepo.net> - 2.4.3-1
- update to 2.4.3
* Thu Sep 15 2022 Remi Collet <remi@remirepo.net> - 2.4.2-1
- update to 2.4.2
* Mon Aug 29 2022 Remi Collet <remi@remirepo.net> - 2.4.1-1
- update to 2.4.1
* Tue Aug 16 2022 Remi Collet <remi@remirepo.net> - 2.4.0-1
- update to 2.4.0
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.10-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jul 14 2022 Remi Collet <remi@remirepo.net> - 2.3.10-1
- update to 2.3.10
* Tue Jul 5 2022 Remi Collet <remi@remirepo.net> - 2.3.9-1
- update to 2.3.9
* Fri Jul 1 2022 Remi Collet <remi@remirepo.net> - 2.3.8-1
- update to 2.3.8
- add bash completion file (for upcoming 2.4)
* Tue Jun 7 2022 Remi Collet <remi@remirepo.net> - 2.3.7-1
- update to 2.3.7
* Thu Jun 2 2022 Remi Collet <remi@remirepo.net> - 2.3.6-1
- update to 2.3.6
* Thu Apr 14 2022 Remi Collet <remi@remirepo.net> - 2.3.5-1
- update to 2.3.5
* Fri Apr 8 2022 Remi Collet <remi@remirepo.net> - 2.3.4-1
- update to 2.3.4
* Sat Apr 2 2022 Remi Collet <remi@remirepo.net> - 2.3.3-1
- update to 2.3.3
* Thu Mar 31 2022 Remi Collet <remi@remirepo.net> - 2.3.2-1
- update to 2.3.2
* Wed Mar 30 2022 Remi Collet <remi@remirepo.net> - 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 <remi@remirepo.net> - 2.2.12-1
- update to 2.2.12
* Wed Mar 30 2022 Remi Collet <remi@remirepo.net> - 2.2.10-1
- update to 2.2.10
@ -423,15 +394,9 @@ php -r '
* Sat Feb 5 2022 Remi Collet <remi@remirepo.net> - 2.2.6-1
- update to 2.2.6
* Tue Jan 25 2022 Remi Collet <remi@remirepo.net> - 2.2.5-2
- use system libraries on Fedora, bundled libraries on EL
* Sat Jan 22 2022 Remi Collet <remi@remirepo.net> - 2.2.5-1
- update to 2.2.5
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Sun Jan 9 2022 Remi Collet <remi@remirepo.net> - 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 <releng@fedoraproject.org> - 2.1.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Thu Jun 10 2021 Remi Collet <remi@remirepo.net> - 2.1.3-1
- update to 2.1.3

View file

@ -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..."

View file

@ -1 +1 @@
SHA512 (composer-2.9.3-fb3bee2.tgz) = b8f9a7bc73a7b765f113a22308e2b4b35c14ebfadadc57047a37f210be4099a49abc72c85c5c9ce200baa3e63ad0c1a97da744277ca1da948b419af40379658c
SHA512 (composer-2.2.12-ba61e76.tgz) = eb47b368b43633a6e52684d7c6b7961cd571ad0edf8edc5585acc95891cb6958992d9dec6c88ab947ce95f8597139f76ab58ee8b401d2bf9af7511d2aabfc24a