treewide: drop librt and libpthread packages
authorJo-Philipp Wich <jo@mein.io>
Fri, 18 Dec 2020 16:31:28 +0000 (17:31 +0100)
committerJo-Philipp Wich <jo@mein.io>
Sun, 26 Jan 2025 13:22:24 +0000 (14:22 +0100)
Since OpenWrt's main libc library, musl, does not provide separate shared
object files for libpthread and librt, the existing binary packages for
them are empty placeholders which provide no runtime functionality and
frequently cause confusion among users who attempt to build software
linking -lrt or -lpthread on target.

To clean this situation up somewhat and to simplify binary package
dependecies for all of the potential musl, glibc and uclibc cases, drop
those packages and move libpthread.so as well as librt.so into the main
libc package for those libc implementations that happen ship them as
extra shared libraries.

Also let the abstract libc package provide virtual libpthread and librt
packages in order to ease migration for packages that still explicitly
depend on them.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
14 files changed:
package/devel/perf/Makefile
package/devel/valgrind/Makefile
package/libs/libevent2/Makefile
package/libs/libnl/Makefile
package/libs/libusb/Makefile
package/libs/musl-fts/Makefile
package/libs/toolchain/Makefile
package/network/config/ltq-adsl-app/Makefile
package/network/config/ltq-vdsl-vr9-app/Makefile
package/network/ipv6/thc-ipv6/Makefile
package/system/opkg/Makefile
package/utils/adb/Makefile
package/utils/mdadm/Makefile
package/utils/util-linux/Makefile

index a2830420cc778c2a472d9b8fcddcf14bf51ffed6..a6ed34db5cdd019e02c1cd6ff42a39cbf68a9cae 100644 (file)
@@ -27,7 +27,7 @@ include $(INCLUDE_DIR)/nls.mk
 define Package/perf
   SECTION:=devel
   CATEGORY:=Development
-  DEPENDS:= +libelf +libdw +PACKAGE_libunwind:libunwind +libpthread +librt +objdump @!IN_SDK @KERNEL_PERF_EVENTS \
+  DEPENDS:= +libelf +libdw +PACKAGE_libunwind:libunwind +objdump @!IN_SDK @KERNEL_PERF_EVENTS \
            +PACKAGE_libbfd:libbfd +PACKAGE_libopcodes:libopcodes +libtraceevent
   TITLE:=Linux performance monitoring tool
   VERSION:=$(LINUX_VERSION)-r$(PKG_RELEASE)
index 313df759219182630c513c2f367656e136c39ce1..8d871ca620c8a74de70a87f0571f196da712e3fe 100644 (file)
@@ -33,7 +33,7 @@ include $(INCLUDE_DIR)/kernel.mk
 define Package/valgrind
   SECTION:=devel
   CATEGORY:=Development
-  DEPENDS:=@mips||mipsel||mips64||mips64el||i386||x86_64||powerpc||arm_v7||aarch64 +libpthread +librt
+  DEPENDS:=@mips||mipsel||mips64||mips64el||i386||x86_64||powerpc||arm_v7||aarch64
   TITLE:=debugging and profiling tools for Linux
   URL:=http://www.valgrind.org
 endef
index e0a080d60e240d45e79bab7ba564e4dcf19b5e5b..f2435b988f490e6be3e37e7430b07bcde6c2aafb 100644 (file)
@@ -104,7 +104,7 @@ endef
 define Package/libevent2-pthreads
   $(call Package/libevent2/Default)
   TITLE+= Pthreads library (version 2.1)
-  DEPENDS+=+libpthread +libevent2-core
+  DEPENDS+=+libevent2-core
 endef
 
 define Package/libevent2-pthreads/description
index f8f45e0713e79fda0fa3489bccb44cd19ab816a2..831ca0194111615ee153e8fd26244f4e2752d3e0 100644 (file)
@@ -34,7 +34,6 @@ endef
 define Package/libnl-core
 $(call Package/libnl/default)
   TITLE:=Core Netlink Library
-  DEPENDS:=+libpthread
 endef
 
 define Package/libnl-genl
index 6171c314797af2466c4babc221ec1df15cf79631..17c3dbb9bf9dce0b1f2316c0b7ef66a989fabfe9 100644 (file)
@@ -29,7 +29,7 @@ define Package/libusb-1.0
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=A library for accessing Linux USB devices
-  DEPENDS:=+libpthread +librt +libatomic
+  DEPENDS:=+libatomic
   URL:=https://libusb.info/
   ABI_VERSION:=0
 endef
index 72341cd3796386e3f74ec556d07cb41d0e575b10..147b828c19f10d72bfaae1ebe6f7a282d29b5af4 100644 (file)
@@ -37,7 +37,6 @@ define Package/musl-fts
   CATEGORY:=Libraries
   TITLE:=fts implementation for musl libc
   URL:=https://github.com/pullmoll/musl-fts
-  DEPENDS:= +libpthread
 endef
 
 define Package/musl-fts/description
index 7c117b144de34315d7f7ba2aed356c7584705974..c4b916ac4aaf6e18d103676f1d0e271c5aebc5b5 100644 (file)
@@ -142,7 +142,7 @@ define Package/libasan
 $(call Package/gcc/Default)
   NAME:=libasan
   TITLE:=Runtime library for AddressSanitizer in GCC
-  DEPENDS:=@USE_GLIBC +librt +libstdcpp @!mips64 @!mips64el @!arc
+  DEPENDS:=@USE_GLIBC +libstdcpp @!mips64 @!mips64el @!arc
   ABI_VERSION:=5
 endef
 
@@ -171,7 +171,7 @@ define Package/libtsan
 $(call Package/gcc/Default)
   NAME:=libtsan
   TITLE:=Runtime library for ThreadSanitizer in GCC
-  DEPENDS:=@USE_GLIBC +librt +libstdcpp @!loongarch64 @!mips @!mipsel @!mips64 @!mips64el @!arc
+  DEPENDS:=@USE_GLIBC +libstdcpp @!loongarch64 @!mips @!mipsel @!mips64 @!mips64el @!arc
   ABI_VERSION:=0
 endef
 
@@ -200,7 +200,7 @@ define Package/liblsan
 $(call Package/gcc/Default)
   NAME:=liblsan
   TITLE:=Runtime library for LeakSanitizer in GCC
-  DEPENDS:=@USE_GLIBC +librt +libstdcpp @!loongarch64 @!mips @!mipsel @!mips64 @!mips64el @!arc
+  DEPENDS:=@USE_GLIBC +libstdcpp @!loongarch64 @!mips @!mipsel @!mips64 @!mips64el @!arc
   ABI_VERSION:=0
 endef
 
@@ -229,7 +229,7 @@ define Package/libubsan
 $(call Package/gcc/Default)
   NAME:=libubsan
   TITLE:=Runtime library for UndefinedBehaviorSanitizer in GCC
-  DEPENDS:=@USE_GLIBC +librt +libstdcpp @!mips64 @!mips64el @!arc
+  DEPENDS:=@USE_GLIBC +libstdcpp @!mips64 @!mips64el @!arc
   ABI_VERSION:=1
 endef
 
@@ -266,6 +266,7 @@ endef
 define Package/libc
 $(call Package/libc/Default)
   TITLE:=C library
+  PROVIDES:=libpthread librt
 endef
 
 define Package/libc/config
@@ -283,33 +284,7 @@ define Package/libc/config
                string
                prompt "libc shared library files (use wildcards)"
                depends on EXTERNAL_TOOLCHAIN && PACKAGE_libc
-               default "./lib/ld{*.so*,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util}{-*.so,.so.*,.so}"
-
-       endmenu
-endef
-
-
-define Package/libpthread
-$(call Package/libc/Default)
-  TITLE:=POSIX thread library
-endef
-
-define Package/libpthread/config
-       menu "Configuration"
-       depends on EXTERNAL_TOOLCHAIN && PACKAGE_libpthread
-
-       config LIBPTHREAD_ROOT_DIR
-               string
-               prompt "libpthread shared library base directory"
-               depends on EXTERNAL_TOOLCHAIN && PACKAGE_libpthread
-               default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN
-               default "/"  if NATIVE_TOOLCHAIN
-
-       config LIBPTHREAD_FILE_SPEC
-               string
-               prompt "libpthread shared library files (use wildcards)"
-               depends on EXTERNAL_TOOLCHAIN && PACKAGE_libpthread
-               default "./lib/libpthread{-*.so,.so.*}"
+               default "./lib/ld{*.so*,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,pthread,resolv,rt,util}{-*.so,.so.*,.so}"
 
        endmenu
 endef
@@ -341,33 +316,6 @@ define Package/libthread-db/config
        endmenu
 endef
 
-define Package/librt
-$(call Package/libc/Default)
-  TITLE:=POSIX.1b RealTime extension library
-  DEPENDS:=+libpthread
-endef
-
-define Package/librt/config
-       menu "Configuration"
-       depends on EXTERNAL_TOOLCHAIN && PACKAGE_librt
-
-       config LIBRT_ROOT_DIR
-               string
-               prompt "librt shared library base directory"
-               depends on EXTERNAL_TOOLCHAIN && PACKAGE_librt
-               default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN
-               default "/"  if NATIVE_TOOLCHAIN
-
-       config LIBRT_FILE_SPEC
-               string
-               prompt "librt shared library files (use wildcards)"
-               depends on EXTERNAL_TOOLCHAIN && PACKAGE_librt
-               default "./lib/librt{-*.so,.so.*}"
-
-       endmenu
-endef
-
-
 define Package/libgfortran
 $(call Package/gcc/Default)
   TITLE:=GFortran support library
@@ -555,7 +503,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
        $(CP) \
                $(TOOLCHAIN_DIR)/lib/ld*.so.* \
                $(1)/lib/
-       for file in libanl libc libcidn libcrypt libdl libm libnsl libnss_dns libnss_files libresolv libutil; do \
+       for file in libanl libc libcidn libcrypt libdl libm libnsl libnss_dns libnss_files libpthread libresolv librt libutil; do \
                for file in $(TOOLCHAIN_DIR)/lib/$$$$file.so.*; do \
                        if [ -e "$$$$file" ]; then \
                                $(CP) $$$$file $(1)/lib/; \
@@ -584,40 +532,19 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
   define Package/libc/install_lib
        $(CP) $(filter-out %/libdl_pic.a %/libpthread_pic.a %/libresolv_pic.a,$(wildcard $(TOOLCHAIN_DIR)/lib/lib*.a)) $(1)/lib/
        $(if $(wildcard $(TOOLCHAIN_DIR)/lib/libc_so.a),$(CP) $(TOOLCHAIN_DIR)/lib/libc_so.a $(1)/lib/libc_pic.a)
+       $(if $(wildcard $(TOOLCHAIN_DIR)/lib/libpthread_so.a),$(CP) $(TOOLCHAIN_DIR)/lib/libpthread_so.a $(1)/lib/libpthread_pic.a)
        $(if $(LIBGCC_MAP), \
                $(CP) $(LIBGCC_A) $(1)/lib/libgcc_s_pic.a; \
                $(CP) $(LIBGCC_MAP) $(1)/lib/libgcc_s_pic.map \
        )
   endef
 
-  define Package/libpthread/install
-       $(INSTALL_DIR) $(1)/lib
-  ifneq ($(CONFIG_USE_MUSL),y)
-       $(CP) \
-               $(TOOLCHAIN_DIR)/lib/libpthread.so.* \
-               $(1)/lib/
-  endif
-  endef
-
   define Package/libthread-db/install
        $(INSTALL_DIR) $(1)/lib
        $(CP) \
                $(TOOLCHAIN_DIR)/lib/libthread_db.so.* $(1)/lib
   endef
 
-  define Package/libpthread/install_lib
-       $(if $(wildcard $(TOOLCHAIN_DIR)/lib/libpthread_so.a),$(CP) $(TOOLCHAIN_DIR)/lib/libpthread_so.a $(1)/lib/libpthread_pic.a)
-  endef
-
-  define Package/librt/install
-       $(INSTALL_DIR) $(1)/lib
-  ifneq ($(CONFIG_USE_MUSL),y)
-       $(CP) \
-               $(TOOLCHAIN_DIR)/lib/librt.so.* \
-               $(1)/lib/
-  endif
-  endef
-
   define Package/ldd/install
        $(INSTALL_DIR) $(1)/usr/bin/
        $(CP) $(TOOLCHAIN_DIR)/bin/ldd $(1)/usr/bin/
@@ -705,14 +632,6 @@ else
        $(call Package/$(LIBC)/install,$1)
   endef
 
-  define Package/libpthread/install
-       for file in $(call qstrip,$(CONFIG_LIBPTHREAD_FILE_SPEC)); do \
-               $(INSTALL_DIR) $(1)/lib ; \
-               $(CP) $(call qstrip,$(CONFIG_LIBPTHREAD_ROOT_DIR))/$$$$file $(1)/lib/ ; \
-       done ; \
-       exit 0
-  endef
-
   define Package/libthread-db/install
        for file in $(call qstrip,$(CONFIG_LIBTHREAD_DB_FILE_SPEC)); do \
                $(INSTALL_DIR) $(1)/lib ; \
@@ -721,14 +640,6 @@ else
        exit 0
   endef
 
-  define Package/librt/install
-       for file in $(call qstrip,$(CONFIG_LIBRT_FILE_SPEC)); do \
-               $(INSTALL_DIR) $(1)/lib ; \
-               $(CP) $(call qstrip,$(CONFIG_LIBRT_ROOT_DIR))/$$$$file $(1)/lib/ ; \
-       done ; \
-       exit 0
-  endef
-
   define Package/libatomic/install
        for file in $(call qstrip,$(CONFIG_LIBATOMIC_FILE_SPEC)); do \
                $(INSTALL_DIR) $(1)/lib ; \
@@ -782,9 +693,7 @@ $(eval $(call BuildPackage,libasan))
 $(eval $(call BuildPackage,libtsan))
 $(eval $(call BuildPackage,liblsan))
 $(eval $(call BuildPackage,libubsan))
-$(eval $(call BuildPackage,libpthread))
 $(eval $(call BuildPackage,libthread-db))
-$(eval $(call BuildPackage,librt))
 $(eval $(call BuildPackage,libgfortran))
 $(eval $(call BuildPackage,libgomp))
 $(eval $(call BuildPackage,ldd))
index b96a3f71e5bd1c3c2e7f6a9a2b54fe433963097c..6fa21cdfb768358c2943b700fc9817941385fc9e 100644 (file)
@@ -35,7 +35,7 @@ define Package/ltq-adsl-app
   CATEGORY:=Network
   TITLE:=Lantiq DSL userland tool
   URL:=http://www.lantiq.com/
-  DEPENDS:=@(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy||TARGET_lantiq_ase) +libpthread +ltq-dsl-base +libubox +libubus
+  DEPENDS:=@(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy||TARGET_lantiq_ase) +ltq-dsl-base +libubox +libubus
   PROVIDES:=ltq-dsl-app
   MENU:=1
 endef
index a73cd4ae62ff7487b95f587a84427cdd90f0a8ea..5a19a6f7572c11026baa1502b6cdea9ab92d300f 100644 (file)
@@ -29,7 +29,7 @@ define Package/ltq-vdsl-vr9-app
   CATEGORY:=Network
   TITLE:=Lantiq VDSL userland tool
   URL:=http://www.lantiq.com/
-  DEPENDS:=@(TARGET_lantiq_xrx200||TARGET_lantiq_xrx200_legacy) +libpthread +librt +ltq-dsl-base +libubox +libubus
+  DEPENDS:=@(TARGET_lantiq_xrx200||TARGET_lantiq_xrx200_legacy) +ltq-dsl-base +libubox +libubus
   PROVIDES:=ltq-dsl-app
 endef
 
index b26b0507fb784b09c908ff415fcfa66c191ec25e..7df0d62a800a7c167e6ff38c012b9fa4133455d2 100644 (file)
@@ -33,15 +33,12 @@ THC_APPLETS := \
        randicmp6 redir6 rsmurf6 sendpees6 sendpeesmp6 smurf6 thcping6        \
        toobig6 trace6 toobigsniff6 flood_unreach6 connect6
 
-THC_DEPENDS_dnsdict6 := +libpthread
-THC_DEPENDS_thcping6 := +librt
-
 define BuildTool
   define Package/thc-ipv6-$(subst _,-,$(1))
     TITLE:=THC-IPv6 $(1) utility
     SECTION:=net
     CATEGORY:=Network
-    DEPENDS:=+libpcap $(THC_DEPENDS_$(1))
+    DEPENDS:=+libpcap
     URL:=https://github.com/vanhauser-thc/thc-ipv6
     SUBMENU:=THC-IPv6 attack and analyzing toolkit
   endef
index e7c45e3523135a6cc35385a81c65cf2831b842bb..b5e659e58603ff4e97f84d4549fc4b53d57c9a1f 100644 (file)
@@ -38,7 +38,7 @@ define Package/opkg
   SECTION:=base
   CATEGORY:=Base system
   TITLE:=opkg package manager
-  DEPENDS:=+uclient-fetch +libpthread +libubox
+  DEPENDS:=+uclient-fetch +libubox
   DEFAULT:=y if !USE_APK
   URL:=$(PKG_SOURCE_URL)
   MENU:=1
index f0f137c781ea58d0ecbf94fb872a37f27be166bf..47721ae82c229810c6612b45cf545b2a84df9602 100644 (file)
@@ -25,7 +25,7 @@ define Package/adb
   CATEGORY:=Utilities
   TITLE:=Android Debug Bridge CLI tool
   URL:=http://tools.android.com/
-  DEPENDS:=+zlib +libopenssl +libpthread
+  DEPENDS:=+zlib +libopenssl
 endef
 
 define Package/adb/description
index b521daaefc92b2c4b1a1c4bf243ed677e9bcdb16..1b4aab4dafe447268adf2466f5d5b4d0d1f9af85 100644 (file)
@@ -29,7 +29,7 @@ define Package/mdadm
   SUBMENU:=Disc
   TITLE:=A tool for managing Soft RAID under Linux
   URL:=https://www.kernel.org/pub/linux/utils/raid/mdadm/
-  DEPENDS:=+libpthread +kmod-md-mod +kmod-md-raid0 +kmod-md-raid10 +kmod-md-raid1
+  DEPENDS:=+kmod-md-mod +kmod-md-raid0 +kmod-md-raid10 +kmod-md-raid1
 endef
 
 define Package/mdadm/description
index 83f3a8c8424d4ee3756ab7915e0bf892de636b09..824c1a239afbface2f4d00771ac7e8897bc2525b 100644 (file)
@@ -33,7 +33,6 @@ include $(INCLUDE_DIR)/meson.mk
 define Package/util-linux/Default
   SECTION:=utils
   CATEGORY:=Utilities
-  DEPENDS:= +librt
   URL:=http://www.kernel.org/pub/linux/utils/util-linux/
 endef