From 5170393f8cae3c5acac61bd6ac6e127f9727cee4 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 6 Apr 2016 21:55:44 +0200 Subject: [PATCH] include: choose package output directory based on repository info Use the new repository metadata field to choose the output directory of the final package archives. Non-sharable packages will be placed in the per-target package directory while the rest will be placed in a per-repository sub directory within the $OUTPUT_DIR/packages/$CPU_TYPE/ prefix. Signed-off-by: Jo-Philipp Wich --- include/feeds.mk | 17 ++++++++++++++++- include/package-ipkg.mk | 2 +- include/package.mk | 2 +- package/Makefile | 23 +++++++---------------- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/include/feeds.mk b/include/feeds.mk index 4f71b39940..ef7a09f4cd 100644 --- a/include/feeds.mk +++ b/include/feeds.mk @@ -1,5 +1,6 @@ # # Copyright (C) 2014 OpenWrt.org +# Copyright (C) 2016 LEDE Project # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -12,6 +13,16 @@ FEEDS_INSTALLED:=$(notdir $(wildcard $(TOPDIR)/package/feeds/*)) FEEDS_ENABLED:=$(foreach feed,$(FEEDS_INSTALLED),$(if $(CONFIG_FEED_$(feed)),$(feed))) FEEDS_DISABLED:=$(filter-out $(FEEDS_ENABLED),$(FEEDS_AVAILABLE)) +PACKAGE_SUBDIRS=$(PACKAGE_DIR) +ifneq ($(CONFIG_PER_FEED_REPO),) + PACKAGE_SUBDIRS += $(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/base + ifneq ($(CONFIG_PER_FEED_REPO_ADD_DISABLED),) + PACKAGE_SUBDIRS += $(foreach FEED,$(FEEDS_AVAILABLE),$(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/$(FEED)) + else + PACKAGE_SUBDIRS += $(foreach FEED,$(FEEDS_ENABLED),$(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/$(FEED)) + endif +endif + PKG_CONFIG_DEPENDS += \ CONFIG_PER_FEED_REPO \ CONFIG_PER_FEED_REPO_ADD_DISABLED \ @@ -19,9 +30,13 @@ PKG_CONFIG_DEPENDS += \ $(foreach feed,$(FEEDS_INSTALLED),CONFIG_FEED_$(feed)) # 1: package name +# 2: flags +# 3: section define FeedPackageDir $(strip $(if $(CONFIG_PER_FEED_REPO), \ - $(abspath $(PACKAGE_DIR)/$(if $(Package/$(1)/subdir),$(Package/$(1)/subdir),base)), \ + $(if $(Package/$(1)/subdir), \ + $(abspath $(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/$(Package/$(1)/subdir)), \ + $(PACKAGE_DIR)), \ $(PACKAGE_DIR))) endef diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index eb4c874047..a86f401805 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -88,7 +88,7 @@ _endef=endef ifeq ($(DUMP),) define BuildTarget/ipkg - PDIR_$(1):=$(call FeedPackageDir,$(1)) + PDIR_$(1):=$(call FeedPackageDir,$(1),$(PKG_FLAGS),$(SECTION)) IPKG_$(1):=$$(PDIR_$(1))/$(1)_$(VERSION)_$(PKGARCH).ipk IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1) KEEP_$(1):=$(strip $(call Package/$(1)/conffiles)) diff --git a/include/package.mk b/include/package.mk index ca315b59ac..ff9a5df9e6 100644 --- a/include/package.mk +++ b/include/package.mk @@ -294,7 +294,7 @@ Build/DistCheck=$(call Build/DistCheck/Default,) prepare-package-install: @mkdir -p $(PKG_INFO_DIR) @touch $(PKG_INSTALL_STAMP).clean - @echo "$(filter-out essential,$(PKG_FLAGS))" > $(PKG_INSTALL_STAMP).flags + @echo "$(filter-out essential nonshared,$(PKG_FLAGS))" > $(PKG_INSTALL_STAMP).flags $(PACKAGE_DIR): mkdir -p $@ diff --git a/package/Makefile b/package/Makefile index e0bd75ba7f..c8f12d8a44 100644 --- a/package/Makefile +++ b/package/Makefile @@ -98,7 +98,7 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/system/opkg/host/install - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755 rm -rf $(TARGET_DIR) [ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp - @$(FIND) `sed -e 's|.*|$(PACKAGE_DIR)$(if $(CONFIG_PER_FEED_REPO),/*)/&_*.ipk|' $(PACKAGE_INSTALL_FILES)` | sort -u | $(OPKG) install + @echo $(wildcard $(foreach dir,$(PACKAGE_SUBDIRS),$(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(dir)/$(pkg)_*.ipk))) | $(OPKG) install @for file in $(PACKAGE_INSTALL_FILES); do \ [ -s $$file.flags ] || continue; \ for flag in `cat $$file.flags`; do \ @@ -139,28 +139,19 @@ ifndef CONFIG_OPKGSMIME_PASSPHRASE endif endif -PACKAGE_SUBDIRS=. -ifneq ($(CONFIG_PER_FEED_REPO),) - ifneq ($(CONFIG_PER_FEED_REPO_ADD_DISABLED),) - PACKAGE_SUBDIRS=base kernel $(FEEDS_AVAILABLE) - else - PACKAGE_SUBDIRS=base kernel $(FEEDS_ENABLED) - endif -endif - $(curdir)/index: FORCE @echo Generating package index... @for d in $(PACKAGE_SUBDIRS); do ( \ - mkdir -p $(PACKAGE_DIR)/$$d; \ - cd $(PACKAGE_DIR)/$$d || continue; \ + mkdir -p $$d; \ + cd $$d || continue; \ $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages && \ gzip -9nc Packages > Packages.gz; \ ); done ifdef CONFIG_SIGNED_PACKAGES @echo Signing package index... @for d in $(PACKAGE_SUBDIRS); do ( \ - [ -d $(PACKAGE_DIR)/$$d ] && \ - cd $(PACKAGE_DIR)/$$d || continue; \ + [ -d $$d ] && \ + cd $$d || continue; \ $(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY); \ ); done else @@ -172,8 +163,8 @@ ifeq ($(call qstrip,$(CONFIG_OPKGSMIME_CERT)),) else @echo Signing package index... @for d in $(PACKAGE_SUBDIRS); do ( \ - [ -d $(PACKAGE_DIR)/$$d ] && \ - cd $(PACKAGE_DIR)/$$d || continue; \ + [ -d $$d ] && \ + cd $$d || continue; \ openssl smime -binary -in Packages.gz \ -out Packages.sig -outform PEM -sign \ -signer $(CONFIG_OPKGSMIME_CERT) \