opkg: ensure image provided feeds are available after sysupgrade

Split the opkg.conf into three files, to make it easier to support custom
feeds and configs:

* /etc/opkg.conf -> base opkg configuration
* /etc/opkg/distfeeds.conf -> default Openwrt package feeds
* /etc/opkg/customfeeds.conf -> custom package feeds

Of these three, only the base opkg.conf and the customfeeds.conf is marked
as to be kept, so that the distfeeds.conf from the image is always used.

To ease migration, a script is added that moves any feeds from /etc/opkg.conf
to /etc/opkg/customfeeds.conf on first boot.

Also ensure that any keys used for verification are also kept in upgrade.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 46491
This commit is contained in:
Jonas Gorski 2015-07-25 12:12:28 +00:00
parent ef78a63997
commit ec428bccad
3 changed files with 21 additions and 4 deletions

View file

@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/feeds.mk
PKG_NAME:=opkg PKG_NAME:=opkg
PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d
PKG_VERSION:=$(PKG_REV) PKG_VERSION:=$(PKG_REV)
PKG_RELEASE:=7 PKG_RELEASE:=8
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_VERSION:=$(PKG_REV)
@ -64,6 +64,8 @@ endef
define Package/opkg/conffiles define Package/opkg/conffiles
/etc/opkg.conf /etc/opkg.conf
/etc/opkg/keys/
/etc/opkg/customfeeds.conf
endef endef
@ -110,10 +112,13 @@ MAKE_FLAGS = \
define Package/opkg/Default/install define Package/opkg/Default/install
$(INSTALL_DIR) $(1)/usr/lib/opkg $(INSTALL_DIR) $(1)/usr/lib/opkg
$(INSTALL_DIR) $(1)/bin $(INSTALL_DIR) $(1)/bin
$(INSTALL_DIR) $(1)/etc $(INSTALL_DIR) $(1)/etc/opkg
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_DATA) ./files/customfeeds.conf $(1)/etc/opkg/customfeeds.conf
$(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf $(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf
$(call FeedSourcesAppend,$(1)/etc/opkg.conf) $(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf)
$(VERSION_SED) $(1)/etc/opkg.conf $(VERSION_SED) $(1)/etc/opkg/distfeeds.conf
$(INSTALL_BIN) ./files/20_migrate-feeds $(1)/etc/uci-defaults/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
endef endef

View file

@ -0,0 +1,9 @@
#!/bin/sh
[ -f /etc/opkg.conf ] && grep -q "src\/" /etc/opkg.conf || exit 0
echo -e "# Old feeds from previous image\n# Uncomment to reenable\n" >> /etc/opkg/customfeeds.conf
sed -n "s/.*\(src\/.*\)/# \1/p" /etc/opkg.conf >> /etc/opkg/customfeeds.conf
sed -i "/.*src\/.*/d" /etc/opkg.conf
exit 0

View file

@ -0,0 +1,3 @@
# add your custom package feeds here
#
# src/gz example_feed_name http://www.example.com/path/to/files