dev-php/amphp-file - 4.0.0 (nest)

Search

Install

Install this version:

emerge -a =dev-php/amphp-file-4.0.0

If this version is masked, you can unmask it using the autounmask tool or standard emerge options:

autounmask =dev-php/amphp-file-4.0.0

Or alternatively:

emerge --autounmask-write -a =dev-php/amphp-file-4.0.0

Package Information

Description:
An abstraction layer and non-blocking file access solution
Homepage:
https://github.com/amphp/file
License:
MIT

Ebuild Details

Version EAPI Keywords Slot
4.0.0 8 ~amd64 0
View Raw Ebuild
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

COMPOSER_INSTALL_PATH="Amp/File"

inherit composer edo optfeature

DESCRIPTION="An abstraction layer and non-blocking file access solution"
HOMEPAGE="https://github.com/amphp/file"
SRC_URI="https://github.com/amphp/${COMPOSER_PKG}/archive/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"

RDEPEND="dev-php/amphp-amp
	dev-php/amphp-byte-stream
	dev-php/amphp-cache
	dev-php/amphp-parallel
	dev-php/amphp-sync
	dev-php/revolt-event-loop"
BDEPEND="test? ( dev-php/pecl-eio
		dev-php/pecl-uv )"

COMPOSER_TEST_PATCHES=(
	"${FILESDIR}/${PN}"-4.0.0-tests-FilesystemDriverTest.patch
	"${FILESDIR}/${PN}"-4.0.0-tests-FileTest.patch
	"${FILESDIR}/${PN}"-4.0.0-tests-ParallelFilesystemDriverTest.patch
	"${FILESDIR}/${PN}"-4.0.0-tests-ParallelFileTest.patch
	"${FILESDIR}/${PN}"-4.0.0-tests-UvFilesystemDriverTest.patch
	"${FILESDIR}/${PN}"-4.0.0-tests-phpunit.xml.patch )
composer_enable_tests phpunit

src_prepare() {
	composer_src_prepare

	# Amp\Parallel workers execute in separate PHP processes. They do not inherit the autoloaders
	# registered by the parent PHPUnit process. The worker bootstrap loads this package's test
	# autoloader inside each worker before serialized Amp\File\Internal\FileTask instances are
	# received. Without it, PHP unserializes those tasks as __PHP_Incomplete_Class and
	# Amp\Parallel reports that the Task class is not autoloadable.
	edo install -D -m 644 "${FILESDIR}"/worker-bootstrap.php .
}

src_test() {
	# obtain upstream dependency test fixtures which are not included in the release
	edo mkdir -p "${COMPOSER_SRC}"
	edo composer require -q --dev --prefer-source "${COMPOSER_PN}:${PV}" -d "${COMPOSER_SRC}"
	edo mkdir -p vendor/amphp/{cache,sync}
	edo ln -s ../../../../../temp/composer/file/vendor/amphp/cache/test vendor/amphp/cache
	edo ln -s ../../../../../temp/composer/file/vendor/amphp/sync/test vendor/amphp/sync
	composer_test_patch

	# Without ext-parallel, Amp\Parallel falls back to ProcessContext. Revolt's
	# UvDriver misses the readable notification for Amp\Process' POSIX exit-status
	# pipe on this setup, leaving Process::join() suspended. StreamSelectDriver
	# handles the process-worker lifecycle correctly.
	has_version dev-php/pecl-parallel || export REVOLT_DRIVER='Revolt\EventLoop\Driver\StreamSelectDriver'
	ephpunit
}

pkg_postinst() {
	optfeature "PHP extention with eio" dev-php/pecl-eio
	optfeature "PHP extention with parallel" dev-php/pecl-parallel
	optfeature "PHP extention with uv" dev-php/pecl-uv
}

Inherited Eclasses

edo

Dependencies

RDEPEND

dev-php/amphp-amp
	dev-php/amphp-byte-stream
	dev-php/amphp-cache
	dev-php/amphp-parallel
	dev-php/amphp-sync
	dev-php/revolt-event-loop

BDEPEND

test? ( dev-php/pecl-eio
		dev-php/pecl-uv )

Manifest for 4.0.0

Type File Size Source URLs
DIST amphp-file-4.0.0.tar.gz 32850 bytes https://github.com/amphp//archive/v4.0.0.tar.gz