build: rework the package/install step - collect package install lists during package...
[openwrt/svn-archive/archive.git] / package / Makefile
index 5d942ca78391733b13ce1278de2408115c62b0f4..63fdb92bae5ae5895f4611fd629bbd529713570c 100644 (file)
@@ -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)))