icu 50 and how to identify dependents

Jeremy Huddleston Sequoia jeremyhu at apple.com
Sun Feb 10 16:15:47 PST 2013


On Feb 10, 2013, at 1:49 AM, Jeremy Huddleston Sequoia <jeremyhu at macports.org> wrote:

> ~ $ nm -m /opt/local/lib/libpangocairo-1.0.dylib | grep 'undefined' | sed 's:^.*(from \(.*\)).*$:\1:' | sort -u
> libSystem
> libcairo
> libfontconfig
> libfreetype
> libglib-2
> libgobject-2
> libpango-1
> libpangoft2-1
> 
> And this is what it's linking against:
> 
> ~ $ otool -L /opt/local/lib/libpangocairo-1.0.dylib
> /opt/local/lib/libpangocairo-1.0.dylib:
> 	/opt/local/lib/libpangocairo-1.0.0.dylib (compatibility version 3201.0.0, current version 3201.5.0)
> 	/opt/local/lib/libpango-1.0.0.dylib (compatibility version 3201.0.0, current version 3201.5.0)
> 	/opt/local/lib/libcairo.2.dylib (compatibility version 11203.0.0, current version 11203.12.0)
> 	/opt/local/lib/libpixman-1.0.dylib (compatibility version 29.0.0, current version 29.2.0)
> 	/opt/local/lib/libpng15.15.dylib (compatibility version 30.0.0, current version 30.0.0)
> 	/opt/local/lib/libxcb-shm.0.dylib (compatibility version 1.0.0, current version 1.0.0)
> 	/opt/local/lib/libX11-xcb.1.dylib (compatibility version 2.0.0, current version 2.0.0)
> 	/opt/local/lib/libxcb-render.0.dylib (compatibility version 1.0.0, current version 1.0.0)
> 	/opt/local/lib/libXrender.1.dylib (compatibility version 5.0.0, current version 5.0.0)
> 	/opt/local/lib/libXext.6.dylib (compatibility version 11.0.0, current version 11.0.0)
> 	/opt/local/lib/libX11.6.dylib (compatibility version 10.0.0, current version 10.0.0)
> 	/opt/local/lib/libxcb.1.dylib (compatibility version 3.0.0, current version 3.0.0)
> 	/opt/local/lib/libXau.6.dylib (compatibility version 7.0.0, current version 7.0.0)
> 	/opt/local/lib/libXdmcp.6.dylib (compatibility version 7.0.0, current version 7.0.0)
> 	/opt/local/lib/libpangoft2-1.0.0.dylib (compatibility version 3201.0.0, current version 3201.5.0)
> 	/opt/local/lib/libgmodule-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)
> 	/opt/local/lib/libharfbuzz.0.dylib (compatibility version 913.0.0, current version 913.0.0)
> 	/opt/local/lib/libgobject-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)
> 	/opt/local/lib/libgthread-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)
> 	/opt/local/lib/libffi.6.dylib (compatibility version 7.0.0, current version 7.0.0)
> 	/opt/local/lib/libglib-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)
> 	/usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 41.1.0)
> 	/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
> 	/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
> 	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
> 	/opt/local/lib/libgraphite2.3.dylib (compatibility version 3.0.0, current version 3.0.1)
> 	/opt/local/lib/libicule.49.dylib (compatibility version 49.0.0, current version 49.1.2)
> 	/opt/local/lib/libicuuc.49.dylib (compatibility version 49.0.0, current version 49.1.2)
> 	/opt/local/lib/libicudata.49.dylib (compatibility version 49.0.0, current version 49.1.2)
> 	/opt/local/lib/libfontconfig.1.dylib (compatibility version 8.0.0, current version 8.2.0)
> 	/opt/local/lib/libfreetype.6.dylib (compatibility version 16.0.0, current version 16.0.0)
> 	/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.7)
> 	/opt/local/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.6)
> 	/opt/local/lib/libexpat.1.dylib (compatibility version 8.0.0, current version 8.0.0)
> 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 38.0.0)

I started a clean build with my patch in https://trac.macports.org/ticket/38010, and so far no issues.  In comparison with above, here's what libpangocairo is linking with on my system:

$ otool -L /opt/local/lib/libpangocairo-1.0.dylib
/opt/local/lib/libpangocairo-1.0.dylib:
	/opt/local/lib/libpangocairo-1.0.0.dylib (compatibility version 3201.0.0, current version 3201.5.0)
	/opt/local/lib/libpango-1.0.0.dylib (compatibility version 3201.0.0, current version 3201.5.0)
	/opt/local/lib/libcairo.2.dylib (compatibility version 11203.0.0, current version 11203.12.0)
	/opt/local/lib/libpangoft2-1.0.0.dylib (compatibility version 3201.0.0, current version 3201.5.0)
	/opt/local/lib/libgobject-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)
	/opt/local/lib/libgmodule-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)
	/opt/local/lib/libglib-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)
	/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
	/opt/local/lib/libharfbuzz.0.dylib (compatibility version 913.0.0, current version 913.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
	/opt/local/lib/libfreetype.6.dylib (compatibility version 16.0.0, current version 16.0.0)
	/opt/local/lib/libfontconfig.1.dylib (compatibility version 8.0.0, current version 8.2.0)

So it's still linking against libgmodule, libintl, and libharfbuzz despite not needing them, but that's because the project is explicitly linking them even though they don't need it, and it's way better than the list of useless links we have currently.

--Jeremy



More information about the macports-dev mailing list