boost upgrade from 1.70.0_0 to 1.71.0_0 does not trigger ledger rebuilt

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

boost upgrade from 1.70.0_0 to 1.71.0_0 does not trigger ledger rebuilt

Kastus Shchuka-2
I ran “port upgrade outdated” today and it installed a new version of boost:

--->  Computing dependencies for boost
--->  Fetching archive for boost
--->  Attempting to fetch boost-1.71.0_0+no_single+no_static+python27.darwin_17.x86_64.tbz2 from https://packages.macports.org/boost
--->  Attempting to fetch boost-1.71.0_0+no_single+no_static+python27.darwin_17.x86_64.tbz2.rmd160 from https://packages.macports.org/boost
--->  Installing boost @1.71.0_0+no_single+no_static+python27
--->  Cleaning boost
--->  Computing dependencies for boost
--->  Deactivating boost @1.70.0_0+no_single+no_static+python27
--->  Cleaning boost
--->  Activating boost @1.71.0_0+no_single+no_static+python27
--->  Cleaning boost

After that ledger fails to start:

$ /opt/local/bin/ledger -f ledger/journal
dyld: lazy symbol binding failed: Symbol not found: __ZN5boost16re_detail_10700027cpp_regex_traits_char_layerIcE4initEv
  Referenced from: /opt/local/lib/libledger.3.dylib
  Expected in: /opt/local/lib/libboost_regex-mt.dylib

dyld: Symbol not found: __ZN5boost16re_detail_10700027cpp_regex_traits_char_layerIcE4initEv
  Referenced from: /opt/local/lib/libledger.3.dylib
  Expected in: /opt/local/lib/libboost_regex-mt.dylib

Abort

Ledger is not reported as outdated. Running port rev-upgrade does not find any problems with it either:

$ sudo port upgrade ledger
--->  Scanning binaries for linking errors
--->  No broken files found.
--->  No broken ports found.
$ sudo port rev-upgrade
--->  Scanning binaries for linking errors
--->  No broken files found.                            
--->  No broken ports found.


If I uninstall and install again ledger, I am getting the same error.

I had to build ledger from source:

$ sudo port install -s ledger                                        
--->  Computing dependencies for ledger
--->  Fetching distfiles for ledger
--->  Attempting to fetch ledger-3.1.3.tar.gz from https://distfiles.macports.org/ledger
--->  Verifying checksums for ledger                                                
--->  Extracting ledger
--->  Configuring ledger
--->  Building ledger
--->  Staging ledger into destroot
--->  Installing ledger @3.1.3_0
--->  Activating ledger @3.1.3_0
--->  Cleaning ledger
--->  Scanning binaries for linking errors
--->  No broken files found.                            
--->  No broken ports found.

Now ledger runs properly.

Is it a bug in ledger port file that ledger does not detect upgrade of boost? Should I better report it in trac? Or is there a different way of going through boost upgrade?

Thanks,

Kastus


Reply | Threaded
Open this post in threaded view
|

Re: boost upgrade from 1.70.0_0 to 1.71.0_0 does not trigger ledger rebuilt

Richard Cobbe-4
On Sun, Sep 01, 2019 at 08:38:11PM -0700, Kastus Shchuka wrote:
> I ran “port upgrade outdated” today and it installed a new version of boost:

<SNIP>

> After that ledger fails to start:

<SNIP>

> If I uninstall and install again ledger, I am getting the same error.
>
> I had to build ledger from source:

<SNIP>

> Now ledger runs properly.
>
> Is it a bug in ledger port file that ledger does not detect upgrade of
> boost? Should I better report it in trac? Or is there a different way of
> going through boost upgrade?

I encountered this yesterday myself, with exactly the same results that you
describe.  I filed a ticket on this at
<https://trac.macports.org/ticket/58911>, and it was just marked as
"fixed."  I haven't actually looked yet myself; perhaps there's a new
ledger package that fixes the issue?

Richard
Reply | Threaded
Open this post in threaded view
|

Re: boost upgrade from 1.70.0_0 to 1.71.0_0 does not trigger ledger rebuilt

Chris Jones

>> Is it a bug in ledger port file that ledger does not detect upgrade of
>> boost? Should I better report it in trac? Or is there a different way of
>> going through boost upgrade?
>
> I encountered this yesterday myself, with exactly the same results that you
> describe.  I filed a ticket on this at
> <https://trac.macports.org/ticket/58911>, and it was just marked as
> "fixed."  I haven't actually looked yet myself; perhaps there's a new
> ledger package that fixes the issue?

Its marked fixed simply because ledger was rev-bumped to trigger a
rebuild of the binaries against the new boost. There is no 'bug' here,
just a rebuild that is required.

Chris
Reply | Threaded
Open this post in threaded view
|

Re: boost upgrade from 1.70.0_0 to 1.71.0_0 does not trigger ledger rebuilt

ryandesign2
Administrator
In reply to this post by Kastus Shchuka-2
On Sep 1, 2019, at 22:38, Kastus Shchuka wrote:

>
> I ran “port upgrade outdated” today and it installed a new version of boost:
>
> --->  Computing dependencies for boost
> --->  Fetching archive for boost
> --->  Attempting to fetch boost-1.71.0_0+no_single+no_static+python27.darwin_17.x86_64.tbz2 from https://packages.macports.org/boost
> --->  Attempting to fetch boost-1.71.0_0+no_single+no_static+python27.darwin_17.x86_64.tbz2.rmd160 from https://packages.macports.org/boost
> --->  Installing boost @1.71.0_0+no_single+no_static+python27
> --->  Cleaning boost
> --->  Computing dependencies for boost
> --->  Deactivating boost @1.70.0_0+no_single+no_static+python27
> --->  Cleaning boost
> --->  Activating boost @1.71.0_0+no_single+no_static+python27
> --->  Cleaning boost
>
> After that ledger fails to start:
>
> $ /opt/local/bin/ledger -f ledger/journal
> dyld: lazy symbol binding failed: Symbol not found: __ZN5boost16re_detail_10700027cpp_regex_traits_char_layerIcE4initEv
>  Referenced from: /opt/local/lib/libledger.3.dylib
>  Expected in: /opt/local/lib/libboost_regex-mt.dylib
>
> dyld: Symbol not found: __ZN5boost16re_detail_10700027cpp_regex_traits_char_layerIcE4initEv
>  Referenced from: /opt/local/lib/libledger.3.dylib
>  Expected in: /opt/local/lib/libboost_regex-mt.dylib
>
> Abort
>
> Ledger is not reported as outdated. Running port rev-upgrade does not find any problems with it either:
>
> $ sudo port upgrade ledger
> --->  Scanning binaries for linking errors
> --->  No broken files found.
> --->  No broken ports found.
> $ sudo port rev-upgrade
> --->  Scanning binaries for linking errors
> --->  No broken files found.                            
> --->  No broken ports found.
>
>
> If I uninstall and install again ledger, I am getting the same error.
>
> I had to build ledger from source:
>
> $ sudo port install -s ledger                                        
> --->  Computing dependencies for ledger
> --->  Fetching distfiles for ledger
> --->  Attempting to fetch ledger-3.1.3.tar.gz from https://distfiles.macports.org/ledger
> --->  Verifying checksums for ledger                                                
> --->  Extracting ledger
> --->  Configuring ledger
> --->  Building ledger
> --->  Staging ledger into destroot
> --->  Installing ledger @3.1.3_0
> --->  Activating ledger @3.1.3_0
> --->  Cleaning ledger
> --->  Scanning binaries for linking errors
> --->  No broken files found.                            
> --->  No broken ports found.
>
> Now ledger runs properly.
>
> Is it a bug in ledger port file that ledger does not detect upgrade of boost? Should I better report it in trac? Or is there a different way of going through boost upgrade?

Rev-upgrade only detects library version mismatches. The developers of boost do not believe in library versioning. They never change the version numbers of their libraries, even though they are not necessarily compatible from one release to the next. When we update boost to a new version, we may therefore need to revbump some or all ports that link with boost. If we forgot to do that when we recently updated boost, then that was a mistake.
Reply | Threaded
Open this post in threaded view
|

Re: boost upgrade from 1.70.0_0 to 1.71.0_0 does not trigger ledger rebuilt

Richard Cobbe-4
On Wed, Sep 04, 2019 at 09:22:23AM -0500, Ryan Schmidt wrote:

> The developers of boost do not believe in library versioning. They never
> change the version numbers of their libraries, even though they are not
> necessarily compatible from one release to the next.

Ugh.  How irritatingly anti-social.

> When we update boost to a new version, we may therefore need to revbump
> some or all ports that link with boost. If we forgot to do that when we
> recently updated boost, then that was a mistake.

Best you can do, really.  The problem was easily and quickly fixed as soon
as I noticed it and filed the ticket, so thanks to all for prompt action.

And I'm glad to have the background explanation; I'll watch out for this
next time I see a boost upgrade.

Richard