Skip Menu |

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

Report information
The Basics
Id: 122088
Status: open
Priority: 0/
Queue: Astro-FITS-Header

People
Owner: Nobody in particular
Requestors: draco [...] marino.st
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: Circular dependency between Astro-FITS-Header and Starlink-AST
Date: Tue, 13 Jun 2017 11:19:11 -0500
To: bug-Astro-FITS-Header [...] rt.cpan.org
From: John Marino <draco [...] marino.st>
Using the machine readable meta.json files to build a dependency tree, and considering "recommends" as full requirements, my program discovered a circular dependency between Astro-FITS-Header and Starlink-AST. except of Astro-FITS-Header-3.07/META.json (prereqs): "runtime" : { "recommends" : { "Astro::FITS::CFITSIO" : "0", "Starlink::AST" : "0" } } except of Starlink-AST-1.05/META.json (prereqs): "runtime" : { "recommends" : { "Astro::FITS::CFITSIO" : "0", "Astro::FITS::Header" : "0", "Tk" : "0", "Tk::Zinc" : "0" } } so the meta.json files say that Astro::FITS::Header needs Starlink::AST to run and that Starlink::AST needs Astro::FITS::Header to run. This kind of circular dependency is impossible to resolve when runtime dependencies are required to be in place before building starts. Surely this is error of the Astro-FITS-Header meta.json file? Regards, John
Starlink::AST uses Astro::FITS::Header in its tests. These tests are skipped if that module is not available. Astro::FITS::Header does support reading headers using Starlink::AST but it's an optional dependency and you don't need Starlink::AST unless you want to manipulate headers that have been created using Starlink::AST. There is no real circular dependency as such. On Tue Jun 13 12:26:07 2017, draco@marino.st wrote: Show quoted text
> Using the machine readable meta.json files to build a dependency tree, > and considering "recommends" as full requirements, my program > discovered > a circular dependency between Astro-FITS-Header and Starlink-AST. > > except of Astro-FITS-Header-3.07/META.json (prereqs): > > "runtime" : { > "recommends" : { > "Astro::FITS::CFITSIO" : "0", > "Starlink::AST" : "0" > } > } > > except of Starlink-AST-1.05/META.json (prereqs): > > "runtime" : { > "recommends" : { > "Astro::FITS::CFITSIO" : "0", > "Astro::FITS::Header" : "0", > "Tk" : "0", > "Tk::Zinc" : "0" > } > } > > so the meta.json files say that Astro::FITS::Header needs > Starlink::AST to run and that Starlink::AST needs Astro::FITS::Header > to run. This kind of circular dependency is impossible to resolve > when runtime dependencies are required to be in place before building > starts. Surely this is error of the Astro-FITS-Header meta.json file? > > Regards, > John
Subject: Re: [rt.cpan.org #122088] Circular dependency between Astro-FITS-Header and Starlink-AST
Date: Tue, 13 Jun 2017 17:30:40 -0500
To: bug-Astro-FITS-Header [...] rt.cpan.org
From: John Marino <draco [...] marino.st>
On 6/13/2017 15:11, TJENNESS via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=122088 > > > Starlink::AST uses Astro::FITS::Header in its tests. These tests are skipped if that module is not available. Astro::FITS::Header does support reading headers using Starlink::AST but it's an optional dependency and you don't need Starlink::AST unless you want to manipulate headers that have been created using Starlink::AST. > > There is no real circular dependency as such. >
Given how packaging systems work, that statement just isn't correct. If a package system is told Starlink needs Astro::FITS::Header as a requirement, it has to build, package and install Astro::FITS::Header before starting to build Starlink. In this case, the header tried to build Starlink during its build. That's the definition of a circular dependency. These things are done in clean environments and requirements are loaded before the build. I worked around the issue by disabling recommended requirements for the FITS::Header but I wanted to report this very real issue. By my use, which is the use of every major packaging system, this is definitely without question a circular dep. You may choose to interpret this differently, but it won't change the situation for packaging systems. The only way to satisfy the requirement is via a "bootstrap package" which nobody likes. Regards, John