pkgsrc-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
turn off CHECK_SHLIBS on macOS?
Hello,
Building gettext-tools on macOS fails:
=> Creating binary package /Users/dev/usr/pkgsrc/devel/gettext-tools/work/.packages/gettext-tools-0.22.5.tgz
===> Building binary package for gettext-tools-0.22.5
=> Creating binary package /Users/dev/usr/pkgsrc/packages/All/gettext-tools-0.22.5.tgz
===> Installing binary package of gettext-tools-0.22.5
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libgettextlib-0.22.5.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libgettextpo.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libgettextsrc-0.22.5.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libgettextsrc.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libiconv.2.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libintl.8.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libncurses.6.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libtextstyle.0.dylib
pkg_add: gettext-tools-0.22.5: missing required library: @rpath/lib/libtextstyle.dylib
pkg_add: 1 package addition failed
*** Error code 1
the +BUILD_INFO file contains:
PROVIDES=/Users/dev/pkg/lib/libgettextlib-0.22.5.dylib
PROVIDES=/Users/dev/pkg/lib/libgettextlib.dylib
PROVIDES=/Users/dev/pkg/lib/libgettextpo.0.dylib
PROVIDES=/Users/dev/pkg/lib/libgettextpo.dylib
PROVIDES=/Users/dev/pkg/lib/libgettextsrc-0.22.5.dylib
PROVIDES=/Users/dev/pkg/lib/libgettextsrc.dylib
PROVIDES=/Users/dev/pkg/lib/libtextstyle.0.dylib
PROVIDES=/Users/dev/pkg/lib/libtextstyle.dylib
REQUIRES=@rpath/lib/libgettextlib-0.22.5.dylib
REQUIRES=@rpath/lib/libgettextpo.dylib
REQUIRES=@rpath/lib/libgettextsrc-0.22.5.dylib
REQUIRES=@rpath/lib/libgettextsrc.dylib
REQUIRES=@rpath/lib/libiconv.2.dylib
REQUIRES=@rpath/lib/libintl.8.dylib
REQUIRES=@rpath/lib/libncurses.6.dylib
REQUIRES=@rpath/lib/libtextstyle.0.dylib
REQUIRES=@rpath/lib/libtextstyle.dylib
Something somewhere is doing 'otool -L' and generating REQUIRES lines.
By the way, notice the circular dependency: the package both PROVIDES and REQUIRES libgettextlib-0.22.5.dylib, because the output of otool -L looks like this:
% otool -L work/.destdir/Users/dev/pkg/lib/libgettextlib-0.22.5.dylib
work/.destdir/Users/dev/pkg/lib/libgettextlib-0.22.5.dylib:
@rpath/lib/libgettextlib-0.22.5.dylib (compatibility version 0.0.0, current version 0.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 3208.0.0)
@rpath/lib/libintl.8.dylib (compatibility version 13.0.0, current version 13.0.0)
@rpath/lib/libiconv.2.dylib (compatibility version 9.0.0, current version 9.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
The first line is always the library's owned "shared library ID."
So it would be better to parse the output of 'otool -l' (lowercase L):
% otool -l work/.destdir/Users/dev/pkg/lib/libgettextlib-0.22.5.dylib | grep -A2 LC_LOAD_DYLIB
cmd LC_LOAD_DYLIB
cmdsize 104
name /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (offset 24)
--
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/lib/libintl.8.dylib (offset 24)
--
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/lib/libiconv.2.dylib (offset 24)
--
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libSystem.B.dylib (offset 24)
or 'dyld_info -linked_dylibs':
% dyld_info -linked_dylibs work/.destdir/Users/dev/pkg/lib/libgettextlib-0.22.5.dylib
work/.destdir/Users/dev/pkg/lib/libgettextlib-0.22.5.dylib [arm64]:
-linked_dylibs:
attributes load path
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
@rpath/lib/libintl.8.dylib
@rpath/lib/libiconv.2.dylib
/usr/lib/libSystem.B.dylib
and then resolve the rpaths:
% otool -l work/.destdir/Users/dev/pkg/lib/libgettextlib-0.22.5.dylib | grep -A2 LC_RPATH
cmd LC_RPATH
cmdsize 32
path @loader_path/.. (offset 12)
In the meantime, is it possible to turn off CHECK_SHLIBS entirely?
This doesn't work:
CHECK_SHLIBS=no bmake reinstall
The only way I could get it to install was by patching mk/platform/Darwin.mk:
--- mk/platform/Darwin.mk.orig 2025-08-11 12:53:06
+++ mk/platform/Darwin.mk 2025-08-11 12:53:16
@@ -46,7 +46,7 @@
.else
ECHO_N?= ${ECHO} -n
.endif
-LDD?= /usr/bin/otool -L
+LDD=
IMAKE_MAKE?= ${MAKE} # program which gets invoked by imake
PKGLOCALEDIR?= share
PS?= /bin/ps
Home |
Main Index |
Thread Index |
Old Index