Binaries in the archive root are not extracted
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 70/100
Piste de recherche
Le bug se trouve dans extract() dans src/Archive/PharAwareArchive.php, qui rouvre $this->archive (l'itérateur PharData) au lieu du chemin de l'archive, de sorte que seule la première entrée est parcourue. Commence par lire cette méthode, puis retire #[Skip] de extractFindsBinaryInArchiveRoot dans tests/Unit/Archive/PharAwareArchiveTest.php et exécute vendor/bin/testo --filter=extractFindsBinaryInArchiveRoot. C'est terminé lorsque ce test passe et qu'une archive plate ou un binaire situé hors de la première entrée de premier niveau s'extrait correctement. Consulte d'abord les mainteneurs, car l'issue #49 pourrait remplacer ce code.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
PharAwareArchive::extract() cannot extract a binary from the archive root. For a zip that contains LICENSE and rr at the top level, extraction fails with:
RecursiveDirectoryIterator::__construct(phar:///tmp/.../rr.zip/rr): Failed to open directory: operation failed
extract() reopens the archive with $this->open($this->archive). $this->archive is the PharData iterator itself, so its getPathname() returns the current entry, i.e. the first file in the archive, not the archive. Only that first entry is searched:
- if it is a directory, the files inside it are found;
- if it is a file, the reopen fails.
Current RoadRunner archives put everything in one top-level directory (roadrunner-<version>-<os>-<arch>/rr), which is the only reason extraction works today. A flat archive, or a binary outside the first top-level entry, cannot be installed.
Steps to reproduce
- Remove
#[Skip]fromPharAwareArchiveTest::extractFindsBinaryInArchiveRoot. - Run
vendor/bin/testo --filter=extractFindsBinaryInArchiveRoot.
Additional context
Archive handling may be replaced by DLoad in #49, in which case this code goes away.
- Langage dominant
- PHP
- Étoiles
- 30
- Forks
- 15
- Merge moyen
- 45 min
- PR mergées (30 j)
- 11
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de roadrunner-php/cli
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
roadrunner-php/cli#69 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
roadrunner-php/cli#68 ·
Les mainteneurs répondent en général sous 1 jour
-
--stability=rc is treated as devOuvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
roadrunner-php/cli#67 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
roadrunner-php/cli#62 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
roadrunner-php/cli#61 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de roadrunner-php/cli
Issues similaires
-
sync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
sync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 4 jours
-
Перевод устарел
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
bug
Difficulté 2/5 Une demi-journée Accessibilité débutants 76/100
m3ue/m3u-editor#1604 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
femiwiki/docker-mediawiki#1497 ·
Les mainteneurs répondent en général sous 1 jour