IB: use online repositories
[openwrt/openwrt.git] / target / imagebuilder / files / Makefile
index b0d0698acdc5370ab48e9e25dc858643d060bd4f..0f0fe42b595d8addcbc4df031f0e8f2a28f738e1 100644 (file)
@@ -54,6 +54,7 @@ help: FORCE
 # override variables from rules.mk
 PACKAGE_DIR:=$(TOPDIR)/packages
 OPKG:= \
+  IPKG_NO_SCRIPT=1 \
   IPKG_TMP="$(TOPDIR)/tmp/ipkgtmp" \
   IPKG_INSTROOT="$(TARGET_DIR)" \
   IPKG_CONF_DIR="$(TOPDIR)/tmp" \
@@ -77,6 +78,7 @@ define Profile
   endif
   $(1)_NAME:=$(NAME)
   $(1)_PACKAGES:=$(PACKAGES)
+  PROFILE_NAMES += $(1)
   PROFILE_LIST += \
        echo '$(1):'; [ -z '$(NAME)' ] || echo '        $(NAME)'; echo '        Packages: $(PACKAGES)';
 endef
@@ -105,7 +107,7 @@ _call_image:
                $(MAKE) package_index; \
        else \
                mkdir -p $(TARGET_DIR)/tmp; \
-               $(OPKG) update; \
+               $(OPKG) update || true; \
        fi
        $(MAKE) package_install
 ifneq ($(USER_FILES),)
@@ -121,20 +123,20 @@ package_index: FORCE
        (cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . > Packages && \
                gzip -9c Packages > Packages.gz \
        ) >/dev/null 2>/dev/null
-       $(OPKG) update
+       $(OPKG) update || true
 
 package_install: FORCE
        @echo
        @echo Installing packages...
-       $(OPKG) install $(PACKAGE_DIR)/libc_*.ipk
-       $(OPKG) install $(PACKAGE_DIR)/kernel_*.ipk
+       $(OPKG) install $(firstword $(wildcard $(PACKAGE_DIR)/libc_*.ipk $(PACKAGE_DIR)/base/libc_*.ipk))
+       $(OPKG) install $(firstword $(wildcard $(PACKAGE_DIR)/kernel_*.ipk $(PACKAGE_DIR)/base/kernel_*.ipk))
        $(OPKG) install $(BUILD_PACKAGES)
        rm -f $(TARGET_DIR)/usr/lib/opkg/lists/*
 
 copy_files: FORCE
        @echo
        @echo Copying extra files
-       $(CP) $(USER_FILES)/* $(TARGET_DIR)/
+       @$(call file_copy,$(USER_FILES)/*,$(TARGET_DIR)/)
 
 package_postinst: FORCE
        @echo
@@ -142,13 +144,14 @@ package_postinst: FORCE
        @rm -f $(TARGET_DIR)/tmp/opkg.lock
        @echo
        @echo Activating init scripts
+       @mkdir -p $(TARGET_DIR)/etc/rc.d
        @( \
                cd $(TARGET_DIR); \
-               for script in ./etc/init.d/*; do \
-                       grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \
-                       IPKG_INSTROOT=$(TARGET_DIR) $(which bash) ./etc/rc.common $$script enable; \
-               done || true; \
+               for script in ./usr/lib/opkg/info/*.postinst; do \
+                       IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) $$script; \
+               done || true \
        )
+       rm -f $(TARGET_DIR)/usr/lib/opkg/info/*.postinst
        $(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/opkg)
 
 build_image: FORCE
@@ -165,6 +168,13 @@ info:
        (unset PROFILE FILES PACKAGES MAKEFLAGS; $(MAKE) -s _call_info)
 
 image:
+ifneq ($(PROFILE),)
+  ifeq ($(filter $(PROFILE),$(PROFILE_NAMES)),)
+       @echo 'Profile "$(PROFILE)" does not exist!'
+       @echo 'Use "make info" to get a list of available profile names.'
+       @exit 1
+  endif
+endif
        (unset PROFILE FILES PACKAGES MAKEFLAGS; \
        $(MAKE) _call_image \
                $(if $(PROFILE),USER_PROFILE="$(PROFILE)") \