Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'--splithead' option to 'installhtml' fails to clean up after itself #12305

Closed
p5pRT opened this issue Jul 30, 2012 · 6 comments

Comments

@p5pRT
Copy link
Collaborator

@p5pRT p5pRT commented Jul 30, 2012

Migrated from rt.perl.org#114316 (status was 'resolved')

Searchable as RT114316$

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jul 30, 2012

From @jkeenan

This is a bug report for perl from jkeenan@​cpan.org,
generated with the help of perlbug 1.39 running under perl 5.16.0.

In the course of studying and working on Pod-Html
(https://github.com/jkeenan/Pod-Html), I have also had occasion to study
the program 'installhtml' which is included in the Perl 5 core
distribution. 'installhtml' is a program which prepares and executes
repeated calls of Pod​::Html​::pod2html() on a selection of files
containing documentation in POD format. That preparatory code is
documented in a usage() statement but is non-trivial, only partially
encapsulated in subroutines and lacks unit tests. I have begun writing
such unit tests and, not surprisingly, have begun to come across that I
think are bugs. This is the first of what are likely to be a series of
bug reports.

Bug​: The '--splithead' option to 'installhtml' fails to clean up after
itself.

'installhtml' documents the '--splithead' option as follows​:

#####
--splithead​: POD files to split on =head directive

Comma-separated list of pod files to split by the =head directive. The
.pod suffix is optional. These files should have names specified
relative to podroot.
#####

Let's suppose that I have several files containing POD named like this​:

#####
xt/split/splithead1.pod
xt/split/splithead2.pod
#####

... and that these files have contents like this​:

#####
$ cat xt/split/splithead1.pod
=head1 Feature A

A paragraph

=head1 Feature B

some text but not a link

=cut
#####

I would expect that if I were to call​:

#####
installhtml \
  --podroot=./xt \
  --podpath=split \
  --splithead=split/splithead1.pod,split/splithead2.pod \
  --htmldir=./tmphtml \
  --recurse
#####

... I would end up with these new .html files​:

#####
tmphtml/split/splithead1.html
tmphtml/split/splithead1/feature_a.html
tmphtml/split/splithead1/feature_b.html
tmphtml/split/splithead1.html
tmphtml/split/splithead2/feature_c.html
tmphtml/split/splithead2/feature_d.html
#####

But I would *not* expect to end up with any new .pod files under
xt/split/. In other words, I would expect 'installhtml' to remove any
.pod files it created as intermediate steps toward the creation of
per-POD-head .pod files.

In fact, however, 'installhtml' creates intermediate .pod files and
directories to hold those files​:

#####
./xt/split/splithead1.pod
./xt/split/splithead1/feature_a.pod
./xt/split/splithead1/feature_b.pod
./xt/split/splithead2.pod
./xt/split/splithead2/feature_c.pod
./xt/split/splithead2/feature_d.pod
#####

The splithead1/ and splithead2/ subdirectories and the four
'feature-*.pod' files, AFAICT, serve no purpose after the corresponding
.html files have been created.

These .pod files and directories ought to be cleaned up automatically;
currently, they are not. This needs to be fixed, perhaps by using
File​::Temp to create a tempdir in which to perform these intermediate steps.

(At https://github.com/jkeenan/Pod-Html/tree/fork_original I have add
t/install_html_splithead.t which contains TODO-ed tests concerning this
lack of cleanup. The 'fork_original' branch is intended to be Pod​::Html
and installhtml as they are found in blead, with source code modified
just enough to get them to enable them to be tested with 'dzil test'.)

Thank you very much.
Jim Keenan


Flags​:
  category=utilities
  severity=low


Site configuration information for perl 5.16.0​:

Configured by jimk at Sun May 20 20​:01​:26 EDT 2012.

Summary of my perl5 (revision 5 version 16 subversion 0) configuration​:

  Platform​:
  osname=darwin, osvers=8.11.0, archname=darwin-2level
  uname='darwin macintosh-8.local 8.11.0 darwin kernel version
8.11.0​: wed oct 10 18​:26​:00 pdt 2007; root​:xnu-792.24.17~1release_ppc
power macintosh powerpc '
  config_args='-des'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=undef, usemultiplicity=undef
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=undef, use64bitall=undef, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing
-pipe -I/usr/local/include -I/opt/local/include',
  optimize='-O3',
  cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe
-I/usr/local/include -I/opt/local/include'
  ccversion='', gccversion='4.0.1 (Apple Computer, Inc. build 5250)',
gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='
-L/usr/local/lib -L/opt/local/lib'
  libpth=/usr/local/lib /opt/local/lib /usr/lib
  libs=-ldbm -ldl -lm -lc
  perllibs=-ldl -lm -lc
  libc=, so=dylib, useshrplib=false, libperl=libperl.a
  gnulibc_version=''
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
  cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup
-L/usr/local/lib -L/opt/local/lib'

Locally applied patches​:


@​INC for perl 5.16.0​:
  /usr/local/lib/perl5/site_perl/5.16.0/darwin-2level
  /usr/local/lib/perl5/site_perl/5.16.0
  /usr/local/lib/perl5/5.16.0/darwin-2level
  /usr/local/lib/perl5/5.16.0
  /usr/local/lib/perl5/site_perl/5.14.2
  /usr/local/lib/perl5/site_perl/5.14.0
  /usr/local/lib/perl5/site_perl/5.12.0
  /usr/local/lib/perl5/site_perl/5.10.1
  /usr/local/lib/perl5/site_perl/5.10.0
  /usr/local/lib/perl5/site_perl
  .


Environment for perl 5.16.0​:

DYLD_LIBRARY_PATH=/Users/jimk/work/pseudoinstall/lib​:/Users/jimk/gitwork/parrot/blib/lib
  HOME=/Users/jimk
  LANG (unset)
  LANGUAGE (unset)
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)

PATH=/usr/local/bin​:/opt/local/bin​:/opt/local/sbin​:/usr/local/bin​:/opt/local/bin​:/opt/local/sbin​:/bin​:/sbin​:/usr/bin​:/usr/sbin​:/Users/jimk/bin​:/Users/jimk/bin/perl​:/Users/jimk/bin/c​:/Users/jimk/bin/shell​:/sw/lib​:/sw/bin​:/Users/jimk/bin​:/Users/jimk/bin/perl​:/Users/jimk/bin/c​:/Users/jimk/bin/shell​:/sw/lib​:/sw/bin
  PERL_BADLANG (unset)
  SHELL=/bin/bash

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Dec 15, 2017

From zefram@fysh.org

Fixed in commit bddfdac.

-zefram

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Dec 15, 2017

The RT System itself - Status changed from 'new' to 'open'

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Dec 15, 2017

@iabyn - Status changed from 'open' to 'pending release'

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 23, 2018

From @khwilliamson

Thank you for filing this report. You have helped make Perl better.

With the release yesterday of Perl 5.28.0, this and 185 other issues have been
resolved.

Perl 5.28.0 may be downloaded via​:
https://metacpan.org/release/XSAWYERX/perl-5.28.0

If you find that the problem persists, feel free to reopen this ticket.

@p5pRT p5pRT closed this Jun 23, 2018
@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 23, 2018

@khwilliamson - Status changed from 'pending release' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.