Skip to content

Commit ca88486

Browse files
WPEFramework: changes to enable user:group related permission during the build (#470)
* Add default users to rootfs * Compile fixes + ignore symbolic links while doing permissions recursively * Thunder: user:group add users which need protected content also to ocdm group * Adding custom config fragments * Revert commit bca065d * wpeframework: add option to set groups for device access * wpeframework: comment out platform audio group * wpeframework: configurable video group * wpeframework: Simplify generic thunder group * WPEFramework: Add rule to set proper permission for device node while enabling thunder group * WPE: User/Group: add group setting for video device node based on platform video device group and use ocdm-user as the defautl ocdm-group if group alone not enbaled case * Thunder: Set Data path user:group permissions from build sequence * Amazon: install library to data path and create link to /usr/lib to set proper permissions in DataPath Cobalt: set Cobalt Data path, where the data files need to install Thunder, OCDM, WebKitBrowser, Netflix, Cobalt and Amazon: Set data path permission during the build * WebKitBrowser: Set Data path permission user:group read access alone Co-authored-by: Bram Oosterhuis <[email protected]>
1 parent f9148fd commit ca88486

File tree

17 files changed

+210
-35
lines changed

17 files changed

+210
-35
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_FEATURE_ADDUSER_TO_GROUP=y
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Disable module compression
2+
CONFIG_MODULE_COMPRESS_NONE=y
3+
CONFIG_MODULE_COMPRESS_GZIP=n
4+
CONFIG_MODULE_COMPRESS_XZ=n
5+
CONFIG_MODULE_COMPRESS_ZSTD=n
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
UCLIBC_HAS_BACKTRACE=y

package/amazon-ignition/amazon-ignition.mk

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
################################################################################
66

7-
AMAZON_IGNITION_VERSION = 92c39937e6ddc69bc67bbb1fdb715515c0a7c6e5
7+
AMAZON_IGNITION_VERSION = 4fcef097a49f2316d8a92fbf609f4d396b2a29a
88
AMAZON_IGNITION_SITE_METHOD = git
99
AMAZON_IGNITION_SITE = [email protected]:Metrological/amazon.git
1010
AMAZON_IGNITION_DEPENDENCIES = jpeg libpng wpeframework amazon-backend libcurl
@@ -131,32 +131,31 @@ define AMAZON_IGNITION_INSTALL_GENERIC
131131
endef
132132

133133
define AMAZON_IGNITION_INSTALL_IGNITION
134-
@$(call MESSAGE,"Installing ignition to: $(call qstrip,$(1))")
135-
@$(INSTALL) -v -d -m 0755 $(call qstrip,$(1))/$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)
134+
@$(call MESSAGE,"Installing ignition to: $(call qstrip,$(TARGET_DIR))")
135+
@$(INSTALL) -v -d -m 0755 $(call qstrip,$(TARGET_DIR))/$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)
136136

137-
$(INSTALL) -d $(1)/usr/lib
138-
$(INSTALL) -m 755 ${AMAZON_IGNITION_BINARY_INSTALL_DIR}/lib/*.so $(1)/usr/lib
137+
rsync -av --exclude lib/ ${AMAZON_IGNITION_BINARY_INSTALL_DIR}/ $(call qstrip,$(TARGET_DIR))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)
139138

140-
rsync -av --exclude lib/ ${AMAZON_IGNITION_BINARY_INSTALL_DIR}/ $(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)
141-
$(INSTALL) -d $(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib
139+
$(INSTALL) -d $(call qstrip,$(TARGET_DIR))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib
140+
$(INSTALL) -m 755 ${AMAZON_IGNITION_BINARY_INSTALL_DIR}/lib/*.so $(call qstrip,$(TARGET_DIR))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib
142141

143-
ln -sf "../../../lib/libignition.so" "$(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libignition.so"
144-
ln -sf "../../../lib/libprime-video-device-layer.so" "$(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libprime-video-device-layer.so"
145-
ln -sf "../../../lib/libamazon_playready.so" "$(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libamazon_playready.so"
146-
ln -sf "../../../lib/libamazon_player_mediapipeline.so" "$(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libamazon_player_mediapipeline.so"
147-
ln -sf "../../../lib/libamazon_player.so" "$(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libamazon_player.so"
148-
149-
ln -sf "../../../lib/libamazon-backend.so" "$(call qstrip,$(1))$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libamazon-backend.so"
142+
$(INSTALL) -d $(TARGET_DIR)/usr/lib
143+
ln -sf "$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libignition.so" "$(TARGET_DIR)/usr/lib/libignition.so"
144+
ln -sf "$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libamazon_player.so" "$(TARGET_DIR)/usr/lib/libamazon_player.so"
145+
ln -sf "$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libamazon_playready.so" "$(TARGET_DIR)/usr/lib/libamazon_playready.so"
146+
ln -sf "$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libamazon_player_mediapipeline.so" "$(TARGET_DIR)/usr/lib/libamazon_player_mediapipeline.so"
147+
ln -sf "$(BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH)/lib/libprime-video-device-layer.so" "$(TARGET_DIR)/usr/lib/libprime-video-device-layer.so"
150148
endef
151149

152150
define AMAZON_IGNITION_INSTALL_IGNITION_DEV
153-
@$(call MESSAGE,"Installing ignition headers to: ${STAGING_DIR}/usr/include/ignition")
154-
@$(call AMAZON_IGNITION_INSTALL_IGNITION, ${STAGING_DIR})
151+
@$(call MESSAGE,"Installing ignition headers to: ${STAGING_DIR}/usr/include/ignition")
155152

156153
@$(INSTALL) -v -d -m 0755 ${STAGING_DIR}/usr/include/ignition
157154

158155
@$(call MESSAGE,"Installing ignition header [ ${AMAZON_IGNITION_DEVICE_LAYER_DIR}/../interface/ ] to: ${STAGING_DIR}/usr/include/ignition")
159156
cd "${AMAZON_IGNITION_DEVICE_LAYER_DIR}/../interface/include" && find -name "*.h" -type f -exec cp --parents {} ${STAGING_DIR}/usr/include/ignition/ \;
157+
$(INSTALL) -d ${STAGING_DIR}/usr/lib
158+
$(INSTALL) -m 755 ${AMAZON_IGNITION_BINARY_INSTALL_DIR}/lib/*.so ${STAGING_DIR}/usr/lib
160159
endef
161160

162161
ifeq ($(BR2_PACKAGE_AMAZON_IGNITION_BUILD_TESTS),y)
@@ -205,8 +204,7 @@ else #BR2_PACKAGE_AMAZON_IGNITION_BUILD_TESTS
205204
endef
206205

207206
define AMAZON_IGNITION_INSTALL_TARGET_CMDS
208-
@$(call AMAZON_IGNITION_INSTALL_IGNITION_DEV)
209-
@$(call AMAZON_IGNITION_INSTALL_IGNITION, ${TARGET_DIR})
207+
@$(call AMAZON_IGNITION_INSTALL_IGNITION)
210208
endef
211209

212210
endif # BR2_PACKAGE_AMAZON_IGNITION_BUILD_TESTS

package/cobalt/cobalt.mk

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,16 @@ else
5656
export COBALT_EXECUTABLE_TYPE = executable
5757
endif
5858

59+
export COBALT_DATA_PATH = "$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_DATA_PATH)")/Cobalt"
60+
COBALT_DATA_INSTALL_PATH = $(TARGET_DIR)/$(COBALT_DATA_PATH)
61+
5962
define COBALT_BUILD_CMDS
6063
$(@D)/src/cobalt/build/gyp_cobalt -C $(COBALT_BUILD_TYPE) $(COBALT_PLATFORM)
6164
$(HOST_DIR)/usr/bin/ninja -C $(@D)/src/out/$(COBALT_PLATFORM)_$(COBALT_BUILD_TYPE) cobalt_deploy
6265
endef
6366

6467
define COBALT_INSTALL_TARGET_CMDS
65-
cp -a $(@D)/src/out/$(COBALT_PLATFORM)_$(COBALT_BUILD_TYPE)/content $(TARGET_DIR)/usr/share
68+
cp -a $(@D)/src/out/$(COBALT_PLATFORM)_$(COBALT_BUILD_TYPE)/content/data/* $(COBALT_DATA_INSTALL_PATH)
6669
endef
6770

6871

package/makedevs/makedevs.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -440,15 +440,19 @@ void bb_show_usage(void)
440440
int bb_recursive(const char *fpath, const struct stat *sb,
441441
int tflag, struct FTW *ftwbuf){
442442

443-
if (chown(fpath, recursive_uid, recursive_gid) == -1) {
443+
errno = 0;
444+
if (lchown(fpath, recursive_uid, recursive_gid) == -1) {
444445
bb_perror_msg("chown failed for %s", fpath);
445446
return -1;
446447
}
447-
if (recursive_mode != -1) {
448-
if (chmod(fpath, recursive_mode) < 0) {
449-
bb_perror_msg("chmod failed for %s", fpath);
450-
return -1;
451-
}
448+
449+
/* chmod() is optional, also skip if dangling symlink */
450+
if (recursive_mode == -1 || ((tflag == FTW_SL) && (access(fpath, F_OK) != 0)))
451+
return 0;
452+
453+
if (chmod(fpath, recursive_mode) < 0) {
454+
bb_perror_msg("chmod failed for ---> %s", fpath);
455+
return -1;
452456
}
453457

454458
return 0;
@@ -628,7 +632,7 @@ int main(int argc, char **argv)
628632
if (mknod(full_name_inc, mode, rdev) < 0) {
629633
bb_perror_msg("line %d: can't create node %s", linenum, full_name_inc);
630634
ret = EXIT_FAILURE;
631-
} else if (chown(full_name_inc, uid, gid) < 0) {
635+
} else if (lchown(full_name_inc, uid, gid) < 0) {
632636
bb_perror_msg("line %d: can't chown %s", linenum, full_name_inc);
633637
ret = EXIT_FAILURE;
634638
} else if (chmod(full_name_inc, mode) < 0) {

package/wpe/wpeframework-amazon/Config.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ config BR2_PACKAGE_WPEFRAMEWORK_AMAZON_USER
3232

3333
config BR2_PACKAGE_WPEFRAMEWORK_AMAZON_GROUP
3434
string "group"
35+
default BR2_PACKAGE_WPEFRAMEWORK_AMAZON_USER
3536
help
3637
The group that amazon prime user should use (root is not allowed)
3738

package/wpe/wpeframework-amazon/wpeframework-amazon.mk

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,21 @@ endif
2929

3030
ifneq ($(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_INSTALL_PATH_OVERRIDE),"")
3131
WPEFRAMEWORK_AMAZON_CONF_OPTS += -DPLUGIN_AMAZON_PRIME_INSTALL_PATH=${BR2_PACKAGE_WPEFRAMEWORK_AMAZON_INSTALL_PATH_OVERRIDE}
32+
WPEFRAMEWORK_AMAZON_DATA_PATH = ${BR2_PACKAGE_WPEFRAMEWORK_AMAZON_INSTALL_PATH_OVERRIDE}
3233
else
3334
WPEFRAMEWORK_AMAZON_CONF_OPTS += -DPLUGIN_AMAZON_PRIME_INSTALL_PATH=${BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH}
35+
WPEFRAMEWORK_AMAZON_DATA_PATH = ${BR2_PACKAGE_AMAZON_IGNITION_IG_INSTALL_PATH}
3436
endif
3537

3638
ifneq ($(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_USER),"")
3739
WPEFRAMEWORK_AMAZON_CONF_OPTS += -DPLUGIN_AMAZON_PRIME_NAME=$(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_USER)
40+
ifeq ($(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_GROUP),"")
41+
WPEFRAMEWORK_AMAZON_USER_GROUP=amazon
42+
else
43+
WPEFRAMEWORK_AMAZON_USER_GROUP=$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_GROUP)")
44+
endif
45+
WPEFRAMEWORK_AMAZON_USER=$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_USER)") -1 $(WPEFRAMEWORK_AMAZON_USER_GROUP) -1 * - - $(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_PLATFORM_VIDEO_DEVICE_GROUP)"),$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_GROUP)"),$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_CDMI_GROUP)") amazon
46+
WPEFRAMEWORK_AMAZON_PERMISSION=$(subst ",,$(WPEFRAMEWORK_AMAZON_DATA_PATH)") r 0550 root $(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_GROUP)") - - - - -
3847
endif
3948

4049
ifneq ($(BR2_PACKAGE_WPEFRAMEWORK_AMAZON_GROUP),"")
@@ -57,4 +66,12 @@ ifeq ($(BR2_PACKAGE_WPEFRAMEWORK_DEBUG),y)
5766
WPEFRAMEWORK_AMAZON_CONF_OPTS += -DCMAKE_BUILD_TYPE=Debug
5867
endif
5968

69+
define WPEFRAMEWORK_AMAZON_USERS
70+
${WPEFRAMEWORK_AMAZON_USER}
71+
endef
72+
73+
define WPEFRAMEWORK_AMAZON_PERMISSIONS
74+
${WPEFRAMEWORK_AMAZON_PERMISSION}
75+
endef
76+
6077
$(eval $(cmake-package))

package/wpe/wpeframework-netflix/Config.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,18 @@ config BR2_PACKAGE_WPEFRAMEWORK_PLUGIN_NETFLIX_DEVICE_KEYS
169169
string "device keys"
170170
help
171171
"Define the location where the hareware bound ESN and encryption keys can be found. Leave empty to disable"
172+
173+
config BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_USER
174+
string "user"
175+
help
176+
The user that amazon prime should use (root is not allowed)
177+
178+
config BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_GROUP
179+
string "group"
180+
default BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_USER
181+
help
182+
The group that amazon prime user should use (root is not allowed)
183+
172184
endif
173185

174186
comment "netflix is dependent on the netflix package compiled as library"

package/wpe/wpeframework-netflix/wpeframework-netflix.mk

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,21 @@ WPEFRAMEWORK_NETFLIX_CONF_OPTS += -DPLUGIN_ENABLE_AUDIO_DOWNMIX=true
158158
endif
159159
endif
160160

161+
ifneq ($(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_USER),"")
162+
WPEFRAMEWORK_NETFLIX_CONF_OPTS += -DPLUGIN_NETFLIX_USER=$(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_USER)
163+
ifeq ($(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_GROUP),"")
164+
WPEFRAMEWORK_NETFLIX_USER_GROUP=netflix
165+
else
166+
WPEFRAMEWORK_NETFLIX_USER_GROUP=$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_GROUP)")
167+
endif
168+
WPEFRAMEWORK_NETFLIX_USER=$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_USER)") -1 $(WPEFRAMEWORK_NETFLIX_USER_GROUP) -1 * - - $(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_PLATFORM_VIDEO_DEVICE_GROUP)"),$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_GROUP)"),$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_CDMI_GROUP)") netflix
169+
WPEFRAMEWORK_NETFLIX_PERMISSION=$(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_DATA_PATH)")/Netflix r 0550 root $(subst ",,$(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_GROUP)") - - - - -
170+
endif
171+
172+
ifneq ($(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_GROUP),"")
173+
WPEFRAMEWORK_NETFLIX_CONF_OPTS += -DPLUGIN_NETFLIX_GROUP=$(BR2_PACKAGE_WPEFRAMEWORK_NETFLIX_GROUP)
174+
endif
175+
161176
ifeq ($(BR2_PACKAGE_WPEFRAMEWORK_CREATE_IPKG_TARGETS),y)
162177

163178
WPEFRAMEWORK_NETFLIX_CONF_OPTS += -DWPEFRAMEWORK_CREATE_IPKG_TARGETS=ON
@@ -175,5 +190,13 @@ endef # WPEFRAMEWORK_NETFLIX_INSTALL_TARGET_CMDS
175190

176191
endif # ($(BR2_PACKAGE_WPEFRAMEWORK_CREATE_IPKG_TARGETS),y)
177192

193+
define WPEFRAMEWORK_NETFLIX_USERS
194+
${WPEFRAMEWORK_NETFLIX_USER}
195+
endef
196+
197+
define WPEFRAMEWORK_NETFLIX_PERMISSIONS
198+
${WPEFRAMEWORK_NETFLIX_PERMISSION}
199+
endef
200+
178201
$(eval $(cmake-package))
179202

0 commit comments

Comments
 (0)