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

Ryan Schmidt ryandesign at macports.org
Wed Sep 4 14:22:23 UTC 2019


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. 


More information about the macports-users mailing list