Fix creation of system users after sysupgrades
The ar71xx-tiny target sets CONFIG_CLEAN_IPKG, which would delete opkg control files required for user creation. Fix image generation and the user creation script. Fixes #1012
This commit is contained in:
parent
01512419f4
commit
0be280cde5
@ -0,0 +1,37 @@
|
|||||||
|
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||||
|
Date: Tue, 24 Jan 2017 17:00:43 +0100
|
||||||
|
Subject: include/rootfs.mk: keep Require-User lines with CONFIG_CLEAN_IPKG
|
||||||
|
|
||||||
|
Require-User is handled by /etc/uci-defaults/13_fix_group_user on first
|
||||||
|
boot, so we need to keep these when removing all opkg data with
|
||||||
|
CONFIG_CLEAN_IPKG.
|
||||||
|
|
||||||
|
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||||
|
|
||||||
|
diff --git a/include/rootfs.mk b/include/rootfs.mk
|
||||||
|
index 90d70a11f2e775c83b9907ec1f296c0e4d535ad6..c014b1d14ab0963687417809431abc0bf314830c 100644
|
||||||
|
--- a/include/rootfs.mk
|
||||||
|
+++ b/include/rootfs.mk
|
||||||
|
@@ -47,6 +47,14 @@ opkg = \
|
||||||
|
|
||||||
|
TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
|
||||||
|
|
||||||
|
+ifdef CONFIG_CLEAN_IPKG
|
||||||
|
+ define clean_ipkg
|
||||||
|
+ -find $(1)/usr/lib/opkg -type f -and -not -name '*.control' | $(XARGS) rm -rf
|
||||||
|
+ -sed -i -ne '/^Require-User: /p' $(1)/usr/lib/opkg/info/*.control
|
||||||
|
+ -find $(1)/usr/lib/opkg -empty | $(XARGS) rm -rf
|
||||||
|
+ endef
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
define prepare_rootfs
|
||||||
|
@if [ -d $(TOPDIR)/files ]; then \
|
||||||
|
$(call file_copy,$(TOPDIR)/files/.,$(1)); \
|
||||||
|
@@ -75,6 +83,6 @@ define prepare_rootfs
|
||||||
|
rm -f $(1)/usr/lib/opkg/lists/*
|
||||||
|
rm -f $(1)/usr/lib/opkg/info/*.postinst*
|
||||||
|
rm -f $(1)/usr/lib/opkg/info/*.prerm*
|
||||||
|
- $(if $(CONFIG_CLEAN_IPKG),rm -rf $(1)/usr/lib/opkg)
|
||||||
|
+ $(call clean_ipkg,$(1))
|
||||||
|
$(call mklibs,$(1))
|
||||||
|
endef
|
@ -0,0 +1,26 @@
|
|||||||
|
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||||
|
Date: Tue, 24 Jan 2017 18:55:13 +0100
|
||||||
|
Subject: base-files: fix user creation on sysupgrade with few opkg control files
|
||||||
|
|
||||||
|
If only a single opkg control file exists (which can happen with
|
||||||
|
CONFIG_CLEAN_IPKG), grep would not print the file name by default. Instead
|
||||||
|
of forcing it using -H, we just switch to -l (print only file names) and
|
||||||
|
get rid of the cut.
|
||||||
|
|
||||||
|
Add -s to suppress an error message when no control files exist.
|
||||||
|
|
||||||
|
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||||
|
|
||||||
|
diff --git a/package/base-files/files/etc/uci-defaults/13_fix_group_user b/package/base-files/files/etc/uci-defaults/13_fix_group_user
|
||||||
|
index deade5bbd1876cd3f009d4c0b18be258c3bf36d1..e6dae2419f65a830ebd039fbbfa0fd22d1a2d0a1 100644
|
||||||
|
--- a/package/base-files/files/etc/uci-defaults/13_fix_group_user
|
||||||
|
+++ b/package/base-files/files/etc/uci-defaults/13_fix_group_user
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
-for file in `grep Require-User /usr/lib/opkg/info/*.control | cut -d: -f1`; do
|
||||||
|
+for file in `grep -sl Require-User /usr/lib/opkg/info/*.control`; do
|
||||||
|
file="${file##*/}"
|
||||||
|
file="${file%.control}"
|
||||||
|
add_group_and_user "${file}"
|
Loading…
Reference in New Issue
Block a user