Skip Menu |

This queue is for tickets about the Email-Outlook-Message CPAN distribution.

Report information
The Basics
Id: 129506
Status: resolved
Priority: 0/
Queue: Email-Outlook-Message

People
Owner: Nobody in particular
Requestors: mhasch-cpanbugs [...] cozap.com
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in:
  • 0.916
  • 0.917
  • 0.918
  • 0.919
Fixed in: (no value)



Subject: removal of $VERSION in submodules breaks automatic upgrade
Submodules Email::Outlook::Message::AddressInfo, Email::Outlook::Message::Attachment, and Email::Outlook::Message::Base had a $VERSION variable up to version 0.915. From version 0.916, they were shipped without $VERSION. This makes module installers see the "latest" version of Email::Outlook::Message::AddressInfo etc. in an outdated release, MVZ/Email-Outlook-Message-0.915.tar.gz, and an attempt to upgrade all modules on a platform with, say, Email-Outlook-Message-0.919 will downgrade to 0.915 in order to provide the "most recent" versions of those submodules. In summary, in order not to confuse installers, $VERSION variables should increase from release to release and never be dropped. It is a fail-safe practice to keep submodule versions in sync with main module versions they come bundled with. Please re-establish module versions in all modules that once had them. -Martin
Hi Martin, Thanks for your report. I'm willing to do this if there's no other way but first I have some questions: - Adding version info to what are essentially internal modules was a mistake. Is it impossible to correct this? - Why do installers not take the package version into account, rather than versions of individual modules? - What happens if these modules go away entirely? How will the system respond to that? On Fri May 10 04:32:09 2019, MHASCH wrote: Show quoted text
> Submodules Email::Outlook::Message::AddressInfo, > Email::Outlook::Message::Attachment, and Email::Outlook::Message::Base > had a $VERSION variable up to version 0.915. From version 0.916, they > were shipped without $VERSION. > > This makes module installers see the "latest" version of > Email::Outlook::Message::AddressInfo etc. in an outdated release, > MVZ/Email-Outlook-Message-0.915.tar.gz, and an attempt to upgrade > all modules on a platform with, say, Email-Outlook-Message-0.919 will > downgrade to 0.915 in order to provide the "most recent" versions of > those submodules. > > In summary, in order not to confuse installers, $VERSION variables > should increase from release to release and never be dropped. It is a > fail-safe practice to keep submodule versions in sync with main module > versions they come bundled with. > > Please re-establish module versions in all modules that once had them. > > -Martin
Subject: Re: [rt.cpan.org #129506] removal of $VERSION in submodules breaks automatic upgrade
Date: Mon, 13 May 2019 09:56:45 +0200
To: Matijs van Zuijlen via RT <bug-Email-Outlook-Message [...] rt.cpan.org>
From: Martin Becker <mhasch-cpanbugs [...] cozap.com>
On Fri, May 10, 2019 at 06:49:44AM -0400, Matijs van Zuijlen via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=129506 > > > Thanks for your report. I'm willing to do this if there's no other > way but first I have some questions: > > - Adding version info to what are essentially internal modules was a > mistake. Is it impossible to correct this?
One would have to remove all versioned distributions of those modules from CPAN to prevent these from replacing unversioned ones. Not impossible but perhaps undesirable if old versions are kept for the sake of late adopters of substantial changes. Show quoted text
> - Why do installers not take the package version into account, rather > than versions of individual modules?
At runtime, perl will only see version numbers as they are stored in modules, not being able to trace them back to distributions. Thus the comparison of what is locally installed to what is in a particular distribution can only be done at module level. Show quoted text
> - What happens if these modules go away entirely? How will the system > respond to that?
Platforms with older versions of these modules might "upgrade" to the latest distribution that still had them. They could still install later versions of your distribution on top of that, though. Killing modules for good is not trivial, as there is no standard mechanism to make platforms uninstall an old module without a replacement. You could create new empty module versions and eventually put them in a separate distribution. Upgrades to that distribution would not interfere with future versions of the original distribution, nor would they leave lots of dead code on the target systems. Over time, your deprecated modules would phase out, as nobody intentionally would name them as a prerequisite, and new installations would deploy your module suite without them. Maybe it is time to persuade the tool chain gang to address more life cycle related issues in distribution metadata and tools. This is a tricky business and not made any easier by our devotion to maintain backwards compatibility wherever possible. -Martin
It took a while, but this has been fixed in version 0.920.