build: rework the package/install step - collect package install lists during package/compile, then install all packages at once
SVN-Revision: 33631
This commit is contained in:
@@ -9,23 +9,16 @@ curdir:=package
|
||||
|
||||
-include $(TMP_DIR)/.packagedeps
|
||||
$(curdir)/builddirs:=$(sort $(package-) $(package-y) $(package-m))
|
||||
$(curdir)/builddirs-install:=.
|
||||
ifeq ($(SDK),1)
|
||||
$(curdir)/builddirs-install:=.
|
||||
else
|
||||
$(curdir)/builddirs-default:=. $(sort $(package-y) $(package-m))
|
||||
$(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m))
|
||||
$(curdir)/builddirs-install:=. $(filter-out base-files,$(sort $(package-y))) $(filter base-files,$(package-y))
|
||||
endif
|
||||
ifneq ($(IGNORE_ERRORS),)
|
||||
$(curdir)/builddirs-ignore-compile:= $(if $(filter n m y, $(IGNORE_ERRORS)),$(foreach m,$(IGNORE_ERRORS),$(package-$(subst n,,$(m)))),$(package-m) $(package-))
|
||||
endif
|
||||
|
||||
$(curdir)/install:=$(curdir)/install-cleanup
|
||||
|
||||
$(curdir)/cleanup: $(TMP_DIR)/.build
|
||||
- find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755
|
||||
rm -rf $(TARGET_DIR) $(STAGING_DIR_ROOT)
|
||||
|
||||
ifdef CONFIG_USE_MKLIBS
|
||||
define mklibs
|
||||
rm -rf $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-out
|
||||
@@ -61,7 +54,36 @@ ifdef CONFIG_USE_MKLIBS
|
||||
endef
|
||||
endif
|
||||
|
||||
$(curdir)/rootfs-prepare: $(TMP_DIR)/.build
|
||||
# where to build (and put) .ipk packages
|
||||
OPKG:= \
|
||||
IPKG_TMP=$(TMP_DIR)/ipkg \
|
||||
IPKG_INSTROOT=$(TARGET_DIR) \
|
||||
IPKG_CONF_DIR=$(STAGING_DIR)/etc \
|
||||
IPKG_OFFLINE_ROOT=$(TARGET_DIR) \
|
||||
$(STAGING_DIR_HOST)/bin/opkg \
|
||||
--offline-root $(TARGET_DIR) \
|
||||
--force-depends \
|
||||
--force-overwrite \
|
||||
--force-postinstall \
|
||||
--force-maintainer \
|
||||
--add-dest root:/ \
|
||||
--add-arch all:100 \
|
||||
--add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200
|
||||
|
||||
PACKAGE_INSTALL:=$(sort $(foreach pkg,$(package-y),$(lastword $(subst /,$(space),$(pkg)))))
|
||||
PACKAGE_INSTALL_FILES:=$(patsubst %,$(PKG_INFO_DIR)/%.install,$(PACKAGE_INSTALL))
|
||||
|
||||
$(curdir)/install: $(TMP_DIR)/.build
|
||||
- find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755
|
||||
rm -rf $(TARGET_DIR) $(STAGING_DIR_ROOT)
|
||||
[ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp
|
||||
$(OPKG) install `cat $(PACKAGE_INSTALL_FILES) | sed -e 's,^\(.*\)$$,$(PACKAGE_DIR)/\1_*.ipk,'`
|
||||
@for pkg in $(PACKAGE_INSTALL); do \
|
||||
[ -s $(PKG_INFO_DIR)/$${pkg}.install.flags ] || continue; \
|
||||
for flag in `cat $(PKG_INFO_DIR)/$${pkg}.install.flags`; do \
|
||||
$(OPKG) flag $$flag `cat $(PKG_INFO_DIR)/$${pkg}.install`; \
|
||||
done; \
|
||||
done || true
|
||||
@-$(MAKE) package/preconfig
|
||||
@if [ -d $(TOPDIR)/files ]; then \
|
||||
( cd $(TOPDIR)/files; find -type f ) | \
|
||||
@@ -94,12 +116,12 @@ $(curdir)/index: FORCE
|
||||
gzip -9c Packages > Packages.gz \
|
||||
)
|
||||
|
||||
$(curdir)/preconfig:
|
||||
|
||||
$(curdir)/flags-install:= -j1
|
||||
|
||||
$(eval $(call stampfile,$(curdir),package,prereq,.config))
|
||||
$(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build))
|
||||
$(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build))
|
||||
$(eval $(call stampfile,$(curdir),package,install,$(TMP_DIR)/.build))
|
||||
$(eval $(call stampfile,$(curdir),package,rootfs-prepare,$(TMP_DIR)/.build))
|
||||
|
||||
$(eval $(call subdir,$(curdir)))
|
||||
|
||||
Reference in New Issue
Block a user