IB: use online repositories

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
lede-17.01
Jo-Philipp Wich 2015-05-27 11:22:20 +00:00
parent 4d96170c32
commit 6c21bcaa65
4 changed files with 40 additions and 5 deletions

View 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.

View 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; \

View 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

View 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