summaryrefslogtreecommitdiff
path: root/composer.spec
diff options
context:
space:
mode:
Diffstat (limited to 'composer.spec')
-rw-r--r--composer.spec213
1 files changed, 213 insertions, 0 deletions
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