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