Subject: Re: [bug#61123] [PATCH] gnu: php: Update to 8.2.1.

From: Julien Lepiller <[email-masked]>
Date: Mon, 30 Jan 2023 21:34:28 +0100

OK, CI is failing for x86_64 and suceeding for aarch64... I managed to
reproduce the same failure on my usual machine.

On the failing machine, I attempted to run issue0115.php. I had to
create a small php.ini to set phar to writable, otherwise it fails
earlier than in the logs:

```php.ini
phar.readonly=Off
```

Then, running `/tmp/guix-build-php-8.2.1.drv-0/php-8.2.1/sapi/cli/php
-c . issue0115.php` from the test directory gives me the same error as
the test:

```
Fatal error: Uncaught PharException: unable to copy stub of old phar to
new phar "/tmp/issue0115_1.phar.php" in /tmp/issue0115.php:7 Stack
trace: #0 /tmp/issue0115.php(7): Phar->offsetSet('index.php', '<?php\n
echo "H...') #1 {main}
  thrown in /tmp/issue0115.php on line 7
```

However, I have two partitions: one for / and one for /home on that
computer. They are both SSDs, with btrfs file-system. In any directory
under /home, I'm able to execute the test further, until it fails to
find the php server (it's not running). It at least shows that it was
able to create the phar:

```
Warning: proc_open(): Exec failed: No such file or directory in
/home/tyreunom/projects/packages/new/php_cli_server.inc on line 20
Server is not running
```

Using strace, it seems that the first difference is with this syscall:

```
copy_file_range(4, NULL, 6, NULL, 6641, 0) = 4096
copy_file_range(4, NULL, 6, NULL, 90, 0) = -1 EXDEV (Lien physique
inter-périphérique invalide)
```

Now, EXDEV is documented as "not on the same filesystem", but only for
kernels older than 5.3. Newer kernels are supposed to support that.
Note that when copy_file_range succeeds, the test fails, whereas the
phar is created when copy_file_range fails.

This test succeeds all the time on another aarch64 and an x86_64
machine, with the same php version. However, I noticed that the failing
machine had linux-6.1.5 whereas the two passing machines had
linux-5.19.17. Maybe it's related? It could also be related to
file-systems somehow, but I fail to see a difference between the setup
of my / and my /home...

Ideas? Should we disable these tests? Creating phars is not a usual
operation, as the default php.ini disables it, but it could be useful...