andk / pause

Perl authors upload server
http://pause.perl.org/
150 stars 58 forks source link

Two packages of the same distribution file return different versions #75

Closed sjackman closed 10 years ago

sjackman commented 10 years ago

Why do these two packages of the same distribution file return different versions?

➜  ~  curl http://cpanmetadb.plackperl.org/v1.0/package/Bio::Root::Version

---
distfile: C/CJ/CJFIELDS/BioPerl-1.6.923.tar.gz
version: 1.006923
➜  ~  curl http://cpanmetadb.plackperl.org/v1.0/package/Bio::Perl         

---
distfile: C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz
version: 1.006922

See http://search.cpan.org/~cjfields/BioPerl-1.6.923/Bio/Perl.pm http://search.cpan.org/~cjfields/BioPerl-1.6.923/Bio/Root/Version.pm

sjackman commented 10 years ago
$ curl http://www.cpan.org/modules/02packages.details.txt.gz |gzcat |grep Bio:: |grep -o '1.6.92.' |sort |uniq -c
 821 1.6.922
   3 1.6.923

$ curl http://www.cpan.org/modules/02packages.details.txt.gz |gzcat |grep Bio:: |grep '1.6.923'   
Bio::DB::SeqFeature::Store::LoadHelper 1.10  C/CJ/CJFIELDS/BioPerl-1.6.923.tar.gz
Bio::Root::Build               1.006923  C/CJ/CJFIELDS/BioPerl-1.6.923.tar.gz
Bio::Root::Version             1.006923  C/CJ/CJFIELDS/BioPerl-1.6.923.tar.gz
sjackman commented 10 years ago

This issue was originally reported at https://github.com/miyagawa/cpanmetadb-perl/issues/3

sjackman commented 10 years ago

@cjfields Ping

karenetheridge commented 10 years ago

On Tue, Feb 25, 2014 at 02:34:16PM -0800, Shaun Jackman wrote:

Why do these two packages of the same distribution file return different versions?

➜  ~  curl http://cpanmetadb.plackperl.org/v1.0/package/Bio::Root::Version
---
distfile: C/CJ/CJFIELDS/BioPerl-1.6.923.tar.gz
version: 1.006923
➜  ~  curl http://cpanmetadb.plackperl.org/v1.0/package/Bio::Perl         
---
distfile: C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz
version: 1.006922

See http://search.cpan.org/~cjfields/BioPerl-1.6.923/Bio/Perl.pm http://search.cpan.org/~cjfields/BioPerl-1.6.923/Bio/Root/Version.pm

Bio::Perl in the 1.6.923 release did not get indexed. Without access to the PAUSE logs (or the email receipt that the author would have received after performing the upload) I cannot tell you why precisely, but I can tell you that specifying the version number like that is going to be problematic. Versions are extracted by static analysis, and all the information necessary to resolve the version must be on one line, which is not the case in this module.

andk commented 10 years ago

Karen Etheridge notifications@github.com writes:

Bio::Perl in the 1.6.923 release did not get indexed. Without access to the PAUSE logs (or the email receipt that the author would have received after performing the upload) I cannot tell you why precisely, but I can tell you that specifying the version number like that is going to be problematic. Versions are extracted by static analysis, and all the information necessary to resolve the version must be on one line, which is not the case in this module.

Here is the mail that was sent to cjfields from pause, email addresses are edited, large, boring block is marked with an ellipsis. The whole thing would be ~5800 lines.

  From: PAUSE <upload@pause.perl.org>
  Subject: Failed: PAUSE indexer report CJFIELDS/BioPerl-1.6.923.tar.gz
  To: cjfields..., andreas.koenig...
  Date: Wed, 18 Dec 2013 05:26:49 +0000

  The following report has been written by the PAUSE namespace indexer.
    Please contact modules@perl.org if there are any open questions.

    User: CJFIELDS (Christopher Fields)
    Distribution file: BioPerl-1.6.923.tar.gz
    Number of files: 2124
    *.pm files: 822
    README: BioPerl-1.6.923/README
    META-File: BioPerl-1.6.923/META.json
    META-Parser: Parse::CPAN::Meta 1.4404
    META-driven index: no
    Timestamp of file: Wed Dec 18 05:15:50 2013 UTC
    Time of this run: Wed Dec 18 05:26:49 2013 UTC

  Status of this distro: Version parsing problem
  ==============================================

  The following packages (grouped by status) have been found in the distro:

  Status: Version parsing problem
            ===============================

       module: Bio::Root::RootI
            version: undef
            in file: BioPerl-1.6.923/Bio/Root/RootI.pm
            status: The PAUSE indexer was not able to parse the following line
               in that file: C< if ($Bio::Root::Version::VERSION >=
               $version) { > Note: the indexer is running in a Safe
               compartement and cannot provide the full functionality of
               perl in the VERSION line. It is trying hard, but sometime
               it fails. As a workaround, please consider writing a
               META.yml that contains a 'provides' attribute or contact
               the CPAN admins to investigate (yet another) workaround
               against "Safe" limitations.)

  Status: Decreasing version number
            =================================

       module: Bio::Align::AlignI
            version: undef
            in file: BioPerl-1.6.923/Bio/Align/AlignI.pm
            status: Not indexed because Bio/Align/AlignI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Align::DNAStatistics
            version: undef
            in file: BioPerl-1.6.923/Bio/Align/DNAStatistics.pm
            status: Not indexed because Bio/Align/DNAStatistics.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Align::Graphics
            version: undef
            in file: BioPerl-1.6.923/Bio/Align/Graphics.pm
            status: Not indexed because Bio/Align/Graphics.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Align::PairwiseStatistics
            version: undef
            in file: BioPerl-1.6.923/Bio/Align/PairwiseStatistics.pm
            status: Not indexed because Bio/Align/PairwiseStatistics.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Align::ProteinStatistics
            version: undef
            in file: BioPerl-1.6.923/Bio/Align/ProteinStatistics.pm
            status: Not indexed because Bio/Align/ProteinStatistics.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Align::StatisticsI
            version: undef
            in file: BioPerl-1.6.923/Bio/Align/StatisticsI.pm
            status: Not indexed because Bio/Align/StatisticsI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Align::Utilities
            version: undef
            in file: BioPerl-1.6.923/Bio/Align/Utilities.pm
            status: Not indexed because Bio/Align/Utilities.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO.pm
            status: Not indexed because Bio/AlignIO.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::Handler::GenericAlignHandler
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/Handler/GenericAlignHandler.pm
            status: Not indexed because
               Bio/AlignIO/Handler/GenericAlignHandler.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::arp
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/arp.pm
            status: Not indexed because Bio/AlignIO/arp.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::bl2seq
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/bl2seq.pm
            status: Not indexed because Bio/AlignIO/bl2seq.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::clustalw
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/clustalw.pm
            status: Not indexed because Bio/AlignIO/clustalw.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::emboss
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/emboss.pm
            status: Not indexed because Bio/AlignIO/emboss.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::fasta
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/fasta.pm
            status: Not indexed because Bio/AlignIO/fasta.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::largemultifasta
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/largemultifasta.pm
            status: Not indexed because Bio/AlignIO/largemultifasta.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::maf
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/maf.pm
            status: Not indexed because Bio/AlignIO/maf.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::mase
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/mase.pm
            status: Not indexed because Bio/AlignIO/mase.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::mega
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/mega.pm
            status: Not indexed because Bio/AlignIO/mega.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::meme
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/meme.pm
            status: Not indexed because Bio/AlignIO/meme.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::metafasta
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/metafasta.pm
            status: Not indexed because Bio/AlignIO/metafasta.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::msf
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/msf.pm
            status: Not indexed because Bio/AlignIO/msf.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::nexml
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/nexml.pm
            status: Not indexed because Bio/AlignIO/nexml.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::nexus
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/nexus.pm
            status: Not indexed because Bio/AlignIO/nexus.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::pfam
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/pfam.pm
            status: Not indexed because Bio/AlignIO/pfam.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::phylip
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/phylip.pm
            status: Not indexed because Bio/AlignIO/phylip.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::po
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/po.pm
            status: Not indexed because Bio/AlignIO/po.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::proda
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/proda.pm
            status: Not indexed because Bio/AlignIO/proda.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::prodom
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/prodom.pm
            status: Not indexed because Bio/AlignIO/prodom.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::psi
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/psi.pm
            status: Not indexed because Bio/AlignIO/psi.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::selex
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/selex.pm
            status: Not indexed because Bio/AlignIO/selex.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::stockholm
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/stockholm.pm
            status: Not indexed because Bio/AlignIO/stockholm.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AlignIO::xmfa
            version: undef
            in file: BioPerl-1.6.923/Bio/AlignIO/xmfa.pm
            status: Not indexed because Bio/AlignIO/xmfa.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AnalysisI
            version: undef
            in file: BioPerl-1.6.923/Bio/AnalysisI.pm
            status: Not indexed because Bio/AnalysisI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AnalysisI::JobI
            version: undef
            in file: BioPerl-1.6.923/Bio/AnalysisI.pm
            status: Not indexed because Bio/AnalysisI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AnalysisParserI
            version: undef
            in file: BioPerl-1.6.923/Bio/AnalysisParserI.pm
            status: Not indexed because Bio/AnalysisParserI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AnalysisResultI
            version: undef
            in file: BioPerl-1.6.923/Bio/AnalysisResultI.pm
            status: Not indexed because Bio/AnalysisResultI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::AnnotatableI
            version: undef
            in file: BioPerl-1.6.923/Bio/AnnotatableI.pm
            status: Not indexed because Bio/AnnotatableI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Annotation::AnnotationFactory
            version: undef
            in file: BioPerl-1.6.923/Bio/Annotation/AnnotationFactory.pm
            status: Not indexed because Bio/Annotation/AnnotationFactory.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Annotation::Collection
            version: undef
            in file: BioPerl-1.6.923/Bio/Annotation/Collection.pm
            status: Not indexed because Bio/Annotation/Collection.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Annotation::Comment
            version: undef
            in file: BioPerl-1.6.923/Bio/Annotation/Comment.pm
            status: Not indexed because Bio/Annotation/Comment.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Annotation::DBLink
            version: undef
            in file: BioPerl-1.6.923/Bio/Annotation/DBLink.pm
            status: Not indexed because Bio/Annotation/DBLink.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Annotation::OntologyTerm
            version: undef
            in file: BioPerl-1.6.923/Bio/Annotation/OntologyTerm.pm
            status: Not indexed because Bio/Annotation/OntologyTerm.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::Annotation::Reference
            version: undef
            in file: BioPerl-1.6.923/Bio/Annotation/Reference.pm
            status: Not indexed because Bio/Annotation/Reference.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)
  [...]
       module: Bio::Variation::VariantI
            version: undef
            in file: BioPerl-1.6.923/Bio/Variation/VariantI.pm
            status: Not indexed because Bio/Variation/VariantI.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: Bio::WebAgent
            version: undef
            in file: BioPerl-1.6.923/Bio/WebAgent.pm
            status: Not indexed because Bio/WebAgent.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

       module: FeatureStore
            version: undef
            in file: BioPerl-1.6.923/Bio/DB/GFF/Adaptor/berkeleydb.pm
            status: Not indexed because Bio/DB/GFF/Adaptor/berkeleydb.pm in
               C/CJ/CJFIELDS/BioPerl-1.6.922.tar.gz has a higher version
               number (1.006922)

  Status: Successfully indexed
            ============================

       module: Bio::DB::SeqFeature::Store::LoadHelper
            version: 1.10
            in file: BioPerl-1.6.923/Bio/DB/SeqFeature/Store/LoadHelper.pm
            status: indexed

       module: Bio::Root::Build
            version: 1.006923
            in file: BioPerl-1.6.923/Bio/Root/Build.pm
            status: indexed

       module: Bio::Root::Version
            version: 1.006923
            in file: BioPerl-1.6.923/Bio/Root/Version.pm
            status: indexed

       module: BioPerl
            version: undef
            in file: BioPerl-1.6.923/BioPerl.pm
            status: indexed

       module: Deobfuscator
            version: 0.000003
            in file: BioPerl-1.6.923/doc/Deobfuscator/lib/Deobfuscator.pm
            status: indexed

       module: TestInterface
            version: undef
            in file: BioPerl-1.6.923/examples/root/lib/TestInterface.pm
            status: indexed

       module: TestObject
            version: undef
            in file: BioPerl-1.6.923/examples/root/lib/TestObject.pm
            status: indexed

       module: required
            version: undef
            in file: BioPerl-1.6.923/Bio/Nexml/Factory.pm
            status: indexed

  __END__
sjackman commented 10 years ago

@cjfields Would you be able to respond to Karen's (@andk) comment above?

tsibley commented 10 years ago

The same issue was also raised on rt.cpan.org's BioPerl queue: https://rt.cpan.org/Ticket/Display.html?id=92064

cjfields commented 10 years ago

@sjackman pings on my account are going to a different email that I check irregularly (in fact, @tsibley added a comment to RT that came up).

The main problem is the hacky way that Bioperl assigns a VERSION to each of the Bio::Root::RootI-based classes through a have using a BEGIN block. This worked until fairly recently. I can attempt a re-indexing, but the fact is that the hack is still there, and it should probably be fixed at either the META level or by an explicit version in each of the modules.

cjfields commented 10 years ago

I'll try to have a look at it this weekend, can't promise much. Fulltime job and all.

sjackman commented 10 years ago

Thanks, Chris.

tsibley commented 10 years ago

I don't believe this a bug in PAUSE, so this issue should be closed. The BioPerl ticket in rt.cpan.org, mentioned above, is the appropriate forum.

sjackman commented 10 years ago

This issue is beyond my PERL fu. Could you please follow up on the appropriate forum?

cjfields commented 10 years ago

@tsibley the official bug tracker is not RT but github (e.g. this tracker). We're working on consolidating the various teachers into one place.

re: versioning issues: the main problem we currently appear to have is a legacy hacky method for assigning versions that needs to be replaced. Secondary but related, a few modules arbitrarily have a different version number that also causes problems. So, it will prob require some meta data fiddling to get right.

cjfields commented 10 years ago

Sorry, I meant the Issues tracker for Bioperl on github. Happens when I reply by phone :p

cjfields commented 10 years ago

Posted on bioperl tracker since the problem is really there:

https://github.com/bioperl/bioperl-live/issues/87

Should this ticket be closed out?

andk commented 10 years ago

Looks like closing on the pause tracker is being called for. Thanks, everybody!