Continuing to fiddle around with this. I commented out all of the use statements in C4/Reserves.pm, then uncommented them one by one until the circular dependencies came back. There are two modules that create the dependencies in C4::Reserves:

C4::Accounts;
C4::Letters;



On Tue, Apr 17, 2018 at 10:10 AM, Barton Chittenden <barton@bywatersolutions.com> wrote:
Just to see what happens, I enabled warnings in C4/Reserves.pm. All of the warnings were of the form

Subroutine * redefined at C4/Reserves.pm line *.

This is happening because of circular dependencies, e.g. 

    C4/Reserves.pm

uses

    C4::Members
    C4::Circulation

Those modules in turn use C4::Reserves. None of the functions used in these modules is actually called in C4::Reserves, but removing the calls to use C4::Members and use C4::Circulation from C4/Reserves.pm isn't enough, apparently there's a deeper circular dependency there.

I suspect that there are a number of unnecessary 'use' statements peppered throughout the C4 namespace; cleaning those up might fix the problem entirely, or at least allow us to resolve any remaining circular dependencies easily.

--Barton