From b65dc04712dfb8cc7bb9036c7c73b0cead6dd7c9 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 16 Feb 2017 17:36:47 +0100 Subject: opkg: switch to own fork to improve memory usage Switch to our own fork of opkg to significantly reduce the required amount of memory when updating lists or installing packages. Preliminary tests showed a usage drop of about 90% during these operations, from ~3.7MB with unmodified opkg to ~360KB with our custom fork. Signed-off-by: Jo-Philipp Wich --- package/system/opkg/Makefile | 88 ++++++++++++-------------------------------- 1 file changed, 24 insertions(+), 64 deletions(-) (limited to 'package/system/opkg/Makefile') diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile index 39e6b4d..5586ead 100644 --- a/package/system/opkg/Makefile +++ b/package/system/opkg/Makefile @@ -11,15 +11,13 @@ include $(INCLUDE_DIR)/version.mk include $(INCLUDE_DIR)/feeds.mk PKG_NAME:=opkg -PKG_RELEASE:=17 +PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=http://git.yoctoproject.org/git/opkg -PKG_SOURCE_DATE:=2011-04-08 -PKG_SOURCE_VERSION:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d -PKG_MIRROR_HASH:=55e05270f3eb2f3aff5d3791463ce3d13b8197ca7b301cd58e731a249552c48f -PKG_FIXUP:=autoreconf -PKG_REMOVE_FILES = autogen.sh aclocal.m4 +PKG_SOURCE_URL:=https://git.lede-project.org/project/opkg-lede.git +PKG_SOURCE_DATE:=2017-02-18 +PKG_SOURCE_VERSION:=db3fc0ce879bfe784d32ffe5a70e057459039dd5 +PKG_MIRROR_HASH:= PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING @@ -33,15 +31,18 @@ PKG_BUILD_PARALLEL:=1 HOST_BUILD_PARALLEL:=1 PKG_INSTALL:=1 +HOST_BUILD_DEPENDS:=libubox/host + include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/host-build.mk +include $(INCLUDE_DIR)/cmake.mk define Package/opkg SECTION:=base CATEGORY:=Base system TITLE:=opkg package manager - DEPENDS:=+uclient-fetch +libpthread - URL:=http://wiki.openmoko.org/wiki/Opkg + DEPENDS:=+uclient-fetch +libpthread +libubox + URL:=https://git.lede-project.org/?p=project/opkg-lede.git MENU:=1 endef @@ -55,16 +56,6 @@ define Package/opkg/description opkg knows how to install both .ipk and .deb packages. endef -define Package/opkg/config -config OPKG_SUPPORT_MD5 - bool - default n - depends on PACKAGE_opkg - prompt "Support reading old md5 hashes." - help - Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha. -endef - define Package/opkg/conffiles /etc/opkg.conf /etc/opkg/keys/ @@ -74,29 +65,19 @@ endef TARGET_CFLAGS += -ffunction-sections -fdata-sections EXTRA_CFLAGS += $(TARGET_CPPFLAGS) -CONFIGURE_ARGS += \ - --disable-curl \ - --disable-gpg \ - --enable-sha256 \ - --with-opkgetcdir=/etc \ - --with-opkglockfile=/var/lock/opkg.lock - -ifndef CONFIG_SIGNED_PACKAGES - CONFIGURE_ARGS += --disable-usign -endif -ifeq ($(CONFIG_OPKG_SUPPORT_MD5),y) - CONFIGURE_ARGS += --enable-md5 -else - CONFIGURE_ARGS += --disable-md5 -endif - -MAKE_FLAGS = \ - CC="$(TARGET_CC)" \ - DESTDIR="$(PKG_INSTALL_DIR)" \ - HOST_CPU="$(PKGARCH)" \ - LDFLAGS="-Wl,--gc-sections" \ - -define Package/opkg/Default/install +CMAKE_OPTIONS += \ + -DBUILD_TESTS=OFF \ + -DHOST_CPU=$(PKGARCH) \ + -DVERSION="$(PKG_SOURCE_VERSION) ($(PKG_SOURCE_DATE))" + +CMAKE_HOST_OPTIONS += \ + -DSTATIC_UBOX=ON \ + -DBUILD_TESTS=OFF \ + -DHOST_CPU=$(PKGARCH) \ + -DLOCK_FILE=/tmp/opkg.lock \ + -DVERSION="$(PKG_SOURCE_VERSION) ($(PKG_SOURCE_DATE))" + +define Package/opkg/install $(INSTALL_DIR) $(1)/usr/lib/opkg $(INSTALL_DIR) $(1)/bin $(INSTALL_DIR) $(1)/etc/opkg @@ -107,34 +88,13 @@ define Package/opkg/Default/install $(VERSION_SED) $(1)/etc/opkg/distfeeds.conf $(INSTALL_BIN) ./files/20_migrate-feeds $(1)/etc/uci-defaults/ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg -endef - -define Package/opkg/install - $(call Package/opkg/Default/install,$(1),) ifneq ($(CONFIG_SIGNED_PACKAGES),) echo "option check_signature 1" >> $(1)/etc/opkg.conf endif - mkdir $(1)/usr/sbin + $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) ./files/opkg-key $(1)/usr/sbin/ endef -define Build/InstallDev - mkdir -p $(1)/usr/include - $(CP) $(PKG_INSTALL_DIR)/usr/include/libopkg $(1)/usr/include/ -endef - - -HOST_CONFIGURE_ARGS+= \ - --disable-curl \ - --disable-gpg \ - --enable-sha256 \ - --with-opkgetcdir=/etc \ - --with-opkglockfile=/tmp/opkg.lock - -define Host/Compile - +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) CC="$(HOSTCC)" all -endef - define Host/Install $(INSTALL_BIN) $(HOST_BUILD_DIR)/src/opkg-cl $(STAGING_DIR_HOST)/bin/opkg endef -- cgit v1.1