-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Milestone
Description
Running a composer archive command for a package hosted on a SVN server where a tag is empty. Triggers an ErrorException because Composer tries to copy a tar/zip file that doesn't exist.
My composer.json:
{
"require": {
"wpackagist-plugin/individual-multisite-author": "1.0"
},
"repositories": {
"wpackagist": {
"type": "composer",
"url": "https://wpackagist.org"
}
},
"config": {
"allow-plugins": {
"composer/installers": true
}
}
}Output of composer diagnose:
Checking composer.json: WARNING
No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.
require.wpackagist-plugin/individual-multisite-author : exact version constraints (1.0) should be avoided if the package follows semantic versioning
Checking composer.lock: OK
Checking platform settings: OK
Checking git settings: OK git version 2.49.0
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking connectivity to https://wpackagist.org: OK
Checking github.com oauth access: OK does not expire
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0 87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B 0C708369 153E328C AD90147D AFE50952
OK
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.8.8
PHP version: 8.2.28
PHP binary path: /opt/homebrew/Cellar/[email protected]/8.2.28_1/bin/php
OpenSSL version: OpenSSL 3.4.1 11 Feb 2025
curl version: 8.13.0 libz 1.2.12 brotli brotli/1.1.0 zstd supported ssl OpenSSL/3.4.1 (SecureTransport)
zip: extension present, unzip present, 7-Zip not available
When I run this command:
composer archive wpackagist-plugin/individual-multisite-author 1.0 -vvv
I get the following output:
Running 2.8.8 (2025-04-04 16:56:46) with PHP 8.2.28 on Darwin / 24.3.0
Reading ./composer.json (/private/tmp/composer.json)
Loading config file /Users/glaubinix/.composer/config.json
Loading config file /Users/glaubinix/.composer/auth.json
Loading config file ./composer.json (/private/tmp/composer.json)
Checked CA file /opt/homebrew/etc/ca-certificates/cert.pem: valid
Executing command (/private/tmp): 'git' 'branch' '-a' '--no-color' '--no-abbrev' '-v'
Executing command (/private/tmp): 'git' 'describe' '--exact-match' '--tags'
Executing command (CWD): 'git' '--version'
Executing command (/private/tmp): 'git' 'log' '--pretty=%H' '-n1' 'HEAD' '--no-show-signature'
Executing command (/private/tmp): 'hg' 'branch'
Executing command (/private/tmp): 'fossil' 'branch' 'list'
Executing command (/private/tmp): 'fossil' 'tag' 'list'
Executing command (/private/tmp): 'svn' 'info' '--xml'
Reading /Users/glaubinix/.composer/composer.json
Loading config file /Users/glaubinix/.composer/config.json
Loading config file /Users/glaubinix/.composer/auth.json
Loading config file /Users/glaubinix/.composer/composer.json (/Users/glaubinix/.composer/composer.json)
Loading config file /Users/glaubinix/.composer/auth.json
Reading /Users/glaubinix/.composer/auth.json
Reading /private/tmp/vendor/composer/installed.json
Reading /Users/glaubinix/.composer/vendor/composer/installed.json
Loading plugin Composer\Installers\Plugin (from composer/installers)
Searching for the specified package.
Found an exact match wpackagist-plugin/individual-multisite-author 1.0.
Creating the archive into ".".
- Downloading wpackagist-plugin/individual-multisite-author (1.0)
Downloading https://downloads.wordpress.org/plugin/individual-multisite-author.1.0.zip
[404] https://downloads.wordpress.org/plugin/individual-multisite-author.1.0.zip
Failed to download wpackagist-plugin/individual-multisite-author from dist: The "https://downloads.wordpress.org/plugin/individual-multisite-author.1.0.zip" file could not be downloaded (HTTP/1.1 404 Not Found)
Now trying to download from source
Executing command (CWD): 'svn' '--version'
- Installing wpackagist-plugin/individual-multisite-author (1.0): Checking out tags/1.0
Executing command (CWD): 'svn' 'co' '--non-interactive' '--' 'https://plugins.svn.wordpress.org/individual-multisite-author//tags/1.0' '/var/folders/gv/xyxc9g9s77z_jv3yx6b2djlm0000gn/T/composer_archived63bb0b145'
Checked out revision 3279961.
In Filesystem.php line 372:
[ErrorException]
copy(/var/folders/gv/xyxc9g9s77z_jv3yx6b2djlm0000gn/T/composer_archivea623124b81.tar): Failed to open stream: No such file or dire
ctory
Exception trace:
at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Util/Filesystem.php:372
Composer\Util\ErrorHandler::handle() at n/a:n/a
copy() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Util/Filesystem.php:372
Composer\Util\Filesystem->copy() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Util/Filesystem.php:350
Composer\Util\Filesystem->copyThenRemove() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Util/Filesystem.php:453
Composer\Util\Filesystem->rename() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Package/Archiver/ArchiveManager.php:229
Composer\Package\Archiver\ArchiveManager->archive() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Command/ArchiveCommand.php:143
Composer\Command\ArchiveCommand->archive() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Command/ArchiveCommand.php:98
Composer\Command\ArchiveCommand->execute() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/vendor/symfony/console/Command/Command.php:298
Symfony\Component\Console\Command\Command->run() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/vendor/symfony/console/Application.php:1040
Symfony\Component\Console\Application->doRunCommand() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/vendor/symfony/console/Application.php:301
Symfony\Component\Console\Application->doRun() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Console/Application.php:397
Composer\Console\Application->doRun() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/vendor/symfony/console/Application.php:171
Symfony\Component\Console\Application->run() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/src/Composer/Console/Application.php:137
Composer\Console\Application->run() at phar:///opt/homebrew/Cellar/composer/2.8.8/bin/composer/bin/composer:98
require() at /opt/homebrew/Cellar/composer/2.8.8/bin/composer:29
archive [-f|--format FORMAT] [--dir DIR] [--file FILE] [--ignore-filters] [--] [<package> [<version>]]
And I expected this to happen:
Either tell me that the 1.0 tag is empty or cannot be created. Empty tar/zip would also be fine. Please note that running composer install works just fine and I'll end up with an empty directory in the vendor folder.