|
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 1 June 2016. |
|||
|
01:49
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 | ||
|
02:33
ribasushi joined
03:40
ribasushi joined
04:06
ribasushi joined
04:26
ribasushi joined
06:37
ribasushi joined
06:51
ribasushi joined
07:12
ribasushi joined
08:37
nine_ joined
08:38
ribasushi joined
08:51
b2gills joined
10:03
nine joined
10:04
camelia joined
|
|||
| nine | ugexe: your recent change to Repository::FileSystem means that the META6.json is no longer the authoritative source for which modules are in that repo. | 11:04 | |
| lizmat | nine: should I revert ? | 11:05 | |
| nine | ugexe: I don't have a preference either way, just wanted to mention this clearly, so we're aware of the consequences. | ||
| Because I'm not sure this has really been discussed before. Looks like it's always been just a result of some implementation. | 11:06 | ||
| lizmat: an authoritative META6.json would give results closer to the installed dist while the current behavior makes extras like Build.pm work more consistently. | 11:07 | ||
| lizmat | nine: but the idea of the FS repo would always be that just adding a file to the filesystem was enough to make it "installed" ? | 11:08 | |
|
11:09
ribasushi joined
|
|||
| nine | Yes, and it would be confusing if that didn't work. Obviously someone also thought that it would be nice if the META6.json were not only significant for installed dists, leaving us with the question of what exactly its role is in a FileSystem repo. | 11:16 | |
| sjn | is there a MANIFEST? | 11:17 | |
| sjn sees Bailador's META.info contains a provides field that looks eerily like a manifest | 11:22 | ||
| lizmat | sjn: not that I know of, only a dummy Manifest object afaik | ||
| sjn likes the fact that it's possible to check if a distribution is complete | 11:23 | ||
| but that kinda assumes someone has to spend a little attention on making either the manifest, or a manifest.skip equivalent (when auto-generating the manifest) | 11:24 | ||
| also, | |||
| (warning: pet peeve coming up) | |||
| I think there should be a smarter way of managing files in a distribution | 11:25 | ||
| lizmat | sjn: but this is about the FileSystem repo, which has files managed by the user by adding/removing them from the file system | 11:26 | |
| like in Perl 5 | |||
| sjn | yes | ||
| some hints about file types would be really, really useful | |||
| "this is a perl6 module file": "foo.bar" | 11:27 | ||
| keeping track of which modules in a repo is fine and definitely the most important thing to do in a META6.json file (or eqv. metadata file) | 11:28 | ||
| but it really isn't enough | 11:29 | ||
| "templates": { "index.tpl": "templates/index.tpl" }, "css":Ā { "mobile.css": "static/mobile.css" } | 11:52 | ||
|
12:06
ribasushi joined
13:09
sufrostico joined
13:15
patrickz joined
|
|||
| ugexe | nine: i'm not sure it was meant to act as an authority though, just to allow one to use non-standard name-path mappings through `provides` | 13:21 | |
| the better solution is to make build-time/Build.pm stuff declarative (of course), but thats probably better left for when we know everything that needs to be broken so we can break everything at once | 13:32 | ||
| sjn: see the last paragraph of design.perl6.org/S22.html#%25%3FRESOURCE for an idea on how the manifest could be built | 13:33 | ||
| sjn | ugexe: righht | 13:36 | |
| ugexe | there is some support for that in my distribution PR, where given a known meta6 key-path (like %meta<a><b><c> key-path is a, b, c) it can accept a string or a hash (but would use the key of this hash as the original string value). the .value of that hash would then be ignored by anything that isn't concerned with build time stuff | 13:37 | |
| sjn | useful, but how about resources that aren't supposed to be used from the library/application? | ||
| ugexe | but build tools would want to check that .value and use it for things | ||
| they can follow the same thing. the PR i reference does this for `provides` as well | 13:38 | ||
| sjn | e.g. crontab entries, application-specific nagios scripts... | ||
| ugexe | the files that get build get tacked on the end as a hash of the generated files | ||
|
13:39
ribasushi joined
|
|||
| ugexe | wouldnt you handle those in your Build script, and let whatever Build module you would likely use handle it? | 13:39 | |
| i understand what you're after, im just not sure | 13:40 | ||
| sjn thinks would be positive if *less* would be done by a custom build script | |||
| ugexe | because we do need install/uninstall hooks | ||
| sjn | I'm just saying "we should have a place for these things too" | ||
| ugexe | i dont think META6 is the place to handle crontab entries | ||
| sjn | ugexe: you could refer to them (like a manifest with filetype information) | 13:41 | |
| then let the builder/installer do the right thing | 13:42 | ||
| e.g. files listed as "crontab" are copied to /etc/cron.d/myapp.cron | |||
| or whatever is correct for that system | 13:43 | ||
| </pet-peeve> | |||
| ugexe | "whatever is correct for that system" wouldnt be as simple as you make it out (i dont think anyway) | 13:44 | |
| sjn | sure it would | ||
| ugexe | it has to know how your cron is configured to even be. if you're on windows... i don't even know | 13:45 | |
| sjn | you need a matching file for each system (e.g. in Ubuntu, we put httpd configuration in /etc/apache/sites-available or something like that | ||
| ) | |||
| and if the file type/service/system feature isn't available, just don't do anything and maybe offer a warning with a pointer to the file and a few words about how to fix the installation? | 13:47 | ||
| such a matching file, I would probably put in /etc/perl6/locations.json or something like taht | |||
| ugexe | build a service locator into the core? | ||
| sjn | nah, make it configurable, let the packagers make the file | 13:48 | |
| all with flat files and no smarts needed to figure out where files are supposed to end up | |||
| (fsvo "flat" json :) | 13:49 | ||
| also, with a little thought, this could be made into something user-overridable | |||
| ugexe | my first thought is thats turning Build.pm into a type of configuration-file-as-script, but it sounds like you have a much better general idea than i do here | 13:50 | |
| sjn | e.g. "in our shop, we want to install stuff in /opt/ourshop/perl6" | ||
| and just to inflate the wishful thinking even more; there's nothing blocking us from making this into a generic installation protocol. "Install Anywhere Protocol" :) | 13:51 | ||
| perhaps with options to specify dependencies across domains or on system features and resources ("I need an unused port 80 for my app") | 13:52 | ||
| ugexe | sure, those are good idea. but i think the scope is too big for CUR::Installation. however the foundation could be laid to allow those things with hooks or whatnot (requiring some sort Module::Build to handle most of those specifics) | 13:57 | |
| not that such a module couldn't be included with rakudo (like Test or NativeCall) | 13:58 | ||
| sjn | mm | 14:02 | |
| Hm. Anyone here who would like to take a stab at an "Install Anywhere Protocol"? :) | 14:03 | ||
|
14:14
ribasushi joined
14:44
ribasushi joined
|
|||
| ugexe | nine: gist.github.com/ugexe/017672ef3972...d08a854872 something like this may be worthwhile as well (cache `provides` to avoid later meta6 lookups, and single assignment for found) | 15:24 | |
|
15:28
sjn joined
|
|||
| nine | ugexe: yes sounds very reasonable | 16:47 | |
|
17:14
ribasushi joined
17:47
FROGGS joined
17:50
Kassandry joined
20:34
ribasushi joined
20:45
sufrostico joined
21:36
patrickz joined
22:42
ribasushi joined
23:44
sufrostico joined
|
|||