Install this version:
emerge -a =dev-php/composer-2.10.3
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =dev-php/composer-2.10.3
Or alternatively:
emerge --autounmask-write -a =dev-php/composer-2.10.3
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 2.10.3 | 8 | ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 | 0 |
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit optfeature shell-completion
DESCRIPTION="Dependency manager for PHP"
HOMEPAGE="https://getcomposer.org/ https://github.com/composer/composer"
# The release phar bundles every dependency from upstream's composer.lock, so
# nothing is fetched at build time. getcomposer.org serves the same bytes as
# the GitHub release asset.
SRC_URI="https://getcomposer.org/download/${PV}/${PN}.phar -> ${P}.phar"
S="${WORKDIR}"
# Composer and almost all bundled libraries are MIT; marc-mabe/php-enum is
# BSD-3-Clause and composer/ca-bundle ships Mozilla's cacert.pem (MPL-2.0).
LICENSE="MIT BSD MPL-2.0"
SLOT="0"
# A phar is PHP code, not architecture-specific.
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
# composer.json requires ext-filter, ext-hash and ext-json (the last two are
# always built into PHP 8). ssl is required in practice: without ext-openssl
# every download aborts unless the user sets the unsafe disable-tls option.
# ext-curl, ext-zip and ext-zlib are upstream "suggest" entries, see
# pkg_postinst.
RDEPEND="dev-lang/php:*[cli,filter,phar,ssl]"
BDEPEND="dev-lang/php:*[cli,filter,phar]"
src_unpack() {
# A phar is not an archive unpack() knows; it is installed as fetched.
:
}
src_compile() {
# Symfony names the completion function after argv[0]'s basename, so
# the phar is run under the name the wrapper installs.
cp "${DISTDIR}/${P}.phar" ${PN} || die
local -x COMPOSER_ALLOW_SUPERUSER=1 COMPOSER_DISABLE_NETWORK=1
local -x COMPOSER_HOME="${T}/composer-home"
php ${PN} --no-interaction --no-ansi completion bash > ${PN}.bash || die
}
src_install() {
insinto /usr/share/${PN}
newins "${DISTDIR}/${P}.phar" ${PN}.phar
cat > "${T}/${PN}" <<-EOF || die
#!/bin/sh
exec php /usr/share/${PN}/${PN}.phar "\$@"
EOF
dobin "${T}/${PN}"
newbashcomp ${PN}.bash ${PN}
}
pkg_postinst() {
optfeature "HTTP transfers through libcurl (faster, parallel)" "dev-lang/php[curl]"
optfeature "gzip-compressed HTTP responses" "dev-lang/php[zlib]"
optfeature "extracting zip dists in-process" "dev-lang/php[zip]"
optfeature "extracting zip dists without ext-zip" app-arch/unzip app-arch/7zip
optfeature "git sources and VCS repositories" dev-vcs/git
optfeature "Subversion repositories" dev-vcs/subversion
optfeature "Mercurial repositories" dev-vcs/mercurial
optfeature "Fossil repositories" dev-vcs/fossil
elog "Composer is managed by Portage: 'composer self-update' cannot replace"
elog "the root-owned /usr/share/${PN}/${PN}.phar. Update it through emerge."
}
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | composer-2.10.3.phar | 3642137 bytes | https://getcomposer.org/download/2.10.3/composer.phar |