IB: use online repositories
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 27 May 2015 11:22:20 +0000 (11:22 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 27 May 2015 11:22:20 +0000 (11:22 +0000)
Change the IB packaging to only embed libc, kernel and kmod packages by default
and generate repositories.conf to refer to the remote package repositories.

Introduce a new config option CONFIG_IB_STANDALONE which restores the old
behaviour of building self contained IB archives.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 45772

target/imagebuilder/Config.in
target/imagebuilder/Makefile
target/imagebuilder/files/Makefile
target/imagebuilder/files/repositories.conf

index 6756c14c16230bc9635ae707cf77326d25ac90d0..9d48e037e89ba00690d2c726b3f0468c236fba0f 100644 (file)
@@ -7,4 +7,10 @@ config IB
          with precompiled packages, kernel image and image building tools.
          You can use it to generate custom images without compiling anything
 
-
+config IB_STANDALONE
+       bool "Include package repositories"
+       depends on IB
+       help
+         By default, the ImageBuilder will use the online package repositories
+         to fetch additional .ipk archives. Enabling this option will cause
+         the ImageBuilder to embed all built packages locally instead.
index 1f97cb861331d6f3b1375579143e9e19f60b3f6d..218def7e1df10f4f5e247f804a3337b1fac2ab11 100644 (file)
@@ -9,6 +9,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 include $(INCLUDE_DIR)/host.mk
 include $(INCLUDE_DIR)/version.mk
+include $(INCLUDE_DIR)/feeds.mk
 
 override MAKEFLAGS=
 
@@ -33,8 +34,38 @@ $(BIN_DIR)/$(IB_NAME).tar.bz2: clean
                $(TMP_DIR)/.targetinfo \
                $(TMP_DIR)/.packageinfo \
                $(PKG_BUILD_DIR)/
+
+ifeq ($(CONFIG_IB_STANDALONE),)
+       echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
+  ifeq ($(CONFIG_PER_FEED_REPO),)
+       echo "src/gz %n %U" >> $(PKG_BUILD_DIR)/repositories.conf
+  else
+       for d in base $(FEEDS_ENABLED); do \
+               echo "src/gz %n_$$d %U/$$d" >> $(PKG_BUILD_DIR)/repositories.conf; \
+       done
+    ifneq ($(CONFIG_PER_FEED_REPO_ADD_DISABLED),)
+       for d in $(FEEDS_DISABLED); do \
+               echo "$(if $(CONFIG_PER_FEED_REPO_ADD_COMMENTED),# )src/gz %n_$$d %U/$$d" >> $(PKG_BUILD_DIR)/repositories.conf; \
+       done
+    endif
+  endif
+endif
+
+       echo '## This is the local package repository, do not remove!' >> $(PKG_BUILD_DIR)/repositories.conf
+       echo 'src imagebuilder file:packages'                          >> $(PKG_BUILD_DIR)/repositories.conf
+
        $(VERSION_SED) $(PKG_BUILD_DIR)/repositories.conf
+
+ifeq ($(CONFIG_IB_STANDALONE),)
+       (cd $(PACKAGE_DIR); $(FIND) -type f -name 'libc_*.ipk' -or -name 'kernel_*.ipk' -or -name 'kmod-*.ipk') | \
+               while read path; do \
+                       mkdir -p "$(PKG_BUILD_DIR)/packages/$${path%/*}"; \
+                       cp "$(PACKAGE_DIR)/$$path" "$(PKG_BUILD_DIR)/packages/$$path"; \
+               done
+else
        $(CP) $(PACKAGE_DIR) $(PKG_BUILD_DIR)/packages
+endif
+
        $(CP) $(TOPDIR)/target/linux $(PKG_BUILD_DIR)/target/
        if [ -d $(TOPDIR)/staging_dir/host/lib/grub ]; then \
                $(CP) $(TOPDIR)/staging_dir/host/lib/grub/ $(PKG_BUILD_DIR)/staging_dir/host/lib; \
index f3bfec1e31def0a9fb629257720e7173734228f5..0f0fe42b595d8addcbc4df031f0e8f2a28f738e1 100644 (file)
@@ -107,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),)
@@ -123,7 +123,7 @@ 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
index 708855eb8c3475929e3fb1dc3b63169cea477d51..8f1f27fe509ec22d5e095c8f06bacf5e3bd5d643 100644 (file)
@@ -2,5 +2,3 @@
 # src/gz %n %U
 # src custom file:///usr/src/openwrt/bin/%T/packages
 
-## This is the local package repository, do not remove!
-src imagebuilder file:packages