Skip to content
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

install-dist.pl seems to be very sensitive and does not recover well from compilation failures #1903

Open
robertlemmen opened this issue Jun 4, 2018 · 2 comments

Comments

Projects
None yet
3 participants
@robertlemmen
Copy link

commented Jun 4, 2018

I was playing around with install-dist.pl a bit, I used JSON::Tiny as an example. a few observations:

  • install-dist.pl fails on this module with some compilation problems. This is in general ok, they seem to be genuine problems with JSON::Tiny (filing issues). But I have installed that same module ok with zef, so it looks as if install-dist.pl is more sensitive than zef
  • more importantly, after trying to install a broken package, isntall-dist.pl leaves behind the "dist" file. consequently a re-try with a now fixed module fails because install-dist believes it is already installed. I think it would be nice if install-dist.pl would have no side-effects if it fails to install correctly
  • JSON::Tiny has a weird META.yml rather than the META6.json most packages seem to have. perhaps that is not supported, but again zef seems to be happy with it...

@AlexDaniel AlexDaniel added the severe label Jun 4, 2018

@niner

This comment has been minimized.

Copy link
Contributor

commented Jun 4, 2018

Considering that install-dist.pl is meant to be a bootstrapping and packaging tool, I'm not sure if I see the need for those features. Zef is the end user friendly, forgiving tool that tries as best as it can to fulfill the user's needs. install-dist.pl is meant to be used in an RPM .spec file or .deb file where predictability is more important.

Also the best way to deal with aborted builds is to build into a staging area:
install-dist.pl --from=/path/to/dist --to=/tmp/buildroot/usr/share/perl6/vendor --for=vendor
Then if the build is successful, copy the resulting files to their final location:
cp -a /tmp/buildroot/usr/share/perl6/vendor /usr/share/perl6
If the build failed, discard the /tmp/buildroot directory. Build farms like the Open Build Service will do this in discardable virtual machines anyway.

Btw. JSON::Tiny does have a META6.json: http://modules.perl6.org/dist/JSON::Tiny:cpan:MORITZ/META6.json but I don't see any META.yml file. We've also never supported yaml as meta format.

@robertlemmen

This comment has been minimized.

Copy link
Author

commented Jun 4, 2018

absolutely, and I am building into a staging area. I just thought that this behavior is somewhat surprising, perhaps worth mentioning. but it's not stopping it from being usable...

regardsing json::tiny: it appears I have used an ancient version, not entirely sure how I have accomplished that...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.