Scott -- that sounds like a great analysis and bit of work.  I'm not
doing any non-critical M::B patching at the moment, so could you
please add your comments and patch to the RT#53478 ticket so it
doesn't get lost?

Thanks,
David

On Tue, Jan 26, 2010 at 8:27 PM, Scott Renner <sren...@comcast.net> wrote:
> Hello,
>
>
>
> I recently encountered a problem with the tarballs generated by
> Module::Build reported a bug a few weeks ago.  I got a mail the next
>  morning that it had recently been fixed.   Thanks!!!
>
>
>
> I noticed bug #53478 “Diffs with Active State HTML generation and PPM
> compatibility” because  I am working on a utility to fix broken links in the
> HTML documentation that are caused by a variety of reasons (mostly due to
> pod2html inability to figure out links correctly.)   Anyway,  I have become
> very familiar with ActiveState HTML generation routines (and pod2html) and
> have come up with fixes for Module::Build that will address all of the HTML
> generation issues, including the generation of the Table of Contents on
>  ActivePerl installations.
>
>
>
> The fixes are pretty simple and I’ve attached Module::Build::Base.pm with my
> the changes.  The changes are based on build 0.3603, with a new version of
> 0.36031.
>
>
>
> I’ve tested quite a bit (doing a variety builds, install, ppminstall, dist,
> ppmdist, etc.) and everything works as it should, but I am limited to
> Windows for testing.   I’ve tested on Perl 5.8 and 5.10 (both AS and
> standard).
>
>
>
> With these updates, there is no need to make changes to EU:Install  to get
> the html documentation working properly on any type of installation.
>
>
>
> Here is a summary of the changes….
>
>
>
> In the section setting default properties… (line 929)
>
>
>
> Deleted the property “html_css”, it is no longer needed or used.
>
>
>
> sub _is_ActivePerl (line 3034)
>
>
>
> New method that returns true if running on an ActivePerl installation.  Is
> set using the same eval (require ActivePerl::DocTools) that was used to set
> the property “html_css”.    This is not a property because its value needs
> to be determined when the installation is run, not the value on the  system
> that built the package.
>
>
>
> sub ACTION_manpages (line 3039)
>
>
>
> I removed the check to see if there are any files to process, because this
> is performed in both the ‘manify’ subs.  No point in doing the check twice.
>
>
>
> sub ACTION_html (line 3133)
>
>
>
> I also optimized this sub as well.   ‘htmlify_pods’ checks if there are no
> files to process, so there really isn’t any point in doing the check here
> too.
>
>
>
> Sub htmlify_pods (line 3172)
>
>
>
> I saw the comment that says “Links to other modules are not being generated”
> and saw the problem.  The original code uses “$self->blib” as the “podroot”
> and “podpath” only points to directories in “blib”.   “podroot” must be the
> absolute path to the directory where the installed pod files are stored, and
> “podpath” can be relative directories off of podroot, plus an absolute path
> to the “blib” directory.    With this code,  all links are generated
> properly.
>
>
>
> If $self->_is_ActivePerl is true, we use ActivePerl::DocTools::Pod::pod2html
> to generate the HTML documentation, otherwise we use Pod::Html:pod2html to
> create it.  The ActivePerl version also uses Pod::Html::pod2html, but then
> does some post processing on the HTML files to format them in the ActivePerl
> style.
>
>
>
> I also added code to do some cleanup on the html files after they are
> generated by pod2html.    The generated HTML is NOT XHMTL, so the DOCTYPE is
> wrong.  IE6+ will not display the page if it does not pass validation based
> on the DOCTYPE.  Local pages also need this statement in the <HEAD> “<!--
> saved from url=(0017)http://localhost/ -->” for IE6+ to load local html
> pages (file://) if certain security settings on the user’s PC are strict.
> Lastly anchor references to html pages within the package point to the
> “blib” directory.  These are fixed up so they point to where they will be
> after they are installed.
>
>
>
> sub ACTION_install (line 3357)
>
>
>
> Added logic to check if ‘$self->is_ActivePerl’ is true, and run
> ActivePerl::DocTools::WriteTOC().  WriteTOC() is the ActivePerl routine that
> updates the ActivePerl Table of Contents page and must be run AFTER the all
> the html files have been installed.
>
>
>
> sub ACTION_ppmdist (line 3515)
>
>
>
> You don’t need to generate HTML documentation when creating a PPM
> distribution, because it is generated automatically by the ppm client at
> install.   This is noted in the fact that “libdoc” and “bindoc” are set to
> “undef”.   I commented out the lines that generate the HTML.
>
>
>
> sub install_map (line 4830)
>
>
>
> Added some logic so that man pages are not installed unless you are running
> on a Unix like operating system.
>
>
>
> Feel free to use these changes and to contact me if you have any questions
> or comments.  I’m glad to help in any way I can.
>
>
>
> Scott Renner
>
>

Reply via email to