Re: Build and Installation of modules should be implementation specific (Was: Re: 6PAN Spec question)
On Mon, 22 Dec 2008, Daniel Ruoso wrote: Em Seg, 2008-12-22 às 15:06 +1100, Timothy S. Nelson escreveu: On Sat, 20 Dec 2008, Mark Overmeer wrote: For ???B. In the current set-up, you use CPAN.pm to download, and then install. The 'cpan' script is a wrapper around CPAN.pm. CPAN.pm starts the install tool. A more convient structure would be to have an user application (maybe the same 'cpan' script), which calls some download backend to retreive the distribution and then calls the right install tool per distribution. I would say: ???B is cpan-NG That would be one way of labelling it. I prefer to leave that labelling up to the people who will actually be writing the software. For all I know, they might prefer to begin with a direct port of CPANPLUS, and work from there. While I agree that ???B plays the role that CPAN.pm does today, I do think we should leave that to be implementation specific, being the Agreed, but I keep (probably unwisely) thinking of these as reference documentation as well as specs, so I thought a note on where to look for more information would be appropriate; that's what the ???B business is a placeholder for. :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+++ PGP-+++ R(+) !tv b++ DI D G+ e++ h! y- -END GEEK CODE BLOCK-
Build and Installation of modules should be implementation specific (Was: Re: 6PAN Spec question)
Em Seg, 2008-12-22 às 15:06 +1100, Timothy S. Nelson escreveu: On Sat, 20 Dec 2008, Mark Overmeer wrote: For ???B. In the current set-up, you use CPAN.pm to download, and then install. The 'cpan' script is a wrapper around CPAN.pm. CPAN.pm starts the install tool. A more convient structure would be to have an user application (maybe the same 'cpan' script), which calls some download backend to retreive the distribution and then calls the right install tool per distribution. I would say: ???B is cpan-NG That would be one way of labelling it. I prefer to leave that labelling up to the people who will actually be writing the software. For all I know, they might prefer to begin with a direct port of CPANPLUS, and work from there. While I agree that ???B plays the role that CPAN.pm does today, I do think we should leave that to be implementation specific, being the implementation responsability to provide a minimal set of features in its package manager so you can install standard Perl modules. This is important because Parrot compiles its code to bytecode, SMOP might even always run from source code (since separating compile-time from run-time may be tricky). Mix together the different Operating Systems where the module should be installed and you get something that is not really spec-able. This also makes it really cool for distribution maintainers, since they know that they can make a custom package manager to create distro-specific packages for every Perl 6 implementation. daniel
Re: 6PAN Spec question
On Sat, 20 Dec 2008, Mark Overmeer wrote: * Timothy S. Nelson (wayl...@wayland.id.au) [081220 03:45]: Btw, looks like I was wrong about the terminology of CPAN6/6PAN/whatever. See link below for details (the new Terminology section). http://svn.pugscode.org/pugs/docs/Perl6/Spec/S22-package-format.pod Just as an explanatory note, I used ???A and ???B as placeholders until someone comes up with a name for them. I don't want to name them; I want to leave the naming of them up to the people who are actually going to implement them. I do not understand the relevance of ???A: just abstract away the actual distribution mechanism. FTP or CD is also not mentioned as possible transporters, so why is that for CPAN6 important? I'm not sure I understand your point here; either I misunderstand what you're getting at, or you've misunderstood what I'm getting at. I'll expand on what I mean by ???A in hopes that this will help clarify things. The current (Perl5) CPAN is, as far as I know, includes: - The custom software that runs cpan.org - The hardware/OS that runs it - The code that is stored there (ie. modules and stuff) I'm assuming that your CPAN6 software is going to replace the software that runs CPAN, but I'm assuming that the replacement for the other two items listed above is going to be a separate entry, that I've designated with the placeholder ???A until such time as someone sets up a website and installs your CPAN6 software, and offers to let people upload stuff to it. For ???B. In the current set-up, you use CPAN.pm to download, and then install. The 'cpan' script is a wrapper around CPAN.pm. CPAN.pm starts the install tool. A more convient structure would be to have an user application (maybe the same 'cpan' script), which calls some download backend to retreive the distribution and then calls the right install tool per distribution. I would say: ???B is cpan-NG That would be one way of labelling it. I prefer to leave that labelling up to the people who will actually be writing the software. For all I know, they might prefer to begin with a direct port of CPANPLUS, and work from there. HTH, - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+++ PGP-+++ R(+) !tv b++ DI D G+ e++ h! y- -END GEEK CODE BLOCK-
Re: 6PAN Spec question
* Timothy S. Nelson (wayl...@wayland.id.au) [081220 03:45]: Btw, looks like I was wrong about the terminology of CPAN6/6PAN/whatever. See link below for details (the new Terminology section). http://svn.pugscode.org/pugs/docs/Perl6/Spec/S22-package-format.pod I do not understand the relevance of ???A: just abstract away the actual distribution mechanism. FTP or CD is also not mentioned as possible transporters, so why is that for CPAN6 important? For ???B. In the current set-up, you use CPAN.pm to download, and then install. The 'cpan' script is a wrapper around CPAN.pm. CPAN.pm starts the install tool. A more convient structure would be to have an user application (maybe the same 'cpan' script), which calls some download backend to retreive the distribution and then calls the right install tool per distribution. I would say: ???B is cpan-NG -- MarkOv Mark Overmeer MScMARKOV Solutions m...@overmeer.net soluti...@overmeer.net http://Mark.Overmeer.net http://solutions.overmeer.net
Re: 6PAN Spec question
Btw, looks like I was wrong about the terminology of CPAN6/6PAN/whatever. See link below for details (the new Terminology section). http://svn.pugscode.org/pugs/docs/Perl6/Spec/S22-package-format.pod :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+++ PGP-+++ R(+) !tv b++ DI D G+ e++ h! y- -END GEEK CODE BLOCK-
Re: 6PAN Spec question
Em Qui, 2008-12-18 às 13:08 +1100, Timothy S. Nelson escreveu: My question is, what sort of information actually belongs in a final version of the 6PAN spec? I'm assuming it will at least include 6PAN Package format (layout, metadata, etc), and I'd suggest that it also include the layout of packages on the 6PAN server. I think we have 1) How is the layout of Perl 6 related content (source package format) 2) How source packages are uploaded, indexed, mirrored, searched, downloaded etc (6PAN/CPAN6) 3) How source packages are built 4) How binary packages are installed I think 1 and 2 should be subject of two different specs, I also think 3 and 4 should be implementation and OS specific. daniel
Re: 6PAN Spec question
* Daniel Ruoso (dan...@ruoso.com) [081218 13:39]: Em Qui, 2008-12-18 às 13:08 +1100, Timothy S. Nelson escreveu: My question is, what sort of information actually belongs in a final version of the 6PAN spec? I'm assuming it will at least include 6PAN Package format (layout, metadata, etc), and I'd suggest that it also include the layout of packages on the 6PAN server. 2) How source packages are uploaded, indexed, mirrored, searched, downloaded etc (6PAN/CPAN6) If you understand my explanation of CPAN6, then you certainly must be ware that 6PAN and CPAN6 have nothing to do with each other. Please do not use them in combination. It is as silly as saying TCP/Linux -- Regards, MarkOv Mark Overmeer MScMARKOV Solutions m...@overmeer.net soluti...@overmeer.net http://Mark.Overmeer.net http://solutions.overmeer.net
Re: 6PAN Spec question
On Thu, Dec 18, 2008 at 05:45, Mark Overmeer m...@overmeer.net wrote: * Daniel Ruoso (dan...@ruoso.com) [081218 13:39]: Em Qui, 2008-12-18 às 13:08 +1100, Timothy S. Nelson escreveu: My question is, what sort of information actually belongs in a final version of the 6PAN spec? I'm assuming it will at least include 6PAN Package format (layout, metadata, etc), and I'd suggest that it also include the layout of packages on the 6PAN server. 2) How source packages are uploaded, indexed, mirrored, searched, downloaded etc (6PAN/CPAN6) If you understand my explanation of CPAN6, then you certainly must be ware that 6PAN and CPAN6 have nothing to do with each other. Please do not use them in combination. It is as silly as saying TCP/Linux -- there's a difference? that was never clear to me (but i haven't read any docs). at best, they are incredibly, confusingly, similarly named. ~jerry
Re: 6PAN Spec question
* jerry gay (jerry@gmail.com) [081218 14:01]: If you understand my explanation of CPAN6, then you certainly must be ware that 6PAN and CPAN6 have nothing to do with each other. Please do not use them in combination. It is as silly as saying TCP/Linux there's a difference? that was never clear to me (but i haven't read any docs). at best, they are incredibly, confusingly, similarly named. Well, 6PAN is about downloading the right Perl6 module and installing it. Like Perl5s CPAN.pm module in combination with MakeMaker or Module::Build, interpreting the content of the released packages. It defines how authors have to release Perl6 material so end-user can install and use them. CPAN6 is a distribution network; the PAUSE uploader, CPAN package indexer and CPAN ftp-server network (ftp.cpan.org). CPAN6 can be used to distribute any kind of data: perl5 distributions, 6pan distributions, rpms, word documents, and photo's... as long as there is some meta-data available to distinguish two seperate releases. It is about upload and download with access rules, name and version label restrictions, namespace restrictions, data integrety, distributed search, redundant servers, release-under-embargo, etc etc. In general: CPAN6 implements everything you need to create data collections for any purpose. Kind of very smart network directory. AFAIK, there is no comparible project on the moment. In CPAN name is used for different things, so that has caused this inconvenient name look-alike. -- Regards, MarkOv Mark Overmeer MScMARKOV Solutions m...@overmeer.net soluti...@overmeer.net http://Mark.Overmeer.net http://solutions.overmeer.net
CPAN6 vs. 6PAN (was: Re: 6PAN Spec question)
Mark, am I right in putting it like this? 6PAN: - Perl6 package format - Client-side part of CPAN CPAN6: - Server-side part of CPAN (with more stuff) Is that how you see it? :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+++ PGP-+++ R(+) !tv b++ DI D G+ e++ h! y- -END GEEK CODE BLOCK-
Re: 6PAN Spec question
On Thu, 18 Dec 2008, Daniel Ruoso wrote: Em Qui, 2008-12-18 às 13:08 +1100, Timothy S. Nelson escreveu: My question is, what sort of information actually belongs in a final version of the 6PAN spec? I'm assuming it will at least include 6PAN Package format (layout, metadata, etc), and I'd suggest that it also include the layout of packages on the 6PAN server. I think we have 1) How is the layout of Perl 6 related content (source package format) 2) How source packages are uploaded, indexed, mirrored, searched, downloaded etc (6PAN/CPAN6) 3) How source packages are built 4) How binary packages are installed I think 1 and 2 should be subject of two different specs, I also think 3 and 4 should be implementation and OS specific. Ok, I like. The only thing is, it seems to me that Mark Overmeer thinks that items 1, 3, and 4 above are 6PAN, and item 2, above, is CPAN6. Allow me to suggest a new set of terminology: - .jib files (see S22) -- this is the source package format (meaning unchanged) - CPAN6 -- this is the network, and the software that manages it (meaning unchanged) - 6PAN -- this is a piece of software that starts with what it can get on CPAN6, and attempts to give you an installed perl module (this is a replacement for CPANPLUS/cpan2dist) Are there any objections if I refactor the current S22 into 3 parts, and retain the .jib files stuff in the current S22 (renamed to S22-package-format.pod), a document containing what S22 said about CPAN6 (which we could then donate to the cpan6 project for their consideration), and a draft document of notes about building and installing. Thoughts? :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+++ PGP-+++ R(+) !tv b++ DI D G+ e++ h! y- -END GEEK CODE BLOCK-
Re: 6PAN Spec question
On Fri, 19 Dec 2008, Timothy S. Nelson wrote: Are there any objections if I refactor the current S22 into 3 parts, and retain the .jib files stuff in the current S22 (renamed to S22-package-format.pod), a document containing what S22 said about CPAN6 (which we could then donate to the cpan6 project for their consideration), and a draft document of notes about building and installing. Ok, I've done this, since I noted that the disagreements seemed to stem from what to call the parts, rather than the division into parts. I took the Repositories stuff and sent it to Mark Overmeer for him to take into account in his work on the CPAN6 project. I took the notes about building and installing packages and attached them to this e-mail. What should we do with them? I can think of a few options: - Turn them into S34 (not my preferred option) - Send them to Jos Boumans, original author, and maintainer of CPANPLUS http://cpanplus.dwim.org/ asking him to store them as notes somewhere for a CPANPLUS6/6PAN/whatever design document - Store them with the other drafts in the Pugs repository (see Draft Specifications at http://perlcabal.org/syn/ for an example of what I mean). :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+++ PGP-+++ R(+) !tv b++ DI D G+ e++ h! y- -END GEEK CODE BLOCK- =encoding utf8 =head1 TITLE Perl6 Package build and install notes =head1 AUTHOR Jos Boumans k...@cpan.org Audrey Tang audr...@audreyt.org Florian Ragwitz r...@debian.org Tim Nelson wayl...@wayland.id.au =head1 VERSION Maintainer: Jos Boumans k...@cpan.org Date: 3 Nov 2005 Last Modified: 19 Dec 2008 Number: 0 Version: 1 =head1 Overview - None of the known tools can do what we want - Will have to implement chain ourselves - Be inspired by dpkg, apt-get and debian policy - See: http://www.us.debian.org/doc/debian-policy - Start with the elementary things - See CPlan of Attack for first steps =head2 General Flow (Basic) This describes the basic flow for installing modules using the new 6pan installer. This just deals with building a package from source and installing it. Not with the distribution of these files through the means of CPAN. That will be covered in the advanced flow. 1. Setup package directory * creates a directory for the project * includes all relevant default files * and default metadata setup * [ ... write code ... ] 2. Extract/Update metadata * done by giving project code to the compiler * extract the info given by the compiler about the code * update the metadata according * this involves 'use' statements, versions, packages, etc 3. Build package based on metadata * verify integrity of the code/metadata * create a source package called a '.jib' file See '.jib files' further down * contains source code * contains metadata 4. Install package from '.jib' file * Extract '.jib' to a temporary directory * Verify dependencies based on metadata * Build the source code to installable code * Move the installable code to it's final destination * Run appropriate hook-code * Perform appropriate linking * Update system metadata based on package metadata 5. Uninstall packages * Query metadata to verify dependencies * Remove the installed code * Run appropriate hook-code * Perform appropriate linking * Update system metadata based on package metadata =head2 Package Layout =head3 Project directory Step 1 of the general flow should ideally be done by an automated tool, like p5's current Module::Starter or somesuch. Suffice to say, it should produce a layout something along these lines (note, this is just an example): p5-Foo-Bar/ lib/ Foo/ Bar.pm t/ 00_load.t _jib/ META.info The actual layout will be determined by S22-package-format. The files in the _jib dir are part of the package metadata. The most important file is the META.info file that holds all the collected metadata about the package, which ideally gets filled (mostly) by what is described in step 2 of the CGeneral Flow. Any pre/posthook files should also go in this directory. This directory should be extensible, so new files can
6PAN Spec question
My question is, what sort of information actually belongs in a final version of the 6PAN spec? I'm assuming it will at least include 6PAN Package format (layout, metadata, etc), and I'd suggest that it also include the layout of packages on the 6PAN server. Some have suggested a particular install tool process/sequence, and indeed there's a lot of information currently in S22 about this. Does this actually need to be in the spec, or would we be better off having a separate 6PAN module working team that worries about this, and gets the wealth of detail out of the spec, because it seems to me like a lot of this is design notes for writing code, rather than a Spec. (If nobody objects or comments, I'll refactor it into two separate documents, S22-6PAN, and design notes for actual software). :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+++ PGP-+++ R(+) !tv b++ DI D G+ e++ h! y- -END GEEK CODE BLOCK-