Changeset 33631


Ignore:
Timestamp:
2012-10-06T18:01:06+02:00 (5 years ago)
Author:
nbd
Message:

build: rework the package/install step - collect package install lists during package/compile, then install all packages at once

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Makefile

    r29798 r33631  
    4141$(toolchain/stamp-install): $(tools/stamp-install) 
    4242$(target/stamp-compile): $(toolchain/stamp-install) $(tools/stamp-install) $(BUILD_DIR)/.prepared 
    43 $(package/stamp-cleanup): $(target/stamp-compile) 
    44 $(package/stamp-compile): $(target/stamp-compile) $(package/stamp-cleanup) 
     43$(package/stamp-compile): $(target/stamp-compile) 
    4544$(package/stamp-install): $(package/stamp-compile) 
    46 $(package/stamp-rootfs-prepare): $(package/stamp-install) 
    47 $(target/stamp-install): $(package/stamp-compile) $(package/stamp-install) $(package/stamp-rootfs-prepare) 
     45$(target/stamp-install): $(package/stamp-compile) $(package/stamp-install) 
    4846 
    4947printdb: 
     
    8785 
    8886prepare: .config $(tools/stamp-install) $(toolchain/stamp-install) 
    89 world: prepare $(target/stamp-compile) $(package/stamp-cleanup) $(package/stamp-compile) $(package/stamp-install) $(package/stamp-rootfs-prepare) $(target/stamp-install) FORCE 
     87world: prepare $(target/stamp-compile) $(package/stamp-compile) $(package/stamp-install) $(target/stamp-install) FORCE 
    9088        $(_SINGLE)$(SUBMAKE) -r package/index 
    9189 
  • trunk/include/package-ipkg.mk

    r32739 r33631  
    55# See /LICENSE for more information. 
    66# 
    7  
    8 # where to build (and put) .ipk packages 
    9 OPKG:= \ 
    10   IPKG_TMP=$(TMP_DIR)/ipkg \ 
    11   IPKG_INSTROOT=$(TARGET_DIR) \ 
    12   IPKG_CONF_DIR=$(STAGING_DIR)/etc \ 
    13   IPKG_OFFLINE_ROOT=$(TARGET_DIR) \ 
    14   $(STAGING_DIR_HOST)/bin/opkg \ 
    15         --offline-root $(TARGET_DIR) \ 
    16         --force-depends \ 
    17         --force-overwrite \ 
    18         --force-postinstall \ 
    19         --force-maintainer \ 
    20         --add-dest root:/ \ 
    21         --add-arch all:100 \ 
    22         --add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200 
    237 
    248# invoke ipkg-build with some default options 
     
    9074    IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk 
    9175    IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1) 
    92     INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list 
    9376    KEEP_$(1):=$(strip $(call Package/$(1)/conffiles)) 
    9477 
     
    10083 
    10184        ifeq ($(CONFIG_PACKAGE_$(1)),y) 
    102           install: $$(INFO_$(1)) 
     85          .PHONY: $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install.$(1) 
     86          compile: $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install.$(1) 
     87          $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install.$(1): 
     88                        @if [ -f $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install.clean ]; then \ 
     89                                rm -f \ 
     90                                        $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install \ 
     91                                        $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install.clean; \ 
     92                        fi; \ 
     93                        echo "$(1)" >> $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install 
    10394        endif 
    10495      else 
     
    189180        @[ -f $$(IPKG_$(1)) ] 
    190181 
    191     $$(INFO_$(1)): $$(IPKG_$(1)) 
    192         @[ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp 
    193         $(OPKG) install $$(IPKG_$(1)) 
    194         $(if $(filter-out essential,$(PKG_FLAGS)),for flag in $(filter-out essential,$(PKG_FLAGS)); do $(OPKG) flag $$$$flag $(1); done,$(OPKG) flag ok $(1)) 
    195  
    196182    $(1)-clean: 
    197183        rm -f $(PACKAGE_DIR)/$(1)_* 
  • trunk/include/package.mk

    r33445 r33631  
    1414PKG_MD5SUM ?= unknown 
    1515PKG_BUILD_PARALLEL ?= 
    16 PKG_INFO_DIR := $(STAGING_DIR)/pkginfo 
    1716 
    1817ifneq ($(CONFIG_PKG_BUILD_USE_JOBSERVER),) 
     
    5251  QUILT:=1 
    5352endif 
     53 
     54PKG_DIR_NAME:=$(lastword $(subst /,$(space),$(CURDIR))) 
    5455 
    5556include $(INCLUDE_DIR)/download.mk 
     
    251252.NOTPARALLEL: 
    252253 
     254.PHONY: prepare-package-install 
     255prepare-package-install: 
     256        @touch $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install.clean 
     257        @echo "$(filter-out essential,$(PKG_FLAGS))" > $(PKG_INFO_DIR)/$(PKG_DIR_NAME).install.flags 
     258 
    253259$(PACKAGE_DIR): 
    254260        mkdir -p $@ 
     
    258264prepare: 
    259265configure: 
    260 compile: 
    261 install: 
     266compile: prepare-package-install 
     267install: compile 
    262268clean-staging: FORCE 
    263269        rm -f $(STAMP_INSTALLED) 
  • trunk/package/Makefile

    r32165 r33631  
    1010-include $(TMP_DIR)/.packagedeps 
    1111$(curdir)/builddirs:=$(sort $(package-) $(package-y) $(package-m)) 
     12$(curdir)/builddirs-install:=. 
    1213ifeq ($(SDK),1) 
    13   $(curdir)/builddirs-install:=. 
    1414else 
    1515  $(curdir)/builddirs-default:=. $(sort $(package-y) $(package-m)) 
    1616  $(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m)) 
    17   $(curdir)/builddirs-install:=. $(filter-out base-files,$(sort $(package-y))) $(filter base-files,$(package-y)) 
    1817endif 
    1918ifneq ($(IGNORE_ERRORS),) 
    2019  $(curdir)/builddirs-ignore-compile:= $(if $(filter n m y, $(IGNORE_ERRORS)),$(foreach m,$(IGNORE_ERRORS),$(package-$(subst n,,$(m)))),$(package-m) $(package-)) 
    2120endif 
    22  
    23 $(curdir)/install:=$(curdir)/install-cleanup 
    24  
    25 $(curdir)/cleanup: $(TMP_DIR)/.build 
    26         - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755 
    27         rm -rf $(TARGET_DIR) $(STAGING_DIR_ROOT) 
    2821 
    2922ifdef CONFIG_USE_MKLIBS 
     
    6255endif 
    6356 
    64 $(curdir)/rootfs-prepare: $(TMP_DIR)/.build 
     57# where to build (and put) .ipk packages 
     58OPKG:= \ 
     59  IPKG_TMP=$(TMP_DIR)/ipkg \ 
     60  IPKG_INSTROOT=$(TARGET_DIR) \ 
     61  IPKG_CONF_DIR=$(STAGING_DIR)/etc \ 
     62  IPKG_OFFLINE_ROOT=$(TARGET_DIR) \ 
     63  $(STAGING_DIR_HOST)/bin/opkg \ 
     64        --offline-root $(TARGET_DIR) \ 
     65        --force-depends \ 
     66        --force-overwrite \ 
     67        --force-postinstall \ 
     68        --force-maintainer \ 
     69        --add-dest root:/ \ 
     70        --add-arch all:100 \ 
     71        --add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200 
     72 
     73PACKAGE_INSTALL:=$(sort $(foreach pkg,$(package-y),$(lastword $(subst /,$(space),$(pkg))))) 
     74PACKAGE_INSTALL_FILES:=$(patsubst %,$(PKG_INFO_DIR)/%.install,$(PACKAGE_INSTALL)) 
     75 
     76$(curdir)/install: $(TMP_DIR)/.build 
     77        - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755 
     78        rm -rf $(TARGET_DIR) $(STAGING_DIR_ROOT) 
     79        [ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp 
     80        $(OPKG) install `cat $(PACKAGE_INSTALL_FILES) | sed -e 's,^\(.*\)$$,$(PACKAGE_DIR)/\1_*.ipk,'` 
     81        @for pkg in $(PACKAGE_INSTALL); do \ 
     82                [ -s $(PKG_INFO_DIR)/$${pkg}.install.flags ] || continue; \ 
     83                for flag in `cat $(PKG_INFO_DIR)/$${pkg}.install.flags`; do \ 
     84                        $(OPKG) flag $$flag `cat $(PKG_INFO_DIR)/$${pkg}.install`; \ 
     85                done; \ 
     86        done || true 
    6587        @-$(MAKE) package/preconfig 
    6688        @if [ -d $(TOPDIR)/files ]; then \ 
     
    95117        ) 
    96118 
     119$(curdir)/preconfig: 
     120 
    97121$(curdir)/flags-install:= -j1 
    98122 
    99123$(eval $(call stampfile,$(curdir),package,prereq,.config)) 
    100 $(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build)) 
    101124$(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build)) 
    102125$(eval $(call stampfile,$(curdir),package,install,$(TMP_DIR)/.build)) 
    103 $(eval $(call stampfile,$(curdir),package,rootfs-prepare,$(TMP_DIR)/.build)) 
    104126 
    105127$(eval $(call subdir,$(curdir))) 
  • trunk/rules.mk

    r33508 r33631  
    106106STAGING_DIR_ROOT:=$(STAGING_DIR)/root-$(BOARD) 
    107107BUILD_LOG_DIR:=$(TOPDIR)/logs 
     108PKG_INFO_DIR := $(STAGING_DIR)/pkginfo 
    108109 
    109110TARGET_PATH:=$(STAGING_DIR_HOST)/bin:$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space),$(PATH))))) 
Note: See TracChangeset for help on using the changeset viewer.