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

Clarification of File::Copy documentation #15345

Closed
p5pRT opened this issue May 20, 2016 · 13 comments
Closed

Clarification of File::Copy documentation #15345

p5pRT opened this issue May 20, 2016 · 13 comments

Comments

@p5pRT
Copy link

p5pRT commented May 20, 2016

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

Searchable as RT128199$

@p5pRT
Copy link
Author

p5pRT commented May 20, 2016

From @rrthomas

Created by @rrthomas

It could be made clearer that the rmscopy function is VMS-specific. This is
implied by the mention of the function in the documentaion for syscopy, but
never explicitly stated.

If I try to import rmscopy on my GNU/Linux system, I get the error that it
is not exported; having looked up RMS and found that it’s a VMS thing, it
seems that indeed the function will only be available on VMS.

Perl Info

Flags:
    category=library
    severity=low
    module=File::Copy

Site configuration information for perl 5.18.2:

Configured by Debian Project at Tue Mar  1 17:12:59 UTC 2016.

Summary of my perl5 (revision 5 version 18 subversion 2) configuration:
   
  Platform:
    osname=linux, osvers=3.13.0-79-generic, archname=x86_64-linux-gnu-thread-multi
    uname='linux lgw01-37 3.13.0-79-generic #123-ubuntu smp fri feb 19 14:27:58 utc 2016 x86_64 x86_64 x86_64 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Dldflags= -Wl,-Bsymbolic-functions -Wl,-z,relro -Dlddlflags=-shared -Wl,-Bsymbolic-functions -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.18 -Darchlib=/usr/lib/perl/5.18 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.18.2 -Dsitearch=/usr/local/lib/perl/5.18.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.18.2 -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.8.2', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=, so=so, useshrplib=true, libperl=libperl.so.5.18.2
    gnulibc_version='2.19'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector'

Locally applied patches:
    DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
    DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
    DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
    DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories.
    DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
    DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking
    DEBPKG:fixes/respect_umask - Respect umask during installation
    DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories
    DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of libperl.a to /usr/lib
    DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
    DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile
    DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
    DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
    DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
    DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
    DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
    DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy
    DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
    DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
    DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
    DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
    DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl.
    DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/702096 Point users to Debian packages of deprecated core modules
    DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
    DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
    DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.18.2-2ubuntu1.1 in patchlevel.h
    DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD
    DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
    DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text
    DEBPKG:debian/hurd_test_skip_stack - http://bugs.debian.org/650175 Disable failing GNU/Hurd tests dist/threads/t/stack.t
    DEBPKG:fixes/manpage_name_Test-Harness - http://bugs.debian.org/650451 [rt.cpan.org #73399] cpan/Test-Harness: add NAME headings in modules with POD
    DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/660195 [rt.cpan.org #28632] Make EU::MM pass LD through to recursive Makefile.PL invocations
    DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl
    DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
    DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option not respected
    DEBPKG:fixes/net_ftp_failed_command - [rt.cpan.org #37700] http://bugs.debian.org/491062 Net::FTP: cope gracefully with a failed command
    DEBPKG:fixes/perlbug-patchlist - [3541c11] http://bugs.debian.org/710842 [perl #118433] Make perlbug look up the list of local patches at run time
    DEBPKG:fixes/module_metadata_security_doc - [68cdd4b] CVE-2013-1437 documentation fix
    DEBPKG:fixes/module_metadata_taint_fix - [bff978f] http://bugs.debian.org/722210 [rt.cpan.org #88576] untaint version, if needed, in Module::Metadata
    DEBPKG:fixes/IPC-SysV-spelling - http://bugs.debian.org/730558 [rt.cpan.org #86736] Fix spelling of IPC_CREAT in IPC-SysV documentation
    DEBPKG:fixes/fix-undef-source -
    DEBPKG:fixes/CVE-2013-7422.patch - [PATCH] [perl #119505] Segfault from bad backreference
    DEBPKG:fixes/CVE-2014-4330.patch - [PATCH] don't recurse infinitely in Data::Dumper
    DEBPKG:fixes/CVE-2016-2381.patch - [PATCH 1/2] remove duplicate environment variables from environ


@INC for perl 5.18.2:
    /home/rrt/.local/x86_64-linux-gnu-thread-multi/lib/perl/5.18.2
    /home/rrt/.local/share/perl/5.18.2
    /home/rrt/.local/share/perl
    /etc/perl
    /usr/local/lib/perl/5.18.2
    /usr/local/share/perl/5.18.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.18
    /usr/share/perl/5.18
    /usr/local/lib/site_perl
    .


Environment for perl 5.18.2:
    HOME=/home/rrt
    LANG=en_GB.UTF-8
    LANGUAGE=en_GB
    LC_ADDRESS=en_GB.UTF-8
    LC_IDENTIFICATION=en_GB.UTF-8
    LC_MEASUREMENT=en_GB.UTF-8
    LC_MONETARY=en_GB.UTF-8
    LC_NAME=en_GB.UTF-8
    LC_NUMERIC=en_GB.UTF-8
    LC_PAPER=en_GB.UTF-8
    LC_TELEPHONE=en_GB.UTF-8
    LC_TIME=en_GB.UTF-8
    LD_LIBRARY_PATH=/home/rrt/.local/lib/x86_64-linux-gnu
    LOGDIR (unset)
    PATH=/home/rrt/.local/lib/luarocks/rocks-5.3/cw/git-1/libexec/cw:/home/rrt/.local/bin/override:/home/rrt/.local/bin/x86_64-linux-gnu:/home/rrt/.local/bin:/home/rrt/.cabal/bin:/home/rrt/.gem/ruby/1.9.1/bin:/usr/lib/ccache:/home/rrt/repo/mxe/usr/bin:/usr/local/djgpp-cross/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/rrt/.local/lib/go/bin
    PERL5LIB=/home/rrt/.local/x86_64-linux-gnu-thread-multi/lib/perl/5.18.2:/home/rrt/.local/share/perl
    PERL_BADLANG (unset)
    SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented May 21, 2016

From @jkeenan

On Fri May 20 14​:28​:19 2016, rrt wrote​:

This is a bug report for perl from rrt@​sc3d.org,
generated with the help of perlbug 1.39 running under perl 5.18.2.

-----------------------------------------------------------------
[Please describe your issue here]

It could be made clearer that the rmscopy function is VMS-specific.
This is
implied by the mention of the function in the documentaion for
syscopy, but
never explicitly stated.

If I try to import rmscopy on my GNU/Linux system, I get the error
that it
is not exported; having looked up RMS and found that it’s a VMS thing,
it
seems that indeed the function will only be available on VMS.

Would you be able to supply a patch for the area where you think improvements are needed? (Preferably drawn against blead or perl 5.24.)

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented May 21, 2016

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

@p5pRT
Copy link
Author

p5pRT commented May 21, 2016

From @ap

* rrt@​sc3d.org <perlbug-followup@​perl.org> [2016-05-21 00​:23]​:

If I try to import rmscopy on my GNU/Linux system, I get the error
that it is not exported; having looked up RMS and found that it’s
a VMS thing, it seems that indeed the function will only be available
on VMS.

In fact things go even further than that. It is never exported, *ever*,
*even* on VMS.

*However*, under VMS, you can *always* call File​::Copy​::rmscopy - even
without loading the module at all (much like calling utf8​::encode does
not require loading utf8.pm).

Now, adding a sentence that the function is VMS-only is trivial enough.

But I’m unclear on whether the exact status of the function ought to be
documented. I do lean toward yes, because given that things are as they
are, this could not be changed without a deprecation cycle anyhow. I’m
not sure that I’m not missing a convincing argument against it, though.

Regards,
--
Aristotle Pagaltzis // <http​://plasmasturm.org/>

@p5pRT
Copy link
Author

p5pRT commented May 21, 2016

From @rrthomas

On 21 May 2016 at 03​:23, James E Keenan via RT <perlbug-followup@​perl.org>
wrote​:

On Fri May 20 14​:28​:19 2016, rrt wrote​:

Would you be able to supply a patch for the area where you think
improvements are needed? (Preferably drawn against blead or perl 5.24.)

​I think in this case it's better if we each spend time maintaining
software we're expert on, especially as Aristotle Pagaltzis suggests that
the issue is not simply one of adding a "VMS-specific" badge.

If it were possible simply to suggest small edits directly in the web page
à la Medium, or even directly in the source à la GitHub, I'd be more
inclined to offer actual patches; as it is, I'd presumably have to check
out some source from somewhere and then work out what "blead" is &c.​: a
bunch of learning I have no intention of reusing.

The other useful thing would be a style guide; I found perlpodstyle, but
this doesn't mention how to flag platform-specific features. Again, this is
looking like an hour of work for me, or a few minutes for someone who knows
what they're doing. Better I spend that hour working on free software I
already deeply understand.

I do understand that there are too few of you faced with a mountain of
work; but this is true of most of the free software projects I devote my
time to.

--
http​://rrt.sc3d.org

@p5pRT
Copy link
Author

p5pRT commented May 24, 2016

From @xsawyerx

On 05/21/2016 07​:46 AM, Aristotle Pagaltzis wrote​:

* rrt@​sc3d.org <perlbug-followup@​perl.org> [2016-05-21 00​:23]​:

If I try to import rmscopy on my GNU/Linux system, I get the error
that it is not exported; having looked up RMS and found that it’s
a VMS thing, it seems that indeed the function will only be available
on VMS.
In fact things go even further than that. It is never exported, *ever*,
*even* on VMS.

*However*, under VMS, you can *always* call File​::Copy​::rmscopy - even
without loading the module at all (much like calling utf8​::encode does
not require loading utf8.pm).

Now, adding a sentence that the function is VMS-only is trivial enough.

But I’m unclear on whether the exact status of the function ought to be
documented. I do lean toward yes, because given that things are as they
are, this could not be changed without a deprecation cycle anyhow. I’m
not sure that I’m not missing a convincing argument against it, though.

Considering this poses a special case, it might help documenting this in
a simply way, perhaps along the lines[1] of "This function may only be
called on VMS and using its fully qualified name​: File​::Copy​::rmscopy".

@p5pRT
Copy link
Author

p5pRT commented Jun 2, 2016

From @tonycoz

On Fri May 20 14​:28​:19 2016, rrt wrote​:

It could be made clearer that the rmscopy function is VMS-specific.
This is
implied by the mention of the function in the documentaion for
syscopy, but
never explicitly stated.

If I try to import rmscopy on my GNU/Linux system, I get the error
that it
is not exported; having looked up RMS and found that it’s a VMS thing,
it
seems that indeed the function will only be available on VMS.

How about the attached?

Tony

@p5pRT
Copy link
Author

p5pRT commented Jun 2, 2016

From @tonycoz

0001-perl-128199-rmscopy-is-VMS-specific-and-not-exported.patch
From 5889a3520c0f42ac247dc3c8b5e6c04d2d114c16 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Thu, 2 Jun 2016 14:13:14 +1000
Subject: [PATCH] (perl #128199) rmscopy() is VMS specific and not exported

The first is kind of implied by the text, but make it explicit.
---
 lib/File/Copy.pm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm
index 842bd31..330e2df 100644
--- a/lib/File/Copy.pm
+++ b/lib/File/Copy.pm
@@ -22,7 +22,7 @@ sub syscopy;
 sub cp;
 sub mv;
 
-$VERSION = '2.31';
+$VERSION = '2.32';
 
 require Exporter;
 @ISA = qw(Exporter);
@@ -479,6 +479,11 @@ from the input filespec, then all timestamps other than the
 revision date are propagated.  If this parameter is not supplied,
 it defaults to 0.
 
+C<rmscopy> is VMS specific and cannot be exported, it must be
+referenced by its full name, eg:
+
+  File::Copy::rmscopy($from, $to) or die $!;
+
 Like C<copy>, C<rmscopy> returns 1 on success.  If an error occurs,
 it sets C<$!>, deletes the output file, and returns 0.
 
-- 
2.1.4

@p5pRT
Copy link
Author

p5pRT commented Jun 2, 2016

From @rrthomas

On 2 June 2016 at 05​:13, Tony Cook via RT <perlbug-followup@​perl.org> wrote​:

On Fri May 20 14​:28​:19 2016, rrt wrote​:

It could be made clearer that the rmscopy function is VMS-specific.
This is
implied by the mention of the function in the documentaion for
syscopy, but
never explicitly stated.

If I try to import rmscopy on my GNU/Linux system, I get the error
that it
is not exported; having looked up RMS and found that it’s a VMS thing,
it
seems that indeed the function will only be available on VMS.

How about the attached?

​That's great; a couple of language fixes​:​

+C<rmscopy> is VMS specific and cannot be exported, it must be

​Change comma after "exported" to semi-colon.​

+referenced by its full name, eg​:

​"eg" should be "e.g.".​

​Thanks very much for this.

--
http​://rrt.sc3d.org

@p5pRT
Copy link
Author

p5pRT commented Jun 15, 2016

From @tonycoz

On Thu Jun 02 01​:53​:00 2016, rrt wrote​:

On 2 June 2016 at 05​:13, Tony Cook via RT <perlbug-followup@​perl.org> wrote​:

How about the attached?

​That's great; a couple of language fixes​:​

+C<rmscopy> is VMS specific and cannot be exported, it must be

​Change comma after "exported" to semi-colon.​

+referenced by its full name, eg​:

​"eg" should be "e.g.".​

​Thanks very much for this.

Thanks, adjustments made and applied in 4ef6d38.

Tony

@p5pRT
Copy link
Author

p5pRT commented Jun 15, 2016

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

@p5pRT
Copy link
Author

p5pRT commented May 30, 2017

From @khwilliamson

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

With the release today of Perl 5.26.0, this and 210 other issues have been
resolved.

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

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

@p5pRT
Copy link
Author

p5pRT commented May 30, 2017

@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
Development

No branches or pull requests

1 participant