glib2: split package into separate libraries
authorPeter Denison <redacted>
Sun, 29 Oct 2023 17:49:58 +0000 (17:49 +0000)
committerPhilip Prindeville <redacted>
Sun, 26 Apr 2026 20:11:40 +0000 (14:11 -0600)
Existing package contains five libraries, some of which are > 1MB. Allow
packages which depend on only some of them to only pull in the ones they
need by splitting this package into finer-grained packages. Transition
can be done piecemeal as depending on glib2 will still pull in all the
libraries.

Signed-off-by: Peter Denison <redacted>
libs/glib2/Makefile

index 225fe07754a70b8b49cad92490775a0bef1c411d..82a34e92b1ca56866386ed721ac799d00a04187e 100644 (file)
@@ -33,14 +33,68 @@ include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
 include $(INCLUDE_DIR)/meson.mk
 
-define Package/glib2
+define Package/glib2/default
   SECTION:=libs
   CATEGORY:=Libraries
-  DEPENDS:=$(ICONV_DEPENDS) $(INTL_DEPENDS) +zlib +libpthread +libffi +libattr +libpcre2
-  TITLE:=glib 2.0
   URL:=http://www.gtk.org/
 endef
 
+define Package/glib2-core
+$(call Package/glib2/default)
+  TITLE:=GLib 2.0 core library
+  DEPENDS:=$(ICONV_DEPENDS) $(INTL_DEPENDS) +libattr +libpcre2
+endef
+
+define Package/glib2-gmodule
+$(call Package/glib2/default)
+  TITLE:=GLib 2.0 gmodule library
+  DEPENDS:=+glib2-core
+endef
+
+define Package/glib2-gthread
+$(call Package/glib2/default)
+  TITLE:=GLib 2.0 gthread library
+  DEPENDS:=+glib2-core
+endef
+
+define Package/glib2-gobject
+$(call Package/glib2/default)
+  TITLE:=GLib 2.0 gobject library
+  DEPENDS:=+glib2-core +libffi
+endef
+
+define Package/glib2-gio
+$(call Package/glib2/default)
+  TITLE:=GLib 2.0 gio library
+  DEPENDS:=+glib2-core +glib2-gobject +glib2-gmodule +zlib +libffi
+endef
+
+define Package/glib2
+$(call Package/glib2/default)
+  TITLE:=Full GLib 2.0 library
+  DEPENDS:+glib2-gthread +glib2-gio
+endef
+
+define Package/glib2-core/description
+  Common code and core library for GLib library of C routines
+endef
+
+define Package/glib2-gmodule/description
+  GLib library module functions
+endef
+
+define Package/glib2-gthread/description
+  GLib library thread functions
+endef
+
+define Package/glib2-gobject/description
+  GLib library object functions
+endef
+
+define Package/glib2-gio/description
+  GLib library io functions
+endef
+
 define Package/glib2/description
   The GLib library of C routines
 endef
@@ -122,12 +176,44 @@ define Build/InstallDev
                $(1)/usr/share/glib-2.0/
 endef
 
-define Package/glib2/install
+define Package/glib2-core/install
        $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) \
-               $(PKG_INSTALL_DIR)/usr/lib/*.so* \
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libglib-2.0.so* \
                $(1)/usr/lib/
 endef
 
+define Package/glib2-gmodule/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgmodule-2.0.so* \
+               $(1)/usr/lib
+endef
+
+define Package/glib2-gthread/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgthread-2.0.so* \
+               $(1)/usr/lib
+endef
+
+define Package/glib2-gobject/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgobject-2.0.so* \
+               $(1)/usr/lib
+endef
+
+define Package/glib2-gio/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgio-2.0.so* \
+               $(1)/usr/lib
+endef
+
+define Package/glib2/install
+       :
+endef
+
 $(eval $(call HostBuild))
+$(eval $(call BuildPackage,glib2-core))
+$(eval $(call BuildPackage,glib2-gmodule))
+$(eval $(call BuildPackage,glib2-gthread))
+$(eval $(call BuildPackage,glib2-gobject))
+$(eval $(call BuildPackage,glib2-gio))
 $(eval $(call BuildPackage,glib2))
git clone https://git.99rst.org/PROJECT