|
Fire is step THREE! | github.com/perl6/toolchain-bikeshed | Channel logs: irclog.perlgeek.de/perl6-toolchain/today | useful prior art: metacpan.org/pod/CPAN::Meta::Spec Set by moderator on 28 July 2017. |
|||
| mspo | so can I open a feature request or something? | 01:10 | |
|
01:53
ilbot3 joined
|
|||
| moderator | Fire is step THREE! | github.com/perl6/toolchain-bikeshed | Channel logs: irclog.perlgeek.de/perl6-toolchain/today | useful prior art: metacpan.org/pod/CPAN::Meta::Spec | ||
|
04:47
deep-book-gk_ joined,
deep-book-gk_ left
|
|||
| nine | mspo: there's no way yet, but it clearly would be nice if the compiler id was more stable. So either we change it to just hash all the necessary bits or at least give you a way to take over responsibility for managing this id. | 06:18 | |
| stmuk | Do any projects/distros currently package perl 6 modules? Probably not | 07:46 | |
| github.com/ugexe/zef/issues/117 looks potentially useful | 07:52 | ||
| nine | stmuk: there's an perl6-Inline-Perl5 package for openSUSE | 07:55 | |
| Even referenced in that ticket :) | |||
| stmuk | I should have guessed! | ||
| your link is 404 | 07:56 | ||
| google cache has the spec file at least | 07:59 | ||
| nine | This link? build.opensuse.org/package/view_fi...c?expand=1 | 08:01 | |
| Works here | |||
| stmuk | the broken version (in the GH thread) has parrot in it. | 08:04 | |
| nine | The working link is in the very last comment | ||
| devel:languages:parrot got renamed to devel:languages:perl6 in the mean time (for obvious reasons) | 08:05 | ||
| stmuk | ah .. google is also finding the broken link still (probably temp error) | ||
| nine | This is the official build service project: build.opensuse.org/project/show/de...ages:perl6 | 08:06 | |
| stmuk | hmmm maybe R* should use install-perl6-dist to install modules rather than zef | 08:12 | |
| nine | It's certainly a much smaller cannon and would behave very predictably | 08:20 | |
| Btw. I do include the --ll-exception patch in the upcoming 2017.07 nqp package, because it'd be ridiculous not to | 08:27 | ||
| stmuk | I'm wondering about the sanest way of doing this .. maybe git cherry picking and creating an actual patch for this | 08:33 | |
| nine | It's rather trivial in rpm packages: build.opensuse.org/package/show/ho...:perl6/nqp | ||
| stmuk | I was thinking for R* that "perl6 -v" should contain some warning of patches | 08:38 | |
| with maybe the details visible in "perl6 -V" | 08:39 | ||
|
11:38
lizmat joined
|
|||
| mspo | there are two links in that ticket; the first one is broken and the one at the bottom works | 12:31 | |
| binary-only package building will be pretty much fine with the changing file names | 12:32 | ||
| rpm might be okay since you can give it a directory and just say "whatever you find here" but I don't know how specific the srpm is about it | |||
| in pkgsrc world it's not going to work very well because we have users of binary packages and builders, this is the same with freebsd and openbsd ports at least | |||
| and probably gentoo and (maybe?) arch | 12:33 | ||
| I also think debs are a little more prickly about changing anything, especially since they're going for full reproducability and will change mtime and stuff after the fact | |||
| so if you're using a checksum of a certain *file* you need to be careful that it doesn't include a timestamp inside of it either | 12:34 | ||
| it would be easiest if there was like an nqp abi number+moar abi number | 12:35 | ||
| nine | Would be easiest, but we'd probably forget to bump that all the time :/ | 12:36 | |
| Ok, seems like the problem is bigger than expected. I just removed the time stamp from the compiler id, installed rakudo and then did a make clean && make install to see if my precomp files from before still work. | 13:02 | ||
| Build explodes with Missing or wrong version of dependency 'gen/moar/BOOTSTRAP.nqp' (from '/home/nine/rakudo/lib/CompUnit/Repository/Staging.pm (CompUnit::Repository::Staging)') | |||
| Oh, looks like there's still some timestamp somewhere | 13:12 | ||
| But.... nqp actually has a --stable-sc option which removes this timestamp. With that my precomp files actually survived a rakudo recompile :) | 13:26 | ||
| gist.github.com/niner/8d804672f759...d32dcc4eb7 is the patch, which might be a beginning. | 13:27 | ||
| We'd still need to factor in the identities of all related sources when calculating the compiler id, i.e. CORE.settings id must include all its dependencies like Perl6::Compiler, Perl6::ModuleLoader, Perl6::Grammer, etc. | 13:28 | ||
| Also we still check the mtime in CompUnit::PrecompilationRepository::load, but that shouldn't be necessary anymore as we also check the source's checksum. | 13:29 | ||
| Oh, no, that's actually not an issue anymore. We only check mtime if we're passed a :$since and none of the callers do. It's just there for backwards compatibility. | 13:32 | ||
| There actually seems to be a difference in the precomp file for NativeCall::Types, though nothing easily recognizable. Could even be just a different order of slots of a serialized hash. | 13:37 | ||
| No, probably not. The difference is just 8 32 bit numbers and 2 64 bit numbers. | 13:43 | ||
| Don't look like time stamps either | 13:44 | ||
| According to jnthn++ these may be padding bytes that aren't zeroed. A known issue that has been ignored so far as they are harmless. | 13:52 | ||
| ugexe | how would someone encounter this backwards compat code path? I assume its when upgrading rakudo from one specific release to another? | 15:46 | |
| nine | IIRC p6doc uses/used it | 15:52 | |
| ugexe | because it manually precomps? | 15:53 | |
| it'd probably be trivial for CURI to handle that like bin scripts | 15:54 | ||
| mspo | maybe I should learn more about nqp | 17:22 | |
| nine | Trying to find why some bytes change at random in precomp files is....non trivial | 17:40 | |
| mspo | well pkgsrc would be fine with the names not changing :) | 17:47 | |
| debian would be less happy about it, though | |||
| nine | Seems like I made it though :) | 18:33 | |
| ugexe | there is another problem with .scripts - it can't filter by distribution name. it even has a required named param :$name that doesn't get used, but there is no way to use it anyway. i.e. it only allows 1 distribution to provide a specific bin/script | 22:16 | |
| i mean that behavior is probably fine, but the api around it would lead you to believe its not | 23:01 | ||