- add a helper script to generate opkg.conf, attempt to detect package architecture from packages/ - fix package defaults when no package override is given, IB previously aggregated the defautls of all profiles - introduce a repositories.conf, allows using remote opkg repositories in imagebuilder

SVN-Revision: 22978
This commit is contained in:
Jo-Philipp Wich 2010-09-08 00:36:35 +00:00
parent 91118a9500
commit 699876fa6b
4 changed files with 56 additions and 10 deletions

View file

@ -22,15 +22,18 @@ all: compile
$(BIN_DIR)/$(IB_NAME).tar.bz2: clean $(BIN_DIR)/$(IB_NAME).tar.bz2: clean
rm -rf $(PKG_BUILD_DIR) rm -rf $(PKG_BUILD_DIR)
mkdir -p $(IB_KDIR) $(PKG_BUILD_DIR)/staging_dir/host $(PKG_BUILD_DIR)/target mkdir -p $(IB_KDIR) $(PKG_BUILD_DIR)/staging_dir/host \
$(PKG_BUILD_DIR)/target $(PKG_BUILD_DIR)/scripts
-cp $(TOPDIR)/.config $(PKG_BUILD_DIR)/.config -cp $(TOPDIR)/.config $(PKG_BUILD_DIR)/.config
$(CP) \ $(CP) \
$(INCLUDE_DIR) $(SCRIPT_DIR) \ $(INCLUDE_DIR) $(SCRIPT_DIR) \
$(TOPDIR)/rules.mk \ $(TOPDIR)/rules.mk \
./files/Makefile \ ./files/Makefile \
./files/repositories.conf \
$(TMP_DIR)/.targetinfo \ $(TMP_DIR)/.targetinfo \
$(TMP_DIR)/.packageinfo \ $(TMP_DIR)/.packageinfo \
$(PKG_BUILD_DIR)/ $(PKG_BUILD_DIR)/
$(CP) ./files/opkg-generate-config.sh $(PKG_BUILD_DIR)/scripts/
$(CP) $(PACKAGE_DIR) $(PKG_BUILD_DIR)/packages $(CP) $(PACKAGE_DIR) $(PKG_BUILD_DIR)/packages
$(CP) $(STAGING_DIR_HOST)/bin $(PKG_BUILD_DIR)/staging_dir/host/ $(CP) $(STAGING_DIR_HOST)/bin $(PKG_BUILD_DIR)/staging_dir/host/
$(CP) $(TOPDIR)/target/linux $(PKG_BUILD_DIR)/target/ $(CP) $(TOPDIR)/target/linux $(PKG_BUILD_DIR)/target/

View file

@ -86,19 +86,12 @@ _call_info: FORCE
$(TOPDIR)/tmp/opkg.conf: FORCE $(TOPDIR)/tmp/opkg.conf: FORCE
@mkdir -p $(TOPDIR)/tmp @mkdir -p $(TOPDIR)/tmp
@mkdir -p $(TARGET_DIR)/tmp @mkdir -p $(TARGET_DIR)/tmp
@echo 'dest root /' > $@ @$(TOPDIR)/scripts/opkg-generate-config.sh $(TARGET_DIR)
@echo 'src packages file:$(PACKAGE_DIR)' >> $@
@echo 'arch all 100' >> $@
ifneq ($(CONFIG_TARGET_adm5120),y)
@echo 'arch $(BOARD) 200' >> $@
else
@echo 'arch $(BOARD)_$(ARCH) 200' >> $@
endif
@echo 'option offline_root $(TARGET_DIR)' >> $@
BUILD_PACKAGES:=$(sort $(DEFAULT_PACKAGES) $(USER_PACKAGES) $($(USER_PROFILE)_PACKAGES) kernel) BUILD_PACKAGES:=$(sort $(DEFAULT_PACKAGES) $(USER_PACKAGES) $($(USER_PROFILE)_PACKAGES) kernel)
# "-pkgname" in the package list means remove "pkgname" from the package list # "-pkgname" in the package list means remove "pkgname" from the package list
BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES)) BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES))
PACKAGES:=
_call_image: _call_image:
echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))' echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))'

View file

@ -0,0 +1,45 @@
#!/bin/sh
TOPDIR="$(pwd)"
TARGETDIR="${1}"
[ -f "$TOPDIR/scripts/${0##*/}" ] || {
echo "Please execute within the toplevel directory" >&2
exit 1
}
# Try to find package architecture from packages directory
PKGARCH=
for pkg in $TOPDIR/packages/*.ipk; do
if [ -f "$pkg" ]; then
PKGARCH="${pkg##*_}"
PKGARCH="${PKGARCH%.ipk}"
[ "$PKGARCH" = all ] || break
fi
done
# Try to find package architecture from the target directory
[ -n "$PKGARCH" ] || {
PKGARCH="${TARGETDIR##*/root-}"
[ "$PKGARCH" != "$TARGETDIR" ] || {
echo "Cannot determine package architecture" >&2
exit 1
}
}
rm -f $TOPDIR/tmp/opkg.conf
[ -f $TOPDIR/repositories.conf ] && \
$TOPDIR/staging_dir/host/bin/sed \
-n -e "s/\$A/$PKGARCH/g" -e "/^[[:space:]*]src/p" \
$TOPDIR/repositories.conf > $TOPDIR/tmp/opkg.conf
cat <<EOT >> $TOPDIR/tmp/opkg.conf
dest root /
arch all 100
arch $PKGARCH 200
option offline_root $TARGETDIR
src imagebuilder file:$TOPDIR/packages
EOT
exit 0

View file

@ -0,0 +1,5 @@
## Place your custom repositories here, they must match the architecture and version.
## The special placeholder "$A" can be used to specify the current package architecture.
# src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/$A/packages
# src custom file:///usr/src/openwrt/bin/$A/packages