diff --git a/composer-bash-completion b/composer-bash-completion index d0d01b7..7a9b48d 100644 --- a/composer-bash-completion +++ b/composer-bash-completion @@ -7,7 +7,7 @@ _sf_composer() { # Use newline as only separator to allow space in completion values - IFS=$'\n' + local IFS=$'\n' local sf_cmd="${COMP_WORDS[0]}" # for an alias, get the real script behind it @@ -25,7 +25,7 @@ _sf_composer() { 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.6.6") + local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-S2.8.2") for w in ${words[@]}; do w=$(printf -- '%b' "$w") # remove quotes from typed values diff --git a/composer-noxdg.patch b/composer-noxdg.patch index 73195e7..2927848 100644 --- a/composer-noxdg.patch +++ b/composer-noxdg.patch @@ -1,14 +1,14 @@ diff -up ./src/Composer/Factory.php.noxdg ./src/Composer/Factory.php ---- ./src/Composer/Factory.php.noxdg 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 +--- ./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; diff --git a/composer-rpm.patch b/composer-rpm.patch index 162dcdd..fdc97ac 100644 --- a/composer-rpm.patch +++ b/composer-rpm.patch @@ -1,42 +1,18 @@ diff -up ./bin/composer.rpm ./bin/composer ---- ./bin/composer.rpm 2023-09-01 11:05:16.000000000 +0200 -+++ ./bin/composer 2023-09-01 11:05:28.156309389 +0200 -@@ -11,7 +11,7 @@ if (PHP_VERSION_ID < 70205) { +--- ./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 2023-09-01 11:05:16.000000000 +0200 -+++ ./src/Composer/Autoload/AutoloadGenerator.php 2023-09-01 11:05:28.156309389 +0200 -@@ -448,7 +448,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, [], [ -diff -up ./src/Composer/Compiler.php.rpm ./src/Composer/Compiler.php ---- ./src/Composer/Compiler.php.rpm 2023-09-01 11:05:16.000000000 +0200 -+++ ./src/Composer/Compiler.php 2023-09-01 11:05:28.156309389 +0200 -@@ -105,7 +105,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 2023-09-01 11:05:16.000000000 +0200 -+++ ./src/Composer/InstalledVersions.php 2023-09-01 11:05:28.156309389 +0200 +--- ./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, @@ -55,30 +31,9 @@ diff -up ./src/Composer/InstalledVersions.php.rpm ./src/Composer/InstalledVersio /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ $required = require __DIR__ . '/installed.php'; self::$installed = $required; -diff -up ./src/Composer/Json/JsonFile.php.rpm ./src/Composer/Json/JsonFile.php ---- ./src/Composer/Json/JsonFile.php.rpm 2023-09-01 11:05:16.000000000 +0200 -+++ ./src/Composer/Json/JsonFile.php 2023-09-01 11:06:16.767233012 +0200 -@@ -40,7 +40,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'; - - public const INDENT_DEFAULT = ' '; - -@@ -229,7 +229,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/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 2023-08-30 11:31:38.000000000 +0200 -+++ ./src/Composer/vendor/composer/ca-bundle/src/CaBundle.php 2023-09-01 11:05:28.156309389 +0200 +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() diff --git a/composer.spec b/composer.spec index 88dff81..686d432 100644 --- a/composer.spec +++ b/composer.spec @@ -1,16 +1,16 @@ # remirepo/fedora spec file for composer # -# Copyright (c) 2015-2023 Remi Collet +# Copyright (c) 2015-2024 Remi Collet # License: CC-BY-SA-4.0 # http://creativecommons.org/licenses/by-sa/4.0/ # # Please, preserve the changelog entries # -# For compatibility with SCL -%undefine __brp_mangle_shebangs -%global gh_commit 683557bd2466072777309d039534bb1332d0dda5 +%bcond_with generators + +%global gh_commit 2a7c71266b2545a3bed9f4860734081963f6e688 %global gh_short %(c=%{gh_commit}; echo ${c:0:7}) %global gh_branch 2.0-dev %global gh_owner composer @@ -18,7 +18,7 @@ %global api_version 2.6.0 %global run_version 2.2.2 -%global upstream_version 2.6.6 +%global upstream_version 2.8.3 #global upstream_prever RC1 #global upstream_lower rc1 @@ -40,7 +40,7 @@ Source0: %{gh_project}-%{upstream_version}%{?upstream_prever}-%{gh_short} 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 @@ -54,6 +54,9 @@ BuildRequires: php(language) >= 7.2.5 BuildRequires: php-cli BuildRequires: php-json BuildRequires: pkgconfig(bash-completion) +%if %{with generators} +BuildRequires: composer-generators +%endif # From composer.json, "require": { # "php": "^7.2.5 || ^8.0", @@ -78,36 +81,6 @@ Requires: php(language) >= 7.2.5 Requires: php-cli # System certificates Requires: ca-certificates -# Bundled libraries -# License MIT -Provides: bundled(php-composer-ca-bundle) = 1.3.7 -Provides: bundled(php-composer-class-map-generator) = 1.1.0 -Provides: bundled(php-composer-metadata-minifier) = 1.0.0 -Provides: bundled(php-composer-pcre) = 2.1.1 -Provides: bundled(php-composer-semver) = 3.4.0 -Provides: bundled(php-composer-spdx-licenses) = 1.5.8 -Provides: bundled(php-composer-xdebug-handler) = 3.0.3 -Provides: bundled(php-justinrainbow-json-schema) = v5.2.13 -Provides: bundled(php-psr-container) = 1.1.1 -Provides: bundled(php-psr-log) = 1.1.4 -Provides: bundled(php-react-promise) = v3.1.0 -Provides: bundled(php-seld-jsonlint) = 1.10.0 -Provides: bundled(php-seld-phar-utils) = 1.2.1 -Provides: bundled(php-seld-signal-handler) = 2.0.2 -Provides: bundled(php-symfony-console) = v5.4.32 -Provides: bundled(php-symfony-deprecation-contracts) = v2.5.2 -Provides: bundled(php-symfony-filesystem) = v5.4.25 -Provides: bundled(php-symfony-finder) = v5.4.27 -Provides: bundled(php-symfony-polyfill-ctype) = v1.28.0 -Provides: bundled(php-symfony-polyfill-intl-grapheme) = v1.28.0 -Provides: bundled(php-symfony-polyfill-intl-normalizer) = v1.28.0 -Provides: bundled(php-symfony-polyfill-mbstring) = v1.28.0 -Provides: bundled(php-symfony-polyfill-php73) = v1.28.0 -Provides: bundled(php-symfony-polyfill-php80) = v1.28.0 -Provides: bundled(php-symfony-polyfill-php81) = v1.28.0 -Provides: bundled(php-symfony-process) = v5.4.28 -Provides: bundled(php-symfony-service-contracts) = v2.5.2 -Provides: bundled(php-symfony-string) = v5.4.32 # From composer.json, suggest # "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -138,8 +111,40 @@ Requires: php-tokenizer Requires: php-xsl Requires: php-zlib +# Bundled libraries +%if %{without generators} +# License MIT +Provides: bundled(php-composer(composer/ca-bundle)) = 1.5.3 +Provides: bundled(php-composer(composer/class-map-generator)) = 1.4.0 +Provides: bundled(php-composer(composer/metadata-minifier)) = 1.0.0 +Provides: bundled(php-composer(composer/pcre)) = 2.3.2 +Provides: bundled(php-composer(composer/semver)) = 3.4.3 +Provides: bundled(php-composer(composer/spdx-licenses)) = 1.5.8 +Provides: bundled(php-composer(composer/xdebug-handler)) = 3.0.5 +Provides: bundled(php-composer(justinrainbow/json-schema)) = 5.3.0 +Provides: bundled(php-composer(psr/container)) = 1.1.1 +Provides: bundled(php-composer(psr/log)) = 1.1.4 +Provides: bundled(php-composer(react/promise)) = v3.2.0 +Provides: bundled(php-composer(seld/jsonlint)) = 1.11.0 +Provides: bundled(php-composer(seld/phar-utils)) = 1.2.1 +Provides: bundled(php-composer(seld/signal-handler)) = 2.0.2 +Provides: bundled(php-composer(symfony/console)) = v5.4.47 +Provides: bundled(php-composer(symfony/deprecation-contracts)) = v2.5.3 +Provides: bundled(php-composer(symfony/filesystem)) = v5.4.45 +Provides: bundled(php-composer(symfony/finder)) = v5.4.45 +Provides: bundled(php-composer(symfony/polyfill-ctype)) = v1.31.0 +Provides: bundled(php-composer(symfony/polyfill-intl-grapheme)) = v1.31.0 +Provides: bundled(php-composer(symfony/polyfill-intl-normalizer)) = v1.31.0 +Provides: bundled(php-composer(symfony/polyfill-mbstring)) = v1.31.0 +Provides: bundled(php-composer(symfony/polyfill-php73)) = v1.31.0 +Provides: bundled(php-composer(symfony/polyfill-php80)) = v1.31.0 +Provides: bundled(php-composer(symfony/polyfill-php81)) = v1.31.0 +Provides: bundled(php-composer(symfony/process)) = v5.4.47 +Provides: bundled(php-composer(symfony/service-contracts)) = v2.5.3 +Provides: bundled(php-composer(symfony/string)) = v5.4.47 # Composer library Provides: php-composer(composer/composer) = %{version} +%endif # Special internal for Plugin API Provides: php-composer(composer-plugin-api) = %{api_version} Provides: php-composer(composer-runtime-api) = %{run_version} @@ -159,23 +164,12 @@ Documentation: https://getcomposer.org/doc/ %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 - -: 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 +rm vendor/composer/ca-bundle/res/cacert.pem +%if %{without generators} : List bundled libraries and Licenses php -r ' - $pkgs = file_get_contents("src/Composer/vendor/composer/installed.json"); + $pkgs = file_get_contents("vendor/composer/installed.json"); $pkgs = json_decode($pkgs, true); if (!is_array($pkgs) || !isset($pkgs["packages"])) { echo "cant decode json file\n"; @@ -185,13 +179,14 @@ php -r ' 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"]); + $res[$lic][] = sprintf("Provides: bundled(php-composer(%s)) = %s", $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 sed -e '/BRANCH_ALIAS_VERSION/s/@package_branch_alias_version@//' \ @@ -200,7 +195,7 @@ sed -e '/BRANCH_ALIAS_VERSION/s/@package_branch_alias_version@//' \ : 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); @@ -212,7 +207,7 @@ if (version_compare(Composer::RUNTIME_API_VERSION, "%{run_version}")) { %build -# Nothing +: Nothing to build %install @@ -221,25 +216,46 @@ 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 +: 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} @@ -249,6 +265,37 @@ install -Dpm 755 bin/%{name} %{buildroot}%{_bindir}/%{name} %changelog +* Mon Nov 18 2024 Remi Collet - 2.8.3-1 +- update to 2.8.3 + +* Wed Oct 30 2024 Remi Collet - 2.8.2-3 +- keep upstream layout for simplicity + +* Wed Oct 30 2024 Remi Collet - 2.8.2-2 +- update to 2.8.2 +- fix diagnose command + +* Wed Sep 4 2024 Remi Collet - 2.7.9-1 +- update to 2.7.9 + +* Fri Aug 23 2024 Remi Collet - 2.7.8-1 +- update to 2.7.8 + +* Tue Jun 11 2024 Remi Collet - 2.7.7-1 +- update to 2.7.7 + +* Sun May 5 2024 Remi Collet - 2.7.6-1 +- update to 2.7.6 + +* Tue Apr 23 2024 Remi Collet - 2.7.4-1 +- update to 2.7.4 + +* Tue Mar 12 2024 Remi Collet - 2.7.2-1 +- update to 2.7.2 + +* Sat Feb 10 2024 Remi Collet - 2.7.1-1 +- update to 2.7.1 + * Sat Dec 9 2023 Remi Collet - 2.6.6-1 - update to 2.6.6 diff --git a/makesrc.sh b/makesrc.sh index 930ec0b..dc25efb 100755 --- a/makesrc.sh +++ b/makesrc.sh @@ -8,7 +8,7 @@ PREVER=$(sed -n '/^%global upstream_prever/{s/.* //;p}' $NAME.spec) COMMIT=$(sed -n '/^%global gh_commit/{s/.* //;p}' $NAME.spec) SHORT=${COMMIT:0:7} -if [ -f $NAME-$VERSION$PREVER-$SHORT.tgz ]; 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..." diff --git a/sources b/sources index 7e0757a..ec9255c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (composer-2.6.6-683557b.tgz) = 2794151763356a7b2c11a3f864a4aa892e7f486ffabbf75aaab886237e95594e52e1a4a4769bfb7689e458f83bd0d86c02eea1c437841fda2674020f1b30830e +SHA512 (composer-2.8.3-2a7c712.tgz) = 3fa1687527d531cb83f1f269825ca8d213f59990532542f08021f6bcdb6d56539ac874810e609f541f12e19c26541a44c98f9d39a3757056f2f1c80a4356159e