We released a fixed version, debian packages not updated yet.  But I would
be happy to merge a patch.

I agree we should probably make that move but the best immediate fix is to
add to the main request handlers.

The emergency fix (poorly thought out) can be seen at:
https://github.com/ledgersmb/LedgerSMB/commit/83bdaf38ef03add07f8dd6348eb01c5dbdca94e7
https://github.com/ledgersmb/LedgerSMB/commit/cbcb220d24e2260b3e29db2be04634c62f8a3ea6

These are in the current 1.4 version.  They are not recommended because use
lib '.' is pretty dangerous.  We aren't vulnerable in any use cases I know
of but that does not mean people are not doing crazy things.

The following replaces those with a safer version:

https://github.com/ledgersmb/LedgerSMB/pull/1912.patch


use FindBin;
use lib $FindBin::$Bin . "/..";

On Thu, Aug 4, 2016 at 2:02 PM, Nick Prater <n...@npbroadcast.com> wrote:

> ledgersmb has stopped working on my Debian system. Substituting "use
> parent" for "use base" in two modules has 'fixed' the problem.
>
> I believe this is since a recent perl update, but only discovered the
> problem on restarting Starman after upgrading ledgersmb. The problem is
> not specific to one version of ledgersmb - I see the same issue with
> 1.3.26 and 1.3.31.
>
> I am running Debian GNU/Linux 8.5 (jessie) with perl 5.20.2 and
> ledgersmb 1.3.31
>
> I try to start ledgersmb with:
> # starman --preload-app tools/starman.psgi
>
> But I get an error:
>
> > Error while loading /srv/ledgersmb-1.4.31/tools/starman.psgi:
> > Base class package "LedgerSMB::DBObject" is empty.
> > (Perhaps you need to 'use' the module which defines that package first,
> > or make that module available in @INC... [snip]
> > at LedgerSMB/Setting.pm line 53
>
> http://perldoc.perl.org/perlobj.html says:
>
> > ...Much older code also uses the base pragma.
> > For new code, we recommend that you use the parent pragma to
> > declare your parents. This pragma will take care of setting @ISA.
> > It will also load the parent classes and make sure that the
> > package doesn't inherit from itself.
>
> changing "use base" for "use parent" in Setting.pm fixes this error.
>
> I then get another error:
>
> > Error while loading /srv/ledgersmb-1.4.31/tools/starman.psgi:
> > Base class package "LedgerSMB::Request" is empty.
> > (Perhaps you need to 'use' the module which defines that package first,
> > or make that module available in @INC... [snip]
> > at LedgerSMB.pm line 182.
>
> changing "use base" for "use parent" in LedgerSMB.pm fixes this error.
> Starman then starts and I can use ledgersmb normally.
>
> Frankly I don't understand why "use base" is failing in these two
> locations and why "use parent" behaves differently. I wonder if this
> problem is unique to my setup, or it affects others also. For now I'm up
> and running. I document my steps here in case anybody else encounters a
> similar problem, but I'd also appreciate any words of wisdom to help me
> understand what is happening.
>
> Many thanks,
>
> Nick
>
>
> ------------------------------------------------------------
> ------------------
> _______________________________________________
> Ledger-smb-devel mailing list
> Ledger-smb-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ledger-smb-devel
>



-- 
Best Wishes,
Chris Travers

Efficito:  Hosted Accounting and ERP.  Robust and Flexible.  No vendor
lock-in.
http://www.efficito.com/learn_more
------------------------------------------------------------------------------
_______________________________________________
Ledger-smb-devel mailing list
Ledger-smb-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ledger-smb-devel

Reply via email to