Compare commits

..

17 commits

Author SHA1 Message Date
Remi Collet
6726d9532c v2.3.10
(cherry picked from commit 8e2a752dad)
2022-07-18 08:07:13 +02:00
Remi Collet
be646e3049 v2.3.9
(cherry picked from commit c3d8b5a6ff)
2022-07-05 17:48:12 +02:00
Remi Collet
0135dd3f70 update to 2.3.8
add bash completion file (for upcoming 2.4)

(cherry picked from commit 6a0116f61b)
2022-07-01 14:06:22 +02:00
Remi Collet
e6b311b775 v2.3.7
(cherry picked from commit d6eab73de5)
2022-06-07 07:01:25 +02:00
Remi Collet
fbe5fb1315 refresh patch
(cherry picked from commit 2f15f97b44)
2022-06-02 07:15:53 +02:00
Remi Collet
43626f55c7 v2.3.6
(cherry picked from commit 47a00de703)
2022-06-02 07:11:21 +02:00
Remi Collet
8ce47961b6 v2.3.5
(cherry picked from commit ac236cf433)
2022-04-14 07:31:30 +02:00
Remi Collet
344b52bad6 v2.3.4
(cherry picked from commit aaad9a1ed5)
2022-04-11 07:59:06 +02:00
Remi Collet
4c75923142 v2.3.3
(cherry picked from commit eff5be53fb)
2022-04-04 08:15:36 +02:00
Remi Collet
0b0a4cad4e v2.3.2
(cherry picked from commit aa563f58c7)
2022-03-31 07:51:37 +02:00
Remi Collet
72bc774bfb 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:54:48 +02:00
Remi Collet
b45ab985a5 v2.2.10
(cherry picked from commit 99e9ef55ce)
2022-03-30 07:36:14 +02:00
Remi Collet
6033cee431 v2.2.9
(cherry picked from commit 26c47b0acf)
2022-03-16 07:58:13 +01:00
Remi Collet
2e10ba5846 v2.2.8
(cherry picked from commit 6769264671)
2022-03-15 14:14:32 +01:00
Remi Collet
1586f84b54 v2.2.7
(cherry picked from commit 1d2985b4de)
2022-02-25 12:29:54 +01:00
Remi Collet
b3b9da84eb 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)
2022-02-07 10:09:01 +01:00
Remi Collet
1202c85cf8 v2.2.5
(cherry picked from commit 20b248a369)
2022-01-24 10:10:24 +01:00
6 changed files with 350 additions and 273 deletions

View file

@ -7,25 +7,22 @@
_sf_composer() {
# Use newline as only separator to allow space in completion values
local IFS=$'\n'
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
if [[ $(type -t $sf_cmd) == "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
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" "--no-interaction" "-sbash" "-c$cword" "-S2.9.3")
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

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
--- ./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 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,18 +1,42 @@
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-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');
-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-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');
+ $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-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()
- ->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
--- ./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,
@ -22,24 +46,70 @@ 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
@@ -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
- 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-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;
- 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;
@@ -219,7 +219,7 @@ class JsonFile
$isComposerSchemaFile = false;
if (null === $schemaFile) {
$isComposerSchemaFile = true;
- $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/ca-trust/extracted/pem/tls-ca-bundle.pem'; // System CA, always
+ $caBundleFile = '/etc/pki/tls/certs/ca-bundle.crt'; // System CA, always
// cURL does not understand 'phar://' paths
// see https://github.com/composer/ca-bundle/issues/10
diff -up ./tests/Composer/Test/Json/ComposerSchemaTest.php.rpm ./tests/Composer/Test/Json/ComposerSchemaTest.php
--- ./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'));
+ $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();

View file

@ -1,24 +1,38 @@
# 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
%bcond_without tests
%bcond_without syslib
%else
%bcond_with tests
%bcond_with syslib
%endif
%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.9.0
%global api_version 2.3.0
%global run_version 2.2.2
%global upstream_version 2.9.3
#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-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)
@ -30,7 +44,7 @@ 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
@ -38,7 +52,7 @@ Source0: %{gh_project}-%{upstream_version}%{?upstream_prever}-%{gh_short}
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
@ -52,54 +66,118 @@ 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.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.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) >= 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}
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",
# "composer/ca-bundle": "^1.0",
# "composer/metadata-minifier": "^1.0",
# "composer/semver": "^3.3",
# "composer/spdx-licenses": "^1.5.7",
# "composer/semver": "^3.0",
# "composer/spdx-licenses": "^1.2",
# "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",
# "justinrainbow/json-schema": "^5.2.11",
# "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/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",
# "symfony/polyfill-php81": "^1.24",
# "seld/signal-handler": "^2.0"
# "symfony/polyfill-php80": "^1.24"
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.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.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) >= 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: /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
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-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 +190,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 +207,103 @@ 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
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/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',
],
'%{_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);
}
$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}
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,7 +315,7 @@ if (version_compare(Composer::RUNTIME_API_VERSION, "%{run_version}")) {
%build
: Nothing to build
# Nothing
%install
@ -165,46 +324,65 @@ 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}
@ -214,167 +392,6 @@ php -r '
%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
@ -423,15 +440,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

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.3.10-ebac357.tgz) = 22302bfb5bb03f87567eda1fcfe906b049d43ff43862472405d13f6af472b1452834d09cb944753b740950c2d98911e6af72bb7b771c048a26cdb165b0c73659