|
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 5 September 2016. |
|||
| ugexe | it is probably worth noting that uploading dists to the PSIXDISTS username makes guessing the auth more difficult for consumers | 00:31 | |
| for example: indexing is not exactly needed to do basic things like parse the upload file path into dist name, version, and author | |||
| however without the author representing the actual author it means you have to download all My::Module:ver<whatever>:auth<*> variants and check each meta data | 00:33 | ||
| ultimately it would not matter once there is indexing, but having all those parts in the path would act as enough information for current tooling to figure it out | 00:34 | ||
| maybe they could be uploaded under P/PS/PSIXDISTS/<original auth>/My-Module-<version>.tar.gz | 00:36 | ||
| although even that would have problems since some people use stuff like `My Name <abc@xyz.net>` as their auth | 00:38 | ||
| or would could upload them under their <sha1>.tar.gz! | 00:39 | ||
| if i were to put my own version of GTK::Simple into the ecosystem for example it would probably cause problems for the PSIXDISTS username plan | 00:41 | ||
| unfortunately i have no suggestions for a solution other than using the file path to contain that information, and as i pointed out that has its own points of failure | 00:43 | ||
| modules.perl6.org also fails in this regard (Foo is listed twice in ecosystem/META.list but only shown once) | 00:47 | ||
| github.com/ugexe/Perl6-Foo I've added this version of Foo to the ecosystem for testing such things, which duplicates the distribution name but uses a different auth | 01:16 | ||
|
01:48
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 | ||
| llfourn | sjn: I'll take a look. Probably some change in rakudo internals has broken it. It relies heavily on nqp. Cheers. | 04:28 | |
| sjn: I removed some bit rot. It installs now :) | 05:20 | ||
|
06:10
domidumont joined
06:15
domidumont joined
07:43
leont joined
|
|||
| sjn | llfourn: thanks! ^^ | 08:59 | |
| llfourn | sjn: nw. Enjoy. | 10:44 | |
|
11:55
stmuk_ joined
14:18
lizmat joined
|
|||
| ugexe | nine: the meta caching bits can be cleaned up a bit into using single assignment if you think it looks better gist.github.com/ugexe/017672ef3972...d08a854872 | 14:19 | |
|
15:09
perlpilot_ joined
|
|||
| nine | ugexe: that looks like it's based on an older version, as it still uses %extensions<Perl6> instead of @extensions? | 15:15 | |
| ugexe | yeah, thats from a few months ago. should just be able to s/%extensions<Perl6>/@extensions/ | 15:18 | |
| mostly just pointing out how to structure it to avoid reassigning to $found | 15:19 | ||
|
15:58
domidumont joined
16:18
tadzik joined
17:15
DrForr joined
|
|||
| stmuk_ | how is zef handling installs from www.cpan.org/authors/id/P/PS/PSIXDISTS/Perl6/? is there a command line switch? | 17:44 | |
| --cpan is actually metacpan? | 17:49 | ||
| ugexe | --cpan is jdv79's metacpan fork with perl6 support | 17:51 | |
| stmuk_ | ah yeah I just was looking at port 5001 on hack | ||
| ugexe | PSIXDISTS cant be properly consumed until its known how the module name, ver, and auth are stored in the file path | 17:52 | |
| for instance: there are 3 variants of Distribution Foo: Foo:auth<github:FROGGS>:ver<1.0>, Foo:auth<github:FROGGS>:ver<1.2>, and Foo:auth<github:ugexe>:ver<1.2> | 17:54 | ||
| stmuk_ | sure | ||
| mst | I would presume that, currently, you're looking at | 17:57 | |
| auth<PSIXDISTS>, then name and ver extracted from tarball name | 17:58 | ||
| ugexe | auth isn't where its currently coming from, its the initial origin | 17:59 | |
| so when taking multiple ecosystems into account (current perl6 ecosystem + cpan) you know when its really the same distribution | 18:00 | ||
| stmuk_ | much as I hate them I'm tempted to suggest the SHA1 hash :/ ugly urls though | ||
| ugexe | :auth<my@email.com> is probably a better default for people to use | ||
| the sha1 doesnt give you anything to index off of. the default My-Module-$ver.tar.gz lets you match on My::Module:ver<1.*> with just a file listing | 18:10 | ||
| stmuk_ | wouldn't the index use the .meta files? eg. www.cpan.org/authors/id/P/PS/PSIXDI...0.001.meta | 18:14 | |
| mst | well, the real answer here is "I don't think we really know yet, that's why PSIXDISTS exists to start experimenting" | 18:15 | |
| perl5's meta, btw, is trialing an x_authority meta key | |||
| ugexe | if you were creating some index elsewhere you would. but if its just built into a client then they'd have to download the meta for every distribution just to search | ||
| mst | maybe perl6 could do similarly and then what stmuk says | ||
| ugexe | hmm the re-versioning makes it impossible to work with another ecosystem | 18:17 | |
| stmuk_ | not a great long term solution but maybe fine for some proof of concept | ||
| ugexe | thats 600+ http requests to update your module meta data | 18:18 | |
| stmuk_ | or another random port on hack! I think both zef and panda use different ones anyway | 18:20 | |
| mst | well, yes, having a dumb file store means you need an index as well | ||
| hence why metacpan6 is looking at building one | 18:21 | ||
| ugexe | yeah, but if it could be encoded into the file name then you dont really need an index at the basic level | ||
| mst | true. | ||
| that's why I was thinking PSIXDISTS should be considered the authority by default | 18:22 | ||
| maybe we need a filename or pathname standard for tarballs that encodes it? | |||
| ugexe | name/ver/auth represent an immutable distribution though, which should be the same no matter where it comes from. auth is just some additional identifying bits | 18:23 | |
| [Coke] | what would rakudo's author be? rakudobug@perl.org ? | ||
| mst | ugexe: right, and the cpan approach to that has historically been to consider it AUTH/Name-1.23.tar.gz | 18:24 | |
| ugexe | my auth could be `github:ugexe` on cpan or `cpan:ugexe` on a github distribution. you just use whatever identifies the original | ||
| right, which doesn't map with how perl6 is designed to handle this. yeah its just a start, but its not really usable | 18:25 | ||
| mst | sure | ||
| this is why we made a start under a dedicated PAUSE id that doesn't actually matter | 18:26 | ||
| because it was bound to turn out to suck the first N attempts | |||
| ugexe | like which version of Foo:ver<1.2> will win? they will both map to the same file name, despite having different auth | ||
| stmuk_ | Net::HTTP:ver(v1.0):api<>:auth<github:ugexe>.tgz (well not that but encoded to work on Windows) | ||
| underscores whatever | |||
| mst | I mean, I was under the impression the auth<> thing was more so you could identify which team you were following if there was a fork or whatever | 18:27 | |
| ugexe | yes it can be used for that | ||
| stmuk_ | . o O ( or is it "authority" or "author" :/ ) | 18:30 | |
| ugexe | :auth<> is not meant to tell you where you have to download from. its to search all the sources you can download from for it | ||
| i.e. you wouldnt have :auth<compunitrepo:ugexe> once you install a distribution | 18:31 | ||
| b2gills | example.com:auth<ICANN:DynDns.com> | 18:36 | |
| nine fears its more gonna be like LeftPad:auth<Facebook:John Doe27> | 18:39 | ||
| ugexe | cpan:JRANDOM:JSON-Fast:1.23 <- maybe puny encode this format into a file name so it can be round tripped back to the original | 18:40 | |
| mst | ugexe: if you have an alternative proposal for PSIXDISTS filenames that you want us to try, we can always stick said files under 'exp1' or something | 18:42 | |
| then if it doesn't work, we design the next experiment, and stick those in 'exp2/' | |||
| etc. | |||
| ugexe | cpan:JRANDOM:JSON-Fast:1.23 <- This is a s22 distribution identity btw (not to be confused with a module identity of JSON::Fast:ver<1.23>:auth<cpan:JRANDOM>) | 18:45 | |
| stmuk_ | colons don't work in windows filenames | 18:46 | |
| mst | and < and > in a filename on *n?x is going to induce aneurysms | ||
| ugexe | yeah, hence punycoding it or whatever first | ||
| nine | File systems in general already have means to separate names into parts. They are called directory separators. So why not just AUTH/VER/SHORT-NAME.tgz? | 18:50 | |
| mst | that would, indeed, seem simpler to me. | 18:51 | |
| ugexe | that works but the current situation is putting them all under PSIXDISTS instead of the original auth from the meta | ||
| mst | argh | ||
| you can still do that INSIDE there | 18:52 | ||
| you already told me PSIXDISTS isn't an acceptable auth anyway | |||
| PSIXDISTS/Perl6/github.ugexe/1.23/Foo-Bar.tar.gz | |||
| ugexe | oh ok | ||
| nine | Or maybe PSIXDISTS/Perl6/github.ugexe/Foo-Bar/1.23.tar.gz | 18:53 | |
| mst | and then all you have to do is, assuming you want to, double check that PSIXDISTS has somehow been granted 'authority' to upload for github.ugexe | ||
| oh, also, this still won't help you at all and you'll still need to read the .meta files | |||
| since Foo-Bar could contain Foo::Bar and Foo::Baz | |||
| ugexe | i'll play devils advocate here and say its nice to have all that info in the file name itself so that you can have all your distributions in a single directory without having to recurse multiple times to see what all you have | ||
| mst | and now you need to read the meta file for 'use Foo::Baz;' | ||
| so I'm not sure what we're gaining here anyway except extra moving parts | 18:54 | ||
| ugexe | you dont have to search the provided modules neccesarily if you find a matching distribution | ||
| mst | unless we say 'Foo-Bar.tar.gz' must only contain namespaces starting /^Foo::Bar/ | 18:55 | |
| ugexe | i could be searching for a specific distribution, Foo-Bar, that does not provide neccesarily a Foo::Bar. if I otherwise ask for either a distribution or module then yes it has to search the meta data. default behavior is just to search both which is sane. but if they specify the identity using the distribution format `blah install cpan:JRANDOM:Foo-Bar:1.2` it should only search for that distribution | 19:00 | |
| stmuk_ | or just append the usual SHA1 hash as a suffix to the tar.gz and the uploading process to PSIXDISTS creates a meta.meta file of the .meta files | ||
| ugexe | if they ask for `blah install Foo::Bar` or `blah install Foo::Bar:auth<cpan:JRANDOM>:ver<1.2>` then it would need to search provided modules | 19:01 | |
| wrap that long name with quotes naturally | |||
| the fact we've been using '::' in our distribution name separators kinda sucks because it implies such a module might be provided | 19:16 | ||
| mst | at this point, PAUSE requires that a Foo-Bar dist to be indexed provides Foo::Bar | 19:17 | |
| well, or at least it requires that the uploader has permissions for Foo::Bar | |||
| you could theoretically acquire said permissions separately | |||
| but ideally, if you did that, a small gnome would exit the back of your machine and hit you with a mallet | |||
| ugexe | there are distributions without *any* provides at all. they are just for their bin scripts (i presume anyway) | 19:29 | |
| github.com/ugexe/Perl6-ecosystems/...c.json#L63 | |||
| nine | Considering the advantages of precompilation, such distributions should be exceedingly rare. Scripts should really just be thin wrappers around modules | 20:14 | |
| ugexe | nine: i agree. maybe we can automate this github.com/ugexe/zef/blob/master/bin/zef | 20:15 | |
| thats so nearly all its code is precompiled | 20:16 | ||
| but what if the wrapper just created something like `use <resources/bin/script>` | |||
| nine | MAIN functions | 20:17 | |
| mst | this is why perl5's tradition now is to have App::nameofscript | 20:18 | |
| ugexe | you can precompile any perl6 code, you just need a perl6 entry point. so you precompile bin scripts (that are perl6 code at least) and then have the wrapper act as the sole perl6 entry point | 20:19 | |
| it doesnt just have to be MAIN functions of course, thats just what zef uses that trick for | 20:21 | ||
|
20:22
leont joined
21:19
leont_ joined
|
|||
| ugexe | stmuk_: `perl6 -e "my $file = 'Foo:Bar.txt'; say $file.IO.spurt('hello'); say $file.IO.slurp"` this actually works on windows. It just wont show up in Explorer or cmd.exe /dir heh | 21:35 | |
| :: doesn't work though | 21:36 | ||
|
22:08
leont_ joined
|
|||
| stmuk_ | oh thats interesting | 23:36 | |
| msdn.microsoft.com/en-us/library/a...S.85).aspx | 23:40 | ||
| quite a long list of reserved chars | |||