Compare commits

...
Sign in to create a new pull request.

55 commits

Author SHA1 Message Date
Remi Collet
b02ea19394 v2.8.12 2025-09-19 14:09:46 +02:00
Remi Collet
9ddbe43033 v2.8.11
(cherry picked from commit 34d2866a0e)
(cherry picked from commit e47b4f0159)
2025-08-28 09:48:00 +02:00
Remi Collet
a73d9cec0c v2.8.10
(cherry picked from commit ef7a24ed26)
2025-07-11 08:06:10 +02:00
Remi Collet
33fe9a013b v2.8.9
(cherry picked from commit 37302d9faf)
2025-05-13 14:41:19 +02:00
Remi Collet
0dc0d3c38b v2.8.8
(cherry picked from commit a6ca5074a5)
2025-04-07 09:02:10 +02:00
Remi Collet
721e04acfd v2.8.6
(cherry picked from commit ae6d3b3084)
2025-02-25 15:49:39 +01:00
Remi Collet
368eab9430 v2.8.5
(cherry picked from commit 37b5f986cc)
(cherry picked from commit 188bd62ad8)
2025-01-21 16:19:42 +01:00
Remi Collet
aaa9e84ff1 update to 2.8.4
re-license spec file to CECILL-2.1

(cherry picked from commit 1a4995644a)
2024-12-11 14:05:51 +01:00
Remi Collet
8587091153 v2.8.3
(cherry picked from commit b626a00179)
2024-11-18 09:48:27 +01:00
Remi Collet
7cb81ccdd3 refresh sources
(cherry picked from commit 8114a124b1)
2024-10-30 10:48:42 +01:00
Remi Collet
20c2d7f76f keep upstream layout for simplicity
(cherry picked from commit c90124e643)
2024-10-30 10:48:36 +01:00
Remi Collet
9fe4a4389d v2.8.2
(cherry picked from commit d4fcde52da)
(cherry picked from commit ccad773681)

fix diagnose command

(cherry picked from commit 4f7bdd0f21)
(cherry picked from commit 306036c7b2)
2024-10-30 08:20:33 +01:00
Remi Collet
1cbdb8fa07 v2.8.1
(cherry picked from commit 8e0c415524)
2024-10-04 14:50:12 +02:00
Remi Collet
d058f1f292 v2.8.0
(cherry picked from commit 9487f51293)
2024-10-03 07:54:31 +02:00
Remi Collet
283b1c7317 v2.7.9
(cherry picked from commit f78e81fd0b)
2024-09-04 15:43:32 +02:00
Remi Collet
98e84c1c5a v2.7.8
(cherry picked from commit 885c8fe384)
(cherry picked from commit 0e8f9abaab)
2024-08-26 12:28:54 +02:00
Remi Collet
75054b09f0 v2.7.7
(cherry picked from commit eb34bf364c)
2024-06-11 07:31:12 +02:00
Remi Collet
69226b1baf v2.7.6
(cherry picked from commit 474ee51ec2)
2024-05-13 11:21:45 +02:00
Remi Collet
648f9a4472 v2.7.4
(cherry picked from commit 704a77856c)
2024-04-23 07:59:49 +02:00
Remi Collet
a86a23dc15 v2.7.2
(cherry picked from commit 289c869f72)
2024-03-12 07:21:50 +01:00
Remi Collet
9bfd16a06d v2.7.1
(cherry picked from commit a3accb1139)
(cherry picked from commit 8ae4fdc84d)
2024-02-12 10:34:43 +01:00
Remi Collet
0746ecdaa6 v2.6.6
(cherry picked from commit 85f376e77b)
2023-12-11 07:03:19 +01:00
Remi Collet
fa33605ec2 v2.6.5
(cherry picked from commit c2d8866cfc)
2023-10-06 10:44:34 +02:00
Remi Collet
7cdf3f8ff0 v2.6.4
(cherry picked from commit 49525f29c8)
2023-09-29 14:35:22 +02:00
Remi Collet
eb78d9f971 v2.6.3
(cherry picked from commit d10a9845d4)
2023-09-15 13:32:29 +02:00
Remi Collet
dadaccf5c5 v2.6.2
(cherry picked from commit bbab13e277)
2023-09-04 07:01:02 +02:00
Remi Collet
70dcf96a13 v2.6.1
(cherry picked from commit d61d8841f8)
2023-09-01 15:36:54 +02:00
Remi Collet
4f2eb42a60 v2.6.0
(cherry picked from commit bf124da269)
(cherry picked from commit f04fbd49ac)
2023-09-01 11:23:04 +02:00
Remi Collet
cd389d4cc9 v2.5.8
(cherry picked from commit e66ada18fd)
2023-06-12 07:41:52 +02:00
Remi Collet
b0195b87ca v2.5.7
(cherry picked from commit 553ae0c0f3)
2023-05-24 16:17:29 +02:00
Remi Collet
c2564bd91a v2.5.6
(cherry picked from commit 928b46e1be)
2023-05-24 11:10:21 +02:00
Remi Collet
fc0f742689 v2.5.5
(cherry picked from commit ec74b09b60)
2023-03-21 16:13:44 +01:00
Remi Collet
0b379efac1 v2.5.4
(cherry picked from commit ad2f2d8ca1)
2023-02-15 14:44:31 +01:00
Remi Collet
3712a74459 v2.5.3
(cherry picked from commit de254c8f26)
(cherry picked from commit 8d174bdc34)
2023-02-10 14:49:41 +01:00
Remi Collet
b42a77a4bf v2.5.2
(cherry picked from commit 0bf323a92a)
(cherry picked from commit 7aa5f3bf40)
2023-02-06 07:45:48 +01:00
Remi Collet
917cc6b99f v2.5.1
(cherry picked from commit 36824f75ab)
2022-12-22 16:46:23 +01:00
Remi Collet
811fa8248f v2.5..0
(cherry picked from commit 0c41f6ede5)
2022-12-20 13:47:44 +01:00
Remi Collet
e0ee88b6ef v2.4.4
(cherry picked from commit c35955528a)
2022-10-28 07:52:05 +02:00
Remi Collet
2dabe979ec v2.4.3
(cherry picked from commit a8d6f101ec)
2022-10-17 10:05:42 +02:00
Remi Collet
b5838c01df v2.4.2
(cherry picked from commit cb8a0525a5)
2022-09-15 08:07:58 +02:00
Remi Collet
870170dec6 v2.4.1
(cherry picked from commit fc3013e4b4)
(cherry picked from commit a234b22f2d)
(cherry picked from commit 03d8b2ff22)
2022-09-08 10:34:56 +02:00
Remi Collet
170a42baf7 v2.4.0
(cherry picked from commit 6384f21cf8)
(cherry picked from commit 1a972597d2)
2022-08-16 16:57:58 +02:00
Remi Collet
d89b6ea261 v2.3.10
(cherry picked from commit 8e2a752dad)
2022-07-18 08:13:22 +02:00
Remi Collet
63b13a894d v2.3.9
(cherry picked from commit c3d8b5a6ff)
2022-07-05 17:48:41 +02:00
Remi Collet
01d21541d1 update to 2.3.8
add bash completion file (for upcoming 2.4)

(cherry picked from commit 6a0116f61b)
2022-07-01 14:11:45 +02:00
Remi Collet
733920d255 v2.3.7
(cherry picked from commit d6eab73de5)
2022-06-07 07:09:18 +02:00
Remi Collet
b07a6aad5d v2.3.6
(cherry picked from commit 47a00de703)

refresh patch

(cherry picked from commit 2f15f97b44)
2022-06-02 07:20:09 +02:00
Remi Collet
9f0eb749a1 v2.3.5
(cherry picked from commit ac236cf433)
2022-04-14 07:32:04 +02:00
Remi Collet
1974e28cb4 v2.3.4
(cherry picked from commit aaad9a1ed5)
2022-04-11 08:03:53 +02:00
Remi Collet
be0840d495 v2.3.3
(cherry picked from commit eff5be53fb)
2022-04-04 08:22:14 +02:00
Remi Collet
d5852115af v2.3.2
(cherry picked from commit aa563f58c7)
2022-03-31 07:56:52 +02:00
Remi Collet
418383cdd9 update to 2.3.0
always use bundled libraries
  as symfony/* 5.4 and composer/pcre 2 are not available

(cherry picked from commit 10827d5375)
2022-03-30 13:59:25 +02:00
Remi Collet
c7f480677b v2.2.10
(cherry picked from commit 99e9ef55ce)
2022-03-30 07:42:17 +02:00
Remi Collet
688346bbf6 v2.2.9
(cherry picked from commit 26c47b0acf)
2022-03-16 08:03:50 +01:00
Remi Collet
6769264671 v2.2.8 2022-03-15 14:07:17 +01:00
6 changed files with 347 additions and 360 deletions

84
composer-bash-completion Normal file
View file

@ -0,0 +1,84 @@
# 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.8.12")
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 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()
--- ./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
{
+ // As XDG is very patially implemted
+ // As XDG is very partially implemented
+ // resulting in command/code in ~/.config
+ return false;
+
foreach (array_keys($_SERVER) as $key) {
if (strpos($key, 'XDG_') === 0) {
if (strpos((string) $key, 'XDG_') === 0) {
return true;

View file

@ -1,43 +1,19 @@
diff -up ./bin/composer.rpm ./bin/composer
--- ./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 !== '
--- ./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) {
}
setlocale(LC_ALL, 'C');
-require __DIR__.'/../src/bootstrap.php';
+require '/usr/share/php/Composer/autoload.php';
+require '/usr/share/composer/src/bootstrap.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 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
--- ./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
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,98 +22,24 @@ diff -up ./src/Composer/InstalledVersions.php.rpm ./src/Composer/InstalledVersio
self::$installed = include __DIR__ . '/installed.php';
} else {
self::$installed = array();
@@ -337,7 +337,7 @@ class InstalledVersions
@@ -341,7 +341,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')) {
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
/** @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
@@ -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
+ $caBundleFile = '/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'; // System CA, always
// cURL does not understand 'phar://' paths
// see https://github.com/composer/ca-bundle/issues/10

View file

@ -1,54 +1,44 @@
# remirepo/fedora spec file for composer
#
# Copyright (c) 2015-2022 Remi Collet
# License: CC-BY-SA
# http://creativecommons.org/licenses/by-sa/4.0/
# SPDX-FileCopyrightText: Copyright 2015-2025 Remi Collet
# SPDX-License-Identifier: CECILL-2.1
# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
#
# Please, preserve the changelog entries
#
# For compatibility with SCL
%undefine __brp_mangle_shebangs
%if 0%{?fedora}
%bcond_without tests
%bcond_without syslib
%else
%bcond_with tests
%bcond_with syslib
%endif
%global gh_commit 061d154dfdde157cbf453c4695e6af21c0e93903
%global gh_commit 3e38919bc9a2c3c026f2151b5e56d04084ce8f0b
%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.6.0
%global run_version 2.2.2
%global upstream_version 2.2.7
%global upstream_version 2.8.12
#global upstream_prever RC1
#global upstream_lower rc1
%global symfony_prefix php-symfony4
%global symfony_path %{_datadir}/php/Symfony4
%global symfony_min 4.4
%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
# SPDX: 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
# Create a git snapshot with dependencies
Source5: makesrc.sh
# Use our autoloader, resources path, fix for tests
@ -61,98 +51,33 @@ BuildArch: noarch
BuildRequires: php(language) >= 7.2.5
BuildRequires: php-cli
BuildRequires: php-json
%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
BuildRequires: pkgconfig(bash-completion)
BuildRequires: composer-generators
# 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 || ^3.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"
# "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) < 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: 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.2.9
Provides: bundled(php-composer-spdx-licenses) = 1.5.6
Provides: bundled(php-composer-xdebug-handler) = 3.0.2
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.3
Provides: bundled(php-symfony-deprecation-contracts) = v2.5.0
Provides: bundled(php-symfony-filesystem) = v5.4.3
Provides: bundled(php-symfony-finder) = v5.4.3
Provides: bundled(php-symfony-polyfill-ctype) = v1.24.0
Provides: bundled(php-symfony-polyfill-intl-grapheme) = v1.24.0
Provides: bundled(php-symfony-polyfill-intl-normalizer) = v1.24.0
Provides: bundled(php-symfony-polyfill-mbstring) = v1.24.0
Provides: bundled(php-symfony-polyfill-php73) = v1.24.0
Provides: bundled(php-symfony-polyfill-php80) = v1.24.0
Provides: bundled(php-symfony-process) = v5.4.3
Provides: bundled(php-symfony-service-contracts) = v2.5.0
Provides: bundled(php-symfony-string) = v5.4.3
%endif
Requires: /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
# 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",
@ -182,12 +107,14 @@ 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,
@ -199,97 +126,20 @@ Documentation: https://getcomposer.org/doc/
%prep
%setup -q -n %{gh_project}-%{gh_commit}
%patch0 -p1 -b .rpm
%patch1 -p1 -b .noxdg
%patch -P0 -p1 -b .rpm
%patch -P1 -p1 -b .noxdg
find . \( -name \*.rpm -o -name \*noxdg \) -delete -print
if grep -r '\.\./res'; then
: Patch need to fixed
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([
[ /* 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
rm vendor/composer/ca-bundle/res/cacert.pem
: 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/Composer/autoload.php";
include "src/bootstrap.php";
if (version_compare(Plugin\PluginInterface::PLUGIN_API_VERSION, "%{api_version}")) {
printf("Plugin API version is %s, expected %s\n", Plugin\PluginInterface::PLUGIN_API_VERSION, "%{api_version}");
exit(1);
@ -301,81 +151,231 @@ if (version_compare(Composer::RUNTIME_API_VERSION, "%{run_version}")) {
%build
# Nothing
: Nothing to build
%install
: Profile scripts
install -Dpm 644 %{SOURCE1} %{buildroot}%{bashcompdir}/%{name}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d
install -m 644 %{SOURCE3} %{SOURCE4} %{buildroot}%{_sysconfdir}/profile.d/
: Library
mkdir -p %{buildroot}%{_datadir}/php
cp -pr src/* %{buildroot}%{_datadir}/php
: Library autoloader for compatibility
mkdir -p %{buildroot}%{_datadir}/php/Composer
ln -s ../../composer/vendor/autoload.php %{buildroot}%{_datadir}/php/Composer/autoload.php
: 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
: Sources
mkdir -p %{buildroot}%{_datadir}/%{name}
cp -pr src res vendor LICENSE\
%{buildroot}%{_datadir}/%{name}/
: Command
install -Dpm 755 bin/%{name} %{buildroot}%{_bindir}/%{name}
: Licenses
ln -sf ../../%{name}/LICENSE LICENSE
cd vendor
for lic in */*/LICENSE
do dir=$(dirname $lic)
own=$(dirname $dir)
prj=$(basename $dir)
ln -sf ../../composer/vendor/$own/$prj/LICENSE ../$own-$prj-LICENSE
done
%check
%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
: Check autoloader
php -r '
include "%{buildroot}%{_datadir}/%{name}/src/bootstrap.php";
exit (class_exists("Composer\\Composer") ? 0 : 1);
'
: Check compatibility autoloader
php -r '
include "%{buildroot}%{_datadir}/php/Composer/autoload.php";
exit (class_exists("Composer\\Composer") ? 0 : 2);
'
%files
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc *.md doc
%license *LICENSE
%doc *.md
%doc doc
%doc composer.json
%config(noreplace) %{_sysconfdir}/profile.d/%{name}.*
%{_bindir}/%{name}
%{_datadir}/php/Composer
%{_datadir}/%{name}
%{bashcomproot}
%changelog
* 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
* 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
* 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
* 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
* 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
* 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 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
* 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
* Wed Mar 30 2022 Remi Collet <remi@remirepo.net> - 2.2.10-1
- update to 2.2.10
* Wed Mar 16 2022 Remi Collet <remi@remirepo.net> - 2.2.9-1
- update to 2.2.9
* Tue Mar 15 2022 Remi Collet <remi@remirepo.net> - 2.2.8-1
- update to 2.2.8
* Fri Feb 25 2022 Remi Collet <remi@remirepo.net> - 2.2.7-1
- update to 2.2.7

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 ]; then
if [ -f $NAME-$VERSION$PREVER-$SHORT.tgz -a "$1" != "-f" ]; 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,9 +22,10 @@ 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 src/Composer/vendor/composer/installed.json ../
cp vendor/composer/installed.json ../
# bash completion
bin/composer completion bash >../composer-bash-completion
popd
echo "Archiving..."

View file

@ -1 +1 @@
SHA512 (composer-2.2.7-061d154.tgz) = faa7281e153ea21e9b93ce42efcce01e54cea1978dbfa56b65637ca8b64d811cdb8a110d863a5b1e2c824337d3dd7b5ea4ca943192015b18ebf99c3aa6c948d6
SHA512 (composer-2.8.12-3e38919.tgz) = a059574c12c74002ca1bc330e19355a8deb3fc94253c158e47b899dbb9fddefc888fed043950e8afcce1c8e688fac7789ed81855a214931fc12557b98eafe3ae