diff options
author | John Crispin <blogic@openwrt.org> | 2014-08-06 18:18:47 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2014-08-06 18:18:47 +0000 |
commit | 63cb54edd5e55ad7f89eea303deb34a2e38cf874 (patch) | |
tree | b3367ee4159104d807163e570c66d52f131db791 /include | |
parent | ae669a075f4c0d41f62fc0d73fa37cea9f64ea10 (diff) | |
download | upstream-63cb54edd5e55ad7f89eea303deb34a2e38cf874.tar.gz upstream-63cb54edd5e55ad7f89eea303deb34a2e38cf874.tar.bz2 upstream-63cb54edd5e55ad7f89eea303deb34a2e38cf874.zip |
build: introduce per feed repository support
This changeset implements a new menuconfig option to generate separate
repositories for each enabled package feed instead of one monolithic one.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Backport of r42002
git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@42016 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'include')
-rw-r--r-- | include/feeds.mk | 23 | ||||
-rw-r--r-- | include/package-dumpinfo.mk | 1 | ||||
-rw-r--r-- | include/package-ipkg.mk | 10 | ||||
-rw-r--r-- | include/scan.mk | 8 | ||||
-rw-r--r-- | include/toplevel.mk | 2 |
5 files changed, 39 insertions, 5 deletions
diff --git a/include/feeds.mk b/include/feeds.mk new file mode 100644 index 0000000000..17ce64f83a --- /dev/null +++ b/include/feeds.mk @@ -0,0 +1,23 @@ +# +# Copyright (C) 2014 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +-include $(TMP_DIR)/.packagefeeds + +FEEDS_AVAILABLE:=$(shell $(SCRIPT_DIR)/feeds list -n) +FEEDS_INSTALLED:=$(patsubst %.index,%,$(notdir $(wildcard $(TOPDIR)/feeds/*.index))) +FEEDS_ENABLED:=$(foreach feed,$(FEEDS_INSTALLED),$(if $(CONFIG_FEED_$(feed)),$(feed))) + +PKG_CONFIG_DEPENDS += \ + CONFIG_PER_FEED_REPO \ + $(foreach feed,$(FEEDS_INSTALLED),CONFIG_FEED_$(feed)) + +# 1: package name +define FeedPackageDir +$(strip $(if $(CONFIG_PER_FEED_REPO), \ + $(abspath $(PACKAGE_DIR)/$(if $(Package/$(1)/feed),$(Package/$(1)/feed),base)), \ + $(PACKAGE_DIR))) +endef diff --git a/include/package-dumpinfo.mk b/include/package-dumpinfo.mk index 2bf78c3f18..9dc847dc1d 100644 --- a/include/package-dumpinfo.mk +++ b/include/package-dumpinfo.mk @@ -46,6 +46,7 @@ Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$ $(if $(KCONFIG),Kernel-Config: $(KCONFIG) )$(if $(BUILDONLY),Build-Only: $(BUILDONLY) )$(if $(HIDDEN),Hidden: $(HIDDEN) +)$(if $(FEED),Feed: $(FEED) )Description: $(if $(Package/$(1)/description),$(Package/$(1)/description),$(TITLE)) $(if $(URL),$(URL) )$(MAINTAINER) diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index 9783a63254..be47526467 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -5,6 +5,8 @@ # See /LICENSE for more information. # +include $(INCLUDE_DIR)/feeds.mk + # invoke ipkg-build with some default options IPKG_BUILD:= \ ipkg-build -c -o 0 -g 0 @@ -74,7 +76,8 @@ endif ifeq ($(DUMP),) define BuildTarget/ipkg - IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk + PDIR_$(1):=$(call FeedPackageDir,$(1)) + IPKG_$(1):=$$(PDIR_$(1))/$(1)_$(VERSION)_$(PKGARCH).ipk IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1) KEEP_$(1):=$(strip $(call Package/$(1)/conffiles)) @@ -187,11 +190,12 @@ ifeq ($(DUMP),) ) endif - $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR) + $(INSTALL_DIR) $$(PDIR_$(1)) + $(IPKG_BUILD) $$(IDIR_$(1)) $$(PDIR_$(1)) @[ -f $$(IPKG_$(1)) ] $(1)-clean: - rm -f $(PACKAGE_DIR)/$(1)_* + rm -f $$(PDIR_$(1))/$(1)_* clean: $(1)-clean diff --git a/include/scan.mk b/include/scan.mk index 4d08ee8f0e..0998333439 100644 --- a/include/scan.mk +++ b/include/scan.mk @@ -21,15 +21,19 @@ else endef endif +define feedname +$(if $(patsubst feeds/%,,$(1)),,$(word 2,$(subst /, ,$(1)))) +endef + define PackageDir $(TMP_DIR)/.$(SCAN_TARGET): $(TMP_DIR)/info/.$(SCAN_TARGET)-$(1) $(TMP_DIR)/info/.$(SCAN_TARGET)-$(1): $(SCAN_DIR)/$(2)/Makefile $(SCAN_STAMP) $(foreach DEP,$(DEPS_$(SCAN_DIR)/$(2)/Makefile) $(SCAN_DEPS),$(wildcard $(if $(filter /%,$(DEP)),$(DEP),$(SCAN_DIR)/$(2)/$(DEP)))) { \ $$(call progress,Collecting $(SCAN_NAME) info: $(SCAN_DIR)/$(2)) \ echo Source-Makefile: $(SCAN_DIR)/$(2)/Makefile; \ - $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) 2>/dev/null || { \ + $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) 2>/dev/null || { \ mkdir -p "$(TOPDIR)/logs/$(SCAN_DIR)/$(2)"; \ - $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) > $(TOPDIR)/logs/$(SCAN_DIR)/$(2)/dump.txt 2>&1; \ + $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) > $(TOPDIR)/logs/$(SCAN_DIR)/$(2)/dump.txt 2>&1; \ $$(call progress,ERROR: please fix $(SCAN_DIR)/$(2)/Makefile - see logs/$(SCAN_DIR)/$(2)/dump.txt for details\n) \ rm -f $$@; \ }; \ diff --git a/include/toplevel.mk b/include/toplevel.mk index 10b81049c5..6949be38a3 100644 --- a/include/toplevel.mk +++ b/include/toplevel.mk @@ -71,7 +71,9 @@ prepare-tmpinfo: FORCE f=tmp/.$${type}info; t=tmp/.config-$${type}.in; \ [ "$$t" -nt "$$f" ] || ./scripts/metadata.pl $${type}_config "$$f" > "$$t" || { rm -f "$$t"; echo "Failed to build $$t"; false; break; }; \ done + [ tmp/.config-feeds.in -nt tmp/.packagefeeds ] || ./scripts/feeds feed_config > tmp/.config-feeds.in ./scripts/metadata.pl package_mk tmp/.packageinfo > tmp/.packagedeps || { rm -f tmp/.packagedeps; false; } + ./scripts/metadata.pl package_feeds tmp/.packageinfo > tmp/.packagefeeds || { rm -f tmp/.packagefeeds; false; } touch $(TOPDIR)/tmp/.build .config: ./scripts/config/conf $(if $(CONFIG_HAVE_DOT_CONFIG),,prepare-tmpinfo) |