It failed in the make install phase when it tried to install the
installable_ files to the live filesystem rather than to the install
target tree.
The ebuild calls make install with args that result in this invocation
of install_files.pl:
,----
| /usr/bin/perl5.8.8 tools/dev/install_files.pl \
| --buildprefix=/portage/parrot-0.4.2/image/ \
| --prefix=/usr/lib/parrot-0.4.2 \
| --exec-prefix=/usr/lib/parrot-0.4.2 \
| --bindir=/usr/lib/parrot-0.4.2/bin \
| --libdir=/usr/lib/parrot-0.4.2/lib \
| --includedir=/usr/lib/parrot-0.4.2/include \
| --destdir= \
| --docdir=/usr/lib/parrot-0.4.2/share/doc/parrot \
| MANIFEST MANIFEST.generated
`----
Running that with --dry-run=1 results in this at the end:
,----
| ...
| runtime/parrot/library/parrotlib.pbc -> /portage/parrot-0.4.2/image/usr/lib/parrot-0.4.2/lib/parrot/library/parrotlib.pbc
| runtime/parrot/library/pcre.pbc -> /portage/parrot-0.4.2/image/usr/lib/parrot-0.4.2/lib/parrot/library/pcre.pbc
| installable_disassemble -> /usr/lib/parrot-0.4.2/bin/disassemble
| installable_disassemble.exe -> /usr/lib/parrot-0.4.2/bin/disassemble.exe
| ...
`----
As you can see, the installable files are not prefixed by the value of
the --buildprefix as every other file in the MANIFEST.generated is.
The install_files.pl in 0.4.0 lacked @installable_exe and just
used @files. Just before pushing to @files, this is run:
,----
| $dest = File::Spec->catdir($options{buildprefix}, $dest)
| if $options{buildprefix};
`----
but that is not run before pushing to @installable_exe.
I see that --destdir was also added since 0.4.0, and changing the
ebuild to use DESTDIR=${D} instead of BUILDPREFIX=${D} does allow
the install to complete. But I wonder what the correct results
should be when both DESTDIR and BUILDPREFIX are specified to make?
-JimC
--
James H. Cloos, Jr. <cl...@jhcloos.com>