New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Possible precomp issue: crash with is a directory, cannot do '.open' on a directory
pointing to a sha1 hash of a dir
#6422
Comments
From @zoffixznetThe full issue and some discussion can be seen on zef's Issue ugexe/zef#190 After working around --ll-exception, we managed to dump full stack trace. It points to this line in CURI https://github.com/rakudo/rakudo/blob/7599e0c3ffb2c7ef29c2994c7d212360459f14fe/src/core/CompUnit/Repository/Installation.pm#L424 It's checking for `.e` but probably should be checking for `.f`. I'm not sure if that's all to the issue (probably not) and $ cd $(mktemp -d); mkdir Exceptions; echo 'class Exceptions::Foo { method process ($e) { say "$e.message() $e.backtrace.full()"; False } }' > Exceptions/Foo.pm6; RAKUDO_EXCEPTIONS_HANDLER=Foo perl6 -I. -MExceptions::Foo /usr/share/perl6/vendor/bin/zef |
From @zoffixznetAlso some discussion on IRC: https://irclog.perlgeek.de/perl6/2017-08-02#i_14957916 |
From jonathon@manjaro.orgJust as a brief comment, a switch from `.e` to `.f` in only that file, e.g. sed -i '424s|\.e|\.f|' src/core/CompUnit/Repository/Installation.pm leads to an error during `make install`: ``` in block <unit> at tools/build/install-core-dist.pl line 26 make: *** [Makefile:620: m-install] Error 1 |
From @ninerThe .e there is absolutely correct as depending on the repository format version $lookup may be a file or directory. We switched to a directory with version 1. So the .f will fail on a current repo version which explains the failure in install-core-dist.pl The real question is not why $lookup ends up being a directory (that's the normal case) but why we don't detect that we are dealing with a version 2 repo. The PKGBUILD script posted on ugexe/zef#190 gives the answer to that: rm -f "$pkgdir/usr/share/perl6/vendor/version" Of course, by deleting that file, you rob rakudo of a vital piece of information. Without that it runs on the wrong assumption that it's dealing with a version 0 repository and that $lookup must be a file. There's really nothing we could or should do here. As much as I'd like us to throw a more useful error message here, that's simply not possible without slowing down all normal uses. And trying to make rakudo resilient against random files missing sounds like an uphill battle. Please just remove the offending lines from the script. This, too looks highly suspicious: Considering that the spec file for openSUSE does not delete anything, I suggest starting with an absolute minimum of a build script. The install-dist.pl call may be quite sufficient. openSUSE does have quite strict packaging guidelines, too. |
The RT System itself - Status changed from 'new' to 'open' |
@niner - Status changed from 'open' to 'rejected' |
From jonathon@manjaro.orgThe missing 'version' file looks to be the issue, and explains why zef worked when installing under under 'site' but not 'vendor': during my testing I think I managed to delete the version file from vendor... Oops. That means I've created a load of noise (but hopefully someone might benefit from it down the line...). This isn't related to the PKGBUILD file itself (where version was being deleted); that's a chroot/shadow dir so the removal would be to prevent a file conflict, not directly affect files on the filesystem. However, 'install-dist.pl' takes care of that so the section isn't needed anyway. Thank you for looking into this. :) On Sat, 05 Aug 2017 07:12:17 -0700, nine@detonation.org wrote:
|
Migrated from rt.perl.org#131831 (status was 'rejected')
Searchable as RT131831$
The text was updated successfully, but these errors were encountered: