Skip Menu |

Preferred bug tracker

Please email the preferred bug tracker to report your issue.

This queue is for tickets about the Astro-SpaceTrack CPAN distribution.

Report information
The Basics
Id: 127371
Status: resolved
Priority: 0/
Queue: Astro-SpaceTrack

People
Owner: Nobody in particular
Requestors: SREZIC [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.094_01
Fixed in: 0.119_02



Subject: Builds fails without HTTP::Date
If HTTP::Date is not installed, then automatic installation using a CPAN client fails: ... Output from '/usr/perl5.28.0p/bin/perl Build.PL': Can't locate HTTP/Date.pm in @INC (you may need to install the HTTP::Date module) (@INC contains: inc /var/tmp/cpansmoker-1001/2018101415/CPAN-Reporter-lib-9x_a /usr/perl5.28.0p/lib/site_perl/5.28.0/amd64-freebsd /usr/perl5.28.0p/lib/site_perl/5.28.0 /usr/perl5.28.0p/lib/5.28.0/amd64-freebsd /usr/perl5.28.0p/lib/5.28.0 .) at inc/My/Module/Test.pm line 12. BEGIN failed--compilation aborted at inc/My/Module/Test.pm line 12. Compilation failed in require at inc/My/Module/Build.pm line 12. BEGIN failed--compilation aborted at inc/My/Module/Build.pm line 12. Compilation failed in require at Build.PL line 8. BEGIN failed--compilation aborted at Build.PL line 8. ... Probably HTTP::Date should be declared as a prerequisite in configure_requires.
Thank you for the ticket. I am not sure what to do about it though, since both META.yml and META.json include HTTP::Date as a runtime dependency. This distribution supports both ExtUtils::MakeMaker and Module::Build. I typically use the latter, but I just rebuilt with ExtUtils::MakeMaker and HTTP::Date was still there. I can't work on it much now anyway, which under the circumstances is probably good, since right now stepping back and letting the problem gestate may be the most productive thing to do.
Additional thought: your ticket says "configure_requires". I still don't see it, since Build.PL and Makefile.PL have no uses of HTTP::Date that I can see. The test harness uses it, but I would think runtime prerequisites would cover testing. I think I'll have to think it out again.
On 2018-10-14 09:21:19, WYANT wrote: Show quoted text
> Additional thought: your ticket says "configure_requires". I still > don't see it, since Build.PL and Makefile.PL have no uses of > HTTP::Date that I can see.
Please see the call stack in the build log output above --- Build.PL uses some modules from inc/, and at least one of them is using HTTP::Date. Show quoted text
> The test harness uses it, but I would think > runtime prerequisites would cover testing. > > I think I'll have to think it out again.
On 2018-10-14 11:19:42, SREZIC wrote: Show quoted text
> On 2018-10-14 09:21:19, WYANT wrote:
> > Additional thought: your ticket says "configure_requires". I still > > don't see it, since Build.PL and Makefile.PL have no uses of > > HTTP::Date that I can see.
> > Please see the call stack in the build log output above --- Build.PL > uses some modules from inc/, and at least one of them is using > HTTP::Date.
Ah --- it fails only if Build.PL is used. Here's a small Dockerfile to reproduce the problem in a clean environment: # docker build -t perl-test . && docker run perl-test FROM debian:stretch RUN echo "cache invalidation #20181014" RUN apt-get -y update RUN apt-get -y install perl-modules RUN apt-get -y install make RUN apt-get -y --no-install-recommends install libmodule-build-perl CMD cpan -t WYANT/Astro-SpaceTrack-0.119_01.tar.gz
Great. Thank you very much. I'm having to spend some time dealing with Real Life at the moment, but I'll get on it as soon as I can. I think dependency problems are hard to track down in general (I think this has been in the distro for quite a while), and for authors in particular because the HAVE to have all the right modules installed.
Wow, what a great catch! Because it doesn't happen with ExtUtils::MakeMaker, it does not manifest on a bare Perl -- it needs a Perl with Module::Build but not HTTP::Date. Some historical research says that this was broken in 0.094_01, released October 27 2016. So it has been broken for almost two years. An attempted fix was sent up as 1.119_02. We'll see what happens. Thank you very much for taking the time and effort to make my code better.
On 2018-10-14 22:06:03, WYANT wrote: Show quoted text
> Wow, what a great catch! Because it doesn't happen with > ExtUtils::MakeMaker, it does not manifest on a bare Perl -- it needs a > Perl with Module::Build but not HTTP::Date. > > Some historical research says that this was broken in 0.094_01, > released October 27 2016. So it has been broken for almost two years. > > An attempted fix was sent up as 1.119_02. We'll see what happens. > > Thank you very much for taking the time and effort to make my code > better.
The build problem was indeed solved with _02. Below a revised Dockerfile for testing. # docker build -t perl-test . && docker run perl-test FROM debian:stretch RUN echo "cache invalidation #20181014" RUN apt-get -y update RUN apt-get -y install perl-modules RUN apt-get -y install make RUN apt-get -y --no-install-recommends install libmodule-build-perl # Some dependencies need a C compiler RUN apt-get -y --no-install-recommends install gcc RUN apt-get -y --no-install-recommends install libc6-dev openssl libssl-dev zlib1g-dev CMD cpan -t WYANT/Astro-SpaceTrack-0.119_02.tar.gz
Thank you very much for all you have done for me. I appreciate the Docker information, but I have not yet taken that route. At this point Docker looks like black magic to me, and Tolkien has Gandalf warn of "... the dangers of an art greater than we ourselves possess." So I duplicated your results and tested my correction on a base Perl installation made into a Git repository, with a branch having Module::Build and its dependencies as the only non-core modules.