# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 EGIT_REPO_URI="https://github.com/composer/${PN}.git" inherit edo git-r3 optfeature shell-completion DESCRIPTION="Dependency Manager for PHP" HOMEPAGE="https://github.com/composer/composer" LICENSE="MIT" SLOT="0" IUSE="curl intl ipv6 test zip" REQUIRED_USE="test? ( curl intl zip )" RESTRICT="!test? ( test )" RDEPEND="dev-lang/php:*[curl?,intl?,ssl,zlib,zip?] dev-php/composer-ca-bundle dev-php/composer-class-map-generator dev-php/composer-pcre dev-php/composer-semver dev-php/composer-spdx-licenses dev-php/fedora-autoloader dev-php/jsonlint dev-php/json-schema dev-php/metadata-minifier dev-php/phar-utils dev-php/psr-log dev-php/reactphp-promise dev-php/seld-signal-handler dev-php/symfony-console >=dev-php/symfony-filesystem-6.4.9 >=dev-php/symfony-finder-6.4.8 dev-php/symfony-polyfill-php80 dev-php/symfony-polyfill-php81 >=dev-php/symfony-process-6.4.8 dev-php/xdebug-handler" BDEPEND="dev-php/theseer-Autoload test? ( dev-php/phpunit dev-php/sebastian-object-reflector )" PATCHES=( "${FILESDIR}/${PN}"-2.7.7-autoload-resources.patch ) src_prepare() { default install -D -m 644 "${FILESDIR}"/autoload.php \ src/Composer/autoload.php || die "install failed" install -D -m 644 "${FILESDIR}"/installed.json \ res/installed.json || die "install for res failed" # change return type sed -i '/includeIfExists/s|: ?ClassLoader|: ?int|' src/bootstrap.php \ || die "sed failed for src/bootstrap.php" # mimic system path for bootstrap, assume ${S} as /usr mkdir -p composer share/php vendor || die "mkdir failed" ln -s -t composer ../res || die "ln for res failed" ln -s -t composer ../LICENSE || die "ln for license failed" # needed for bin/composer ln -s -t share/php/ ../../src/Composer || die "ln for res failed" # PSR4 load doesn't work, classmap load with exclution as in composer.json phpab -q -o vendor/autoload.php -t "${FILESDIR}"/autoload.php.tpl \ -e "tests/Composer/Test/Fixtures/*" \ -e "tests/Composer/Test/Autoload/Fixtures/*" \ -e "tests/Composer/Test/Autoload/MinimumVersionSupport/*" \ -e "tests/Composer/Test/Plugin/Fixtures/*" tests/Composer/Test \ || die "phpab failed" # disable tests eapply "${FILESDIR}/${PN}"-2.7.7-tests.patch ! use ipv6 && eapply "${FILESDIR}/${PN}"-2.7.7-test-no-ipv6.patch # tests replace vendor/autoload.php } src_compile() { local completion for completion in bash fish zsh ; do edo ./bin/composer completion "${completion}" > composer."${completion}" \ || die "completion for ${completion} failed" done } src_test() { phpunit --testdox || die "phpunit failed" } src_install() { einstalldocs insinto /usr/share/composer doins -r res LICENSE insinto /usr/share/php doins -r src/Composer dobin bin/composer newbashcomp composer.bash composer newfishcomp composer.fish composer newzshcomp composer.zsh _composer } pkg_postinst() { optfeature "Support to unzip archives" dev-lang/php[zip] }