0090adcd5c
Opkg's builtin decompression code is unsuitable to process nested archives as it uses a single shared state and relies on undefined seek behaviour for pipes. Rework the extraction logic to use the external gzip command as I/O filter for decompressing data and remove the builtin inflate code entirely. This shrinks the final opkg binary by about 4KB and results in less runtime memory consumption due to efficient use of vfork() and less copy-on-write operations in the forked child. Rework by Felix: create a thread that relays data to the gzip process instead of using a fragile poll loop Signed-off-by: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Felix Fietkau <nbd@nbd.name>
196 lines
5.0 KiB
Makefile
196 lines
5.0 KiB
Makefile
#
|
|
# Copyright (C) 2006-2015 OpenWrt.org
|
|
# Copyright (C) 2016 LEDE Project
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/kernel.mk
|
|
include $(INCLUDE_DIR)/version.mk
|
|
include $(INCLUDE_DIR)/feeds.mk
|
|
|
|
PKG_NAME:=opkg
|
|
PKG_RELEASE:=16
|
|
|
|
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_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
|
PKG_FIXUP:=autoreconf
|
|
PKG_REMOVE_FILES = autogen.sh aclocal.m4
|
|
|
|
PKG_LICENSE:=GPL-2.0
|
|
PKG_LICENSE_FILES:=COPYING
|
|
|
|
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
|
|
|
PKG_FLAGS := nonshared
|
|
PKG_CONFIG_DEPENDS := CONFIG_SIGNED_PACKAGES
|
|
|
|
PKG_BUILD_PARALLEL:=1
|
|
HOST_BUILD_PARALLEL:=1
|
|
PKG_INSTALL:=1
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
include $(INCLUDE_DIR)/host-build.mk
|
|
|
|
define Package/opkg/Default
|
|
SECTION:=base
|
|
CATEGORY:=Base system
|
|
TITLE:=opkg package manager
|
|
DEPENDS:=+uclient-fetch
|
|
URL:=http://wiki.openmoko.org/wiki/Opkg
|
|
MENU:=1
|
|
endef
|
|
|
|
define Package/opkg/Default/description
|
|
Lightweight package management system
|
|
opkg is the opkg Package Management System, for handling
|
|
installation and removal of packages on a system. It can
|
|
recursively follow dependencies and download all packages
|
|
necessary to install a particular package.
|
|
|
|
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
|
|
$(call Package/opkg/Default)
|
|
VARIANT:=unsigned
|
|
endef
|
|
|
|
define Package/opkg/description
|
|
$(call Package/opkg/Default/description)
|
|
endef
|
|
|
|
define Package/opkg/conffiles
|
|
/etc/opkg.conf
|
|
/etc/opkg/keys/
|
|
/etc/opkg/customfeeds.conf
|
|
endef
|
|
|
|
|
|
define Package/opkg-smime
|
|
$(call Package/opkg/Default)
|
|
TITLE+= (with S/MIME signature support)
|
|
DEPENDS+=+PACKAGE_opkg-smime:libopenssl
|
|
VARIANT:=smime
|
|
endef
|
|
|
|
define Package/opkg-smime/description
|
|
$(call Package/opkg/Default/description)
|
|
|
|
This package allows the Package index to be verified with S/MIME.
|
|
endef
|
|
|
|
define Package/opkg-smime/config
|
|
config OPKG_SMIME_SUPPORT_MD5
|
|
bool
|
|
default n
|
|
depends on PACKAGE_opkg-smime
|
|
prompt "Support reading old md5 hashes."
|
|
help
|
|
Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha.
|
|
endef
|
|
|
|
Package/opkg-smime/conffiles = $(Package/opkg/conffiles)
|
|
|
|
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
|
|
|
|
ifeq ($(BUILD_VARIANT),smime)
|
|
CONFIGURE_ARGS += --enable-openssl --disable-usign
|
|
ifeq ($(CONFIG_OPKG_SMIME_SUPPORT_MD5),y)
|
|
CONFIGURE_ARGS += --enable-md5
|
|
else
|
|
CONFIGURE_ARGS += --disable-md5
|
|
endif
|
|
else
|
|
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
|
|
endif
|
|
|
|
MAKE_FLAGS = \
|
|
CC="$(TARGET_CC)" \
|
|
DESTDIR="$(PKG_INSTALL_DIR)" \
|
|
HOST_CPU="$(PKGARCH)" \
|
|
LDFLAGS="-Wl,--gc-sections" \
|
|
|
|
define Package/opkg/Default/install
|
|
$(INSTALL_DIR) $(1)/usr/lib/opkg
|
|
$(INSTALL_DIR) $(1)/bin
|
|
$(INSTALL_DIR) $(1)/etc/opkg
|
|
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
|
$(INSTALL_DATA) ./files/customfeeds.conf $(1)/etc/opkg/customfeeds.conf
|
|
$(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf
|
|
$(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf)
|
|
$(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_BIN) ./files/opkg-key $(1)/usr/sbin/
|
|
endef
|
|
|
|
define Package/opkg-smime/install
|
|
$(call Package/opkg/Default/install,$(1),-smime)
|
|
$(INSTALL_DIR) $(1)/etc/ssl/certs
|
|
$(if $(CONFIG_OPKGSMIME_CERT),$(INSTALL_DATA) $(call qstrip,$(CONFIG_OPKGSMIME_CERT)) $(1)/etc/ssl/certs/opkg.pem,)
|
|
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
|
|
|
|
$(eval $(call BuildPackage,opkg))
|
|
$(eval $(call BuildPackage,opkg-smime))
|
|
$(eval $(call HostBuild))
|