summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-09-04 03:26:47 +0000
committerCoprDistGit <infra@openeuler.org>2023-09-04 03:26:47 +0000
commit3e042b3852d909b9a3f0f985e83a58ec332dfad4 (patch)
tree48f9ac356c83a8f8c36e5fde8754722c965f61f3
parentd8522a1aafc5b1a66f3c5c59665cf84c6a2eac26 (diff)
automatic import of composeropeneuler23.03
-rw-r--r--.gitignore1
-rw-r--r--composer-add-huaweicloud-repository.patch14
-rw-r--r--composer-bash-completion84
-rw-r--r--composer-noxdg.patch14
-rw-r--r--composer-rpm.patch90
-rw-r--r--composer.csh9
-rw-r--r--composer.sh11
-rw-r--r--composer.spec213
-rwxr-xr-xmakesrc.sh39
-rw-r--r--sources1
10 files changed, 476 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..3a4e581 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/composer-2.6.2-623e5e1.tgz
diff --git a/composer-add-huaweicloud-repository.patch b/composer-add-huaweicloud-repository.patch
new file mode 100644
index 0000000..2754820
--- /dev/null
+++ b/composer-add-huaweicloud-repository.patch
@@ -0,0 +1,14 @@
+--- a/src/Composer/Config.php.orig 2023-02-25 11:59:19.951057271 +0800
++++ b/src/Composer/Config.php 2023-02-25 12:03:48.490871158 +0800
+@@ -86,6 +86,11 @@
+
+ /** @var array<string, mixed> */
+ public static $defaultRepositories = [
++ 'huaweicloud.com' => [
++ 'type' => 'composer',
++ 'url' => 'https://repo.huaweicloud.com/repository/php/',
++ 'canonical' => false,
++ ],
+ 'packagist.org' => [
+ 'type' => 'composer',
+ 'url' => 'https://repo.packagist.org',
diff --git a/composer-bash-completion b/composer-bash-completion
new file mode 100644
index 0000000..c75682d
--- /dev/null
+++ b/composer-bash-completion
@@ -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
+ 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.6.2")
+ for w in ${words[@]}; do
+ w=$(printf -- '%b' "$w")
+ # remove quotes from typed values
+ quote="${w:0:1}"
+ if [ "$quote" == \' ]; then
+ w="${w%\'}"
+ w="${w#\'}"
+ elif [ "$quote" == \" ]; then
+ w="${w%\"}"
+ w="${w#\"}"
+ fi
+ # empty values are ignored
+ if [ ! -z "$w" ]; then
+ completecmd+=("-i$w")
+ fi
+ done
+
+ local sfcomplete
+ if sfcomplete=$(${completecmd[@]} 2>&1); then
+ local quote suggestions
+ quote=${cur:0:1}
+
+ # Use single quotes by default if suggestions contains backslash (FQCN)
+ if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then
+ quote=\'
+ fi
+
+ if [ "$quote" == \' ]; then
+ # single quotes: no additional escaping (does not accept ' in values)
+ suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done)
+ elif [ "$quote" == \" ]; then
+ # double quotes: double escaping for \ $ ` "
+ suggestions=$(for s in $sfcomplete; do
+ s=${s//\\/\\\\}
+ s=${s//\$/\\\$}
+ s=${s//\`/\\\`}
+ s=${s//\"/\\\"}
+ printf $'%q%q%q\n' "$quote" "$s" "$quote";
+ done)
+ else
+ # no quotes: double escaping
+ suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done)
+ fi
+ COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur")))
+ __ltrim_colon_completions "$cur"
+ else
+ if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then
+ >&2 echo
+ >&2 echo $sfcomplete
+ fi
+
+ return 1
+ fi
+}
+
+complete -F _sf_composer composer
diff --git a/composer-noxdg.patch b/composer-noxdg.patch
new file mode 100644
index 0000000..73195e7
--- /dev/null
+++ b/composer-noxdg.patch
@@ -0,0 +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
+
+ private static function useXdg(): bool
+ {
++ // As XDG is very patially implemted
++ // resulting in command/code in ~/.config
++ return false;
++
+ foreach (array_keys($_SERVER) as $key) {
+ if (strpos($key, 'XDG_') === 0) {
+ return true;
diff --git a/composer-rpm.patch b/composer-rpm.patch
new file mode 100644
index 0000000..162dcdd
--- /dev/null
+++ b/composer-rpm.patch
@@ -0,0 +1,90 @@
+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) {
+ }
+
+ setlocale(LC_ALL, 'C');
+-require __DIR__.'/../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 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
+@@ -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
+- if (substr(__DIR__, -8, 1) !== 'C') {
++ if (substr(__DIR__, -8, 1) !== 'C' && is_file(__DIR__ . '/installed.php')) {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+@@ -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')) {
+ /** @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 ./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
+@@ -125,7 +125,7 @@ class CaBundle
+ */
+ public static function getBundledCaBundlePath()
+ {
+- $caBundleFile = __DIR__.'/../res/cacert.pem';
++ $caBundleFile = '/etc/pki/tls/certs/ca-bundle.crt'; // System CA, always
+
+ // cURL does not understand 'phar://' paths
+ // see https://github.com/composer/ca-bundle/issues/10
diff --git a/composer.csh b/composer.csh
new file mode 100644
index 0000000..b57b1d0
--- /dev/null
+++ b/composer.csh
@@ -0,0 +1,9 @@
+# Composer initialization script
+
+# Add path to commands installed using "composer global require ..."
+if ( ${euid} > 0 ) then
+ if ( "${path}" !~ *${HOME}/.composer/vendor/bin* ) then
+ set path = ( $path ${HOME}/.composer/vendor/bin )
+ endif
+endif
+
diff --git a/composer.sh b/composer.sh
new file mode 100644
index 0000000..c75753c
--- /dev/null
+++ b/composer.sh
@@ -0,0 +1,11 @@
+# Composer initialization script
+
+# Add path to commands installed using "composer global require ..."
+if [ "${EUID:-0}" != "0" ]; then
+ case :$PATH: in
+ *:${HOME}/.composer/vendor/bin:*) ;;
+ *) PATH=$PATH:${HOME}/.composer/vendor/bin ;;
+ esac
+ export PATH
+fi
+
diff --git a/composer.spec b/composer.spec
new file mode 100644
index 0000000..8789216
--- /dev/null
+++ b/composer.spec
@@ -0,0 +1,213 @@
+%undefine __brp_mangle_shebangs
+
+%global gh_commit 623e5e1de055e65bc6c3c61b8348dc4662d75e2b
+%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.6.0
+%global run_version 2.2.2
+
+%global upstream_version 2.6.2
+
+%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}
+Release: 1
+Summary: Dependency Manager for PHP
+
+# SPDX: composer and all dependencies are MIT
+License: MIT
+URL: https://getcomposer.org/
+Source0: %{gh_project}-%{upstream_version}-%{gh_short}.tgz
+# Profile scripts
+Source1: %{name}-bash-completion
+Source3: %{name}.sh
+Source4: %{name}.csh
+# Get a git snapshot to retrieve the test suite
+Source5: makesrc.sh
+
+# Use our autoloader, resources path, fix for tests
+Patch0: %{name}-rpm.patch
+# Disable XDG support as only partially implemented
+Patch1: %{name}-noxdg.patch
+# Use Huaweicloud mirror by default
+Patch10: composer-add-huaweicloud-repository.patch
+
+BuildArch: noarch
+# platform set in makesrc.sh
+BuildRequires: php(language) >= 7.2.5
+BuildRequires: php-cli
+BuildRequires: pkgconfig(bash-completion)
+
+Requires: php(language) >= 7.2.5
+Requires: php-cli
+Supplements: 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.0
+Provides: bundled(php-composer-semver) = 3.4.0
+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) = v3.0.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.28
+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.26
+
+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-libxml
+Requires: php-mbstring
+Requires: php-pcntl
+Requires: php-pcre
+Requires: php-phar
+Requires: php-posix
+Requires: php-reflection
+Requires: php-spl
+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}
+
+
+%description
+Composer helps you declare, manage and install dependencies of PHP projects,
+ensuring you have the right stack everywhere.
+
+Documentation: https://getcomposer.org/doc/
+
+%prep
+%autosetup -p1 -n %{gh_project}-%{gh_commit}
+
+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
+
+: 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));
+ }
+'
+
+: fix reported version
+sed -e '/BRANCH_ALIAS_VERSION/s/@package_branch_alias_version@//' \
+ -i src/Composer/Composer.php
+
+: check Plugin API version
+php -r '
+namespace Composer;
+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);
+}
+if (version_compare(Composer::RUNTIME_API_VERSION, "%{run_version}")) {
+ printf("Runtime API version is %s, expected %s\n", Composer::RUNTIME_API_VERSION, "%{run_version}");
+ exit(1);
+}'
+
+
+%build
+# Nothing
+
+
+%install
+install -Dpm 644 %{SOURCE1} %{buildroot}%{bashcompdir}/%{name}
+mkdir -p %{buildroot}%{_sysconfdir}/profile.d
+install -m 644 %{SOURCE3} %{SOURCE4} %{buildroot}%{_sysconfdir}/profile.d/
+
+mkdir -p %{buildroot}%{_datadir}/php
+cp -pr src/* %{buildroot}%{_datadir}/php
+
+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
+
+install -Dpm 755 bin/%{name} %{buildroot}%{_bindir}/%{name}
+
+
+%files
+%license LICENSE
+%doc *.md doc
+%doc composer.json
+%config(noreplace) %{_sysconfdir}/profile.d/%{name}.*
+%{_bindir}/%{name}
+%{_datadir}/php/Composer
+%{_datadir}/%{name}
+%{bashcomproot}
+
+%changelog
+* Mon Sep 04 2023 Funda Wang <fundawang@yeah.net> - 2.6.2-1
+- New version 2.6.2
+
+* Mon Jul 10 2023 Funda Wang <fundawang@yeah.net> - 2.5.8-1
+- Import package from Remi
diff --git a/makesrc.sh b/makesrc.sh
new file mode 100755
index 0000000..cb5e069
--- /dev/null
+++ b/makesrc.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+NAME=$(sed -n '/^Name:/{s/.* //;p}' *.spec)
+OWNER=$(sed -n '/^%global gh_owner/{s/.* //;p}' $NAME.spec)
+PROJECT=$(sed -n '/^%global gh_project/{s/.* //;p}' $NAME.spec)
+VERSION=$(sed -n '/^%global upstream_version/{s/.* //;p}' $NAME.spec)
+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
+ echo skip $NAME-$VERSION$PREVER-$SHORT.tgz already here
+else
+ echo -e "\nCreate git snapshot\nName=$NAME, Owner=$OWNER, Project=$PROJECT, Version=$VERSION$PREVER\n"
+
+ echo "Cloning..."
+ git clone https://github.com/$OWNER/$PROJECT.git $PROJECT-$COMMIT
+
+ echo "Getting commit..."
+ pushd $PROJECT-$COMMIT
+ git checkout $COMMIT || exit 1
+ cp composer.json ../composer.json
+ composer config platform.php 7.2.5
+ rm composer.lock
+ export COMPOSER_VENDOR_DIR=src/Composer/vendor
+ composer install --no-interaction --no-progress --no-dev --optimize-autoloader
+ cp src/Composer/vendor/composer/installed.json ../
+ # bash completion
+ ln -sf Composer/vendor/autoload.php src/bootstrap.php
+ bin/composer completion bash >../composer-bash-completion
+ popd
+
+ echo "Archiving..."
+ tar czf $NAME-$VERSION$PREVER-$SHORT.tgz --exclude .git $PROJECT-$COMMIT
+
+ echo "Cleaning..."
+ rm -rf $PROJECT-$COMMIT
+fi
+echo "Done."
diff --git a/sources b/sources
new file mode 100644
index 0000000..5f5154e
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+b3dc3f01102a654d0eb20df45ca06beb composer-2.6.2-623e5e1.tgz