mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-29 06:06:32 +00:00
Use fakeroot and makedevs to fake mksquashfs into building properly setup file
permissions and device nodes into the target rootfs without needing to be root.
This commit is contained in:
parent
e83529ad36
commit
afcdf8a01a
@ -40,8 +40,6 @@ $(FAKEROOT_DIR1)/faked: $(FAKEROOT_DIR1)/.configured
|
|||||||
|
|
||||||
$(STAGING_DIR)/usr/bin/fakeroot: $(FAKEROOT_DIR1)/faked
|
$(STAGING_DIR)/usr/bin/fakeroot: $(FAKEROOT_DIR1)/faked
|
||||||
$(MAKE) DESTDIR=$(STAGING_DIR) -C $(FAKEROOT_DIR1) install
|
$(MAKE) DESTDIR=$(STAGING_DIR) -C $(FAKEROOT_DIR1) install
|
||||||
#-mv $(TARGET_DIR)/usr/bin/$(ARCH)-linux-faked $(TARGET_DIR)/usr/bin/faked
|
|
||||||
#-mv $(TARGET_DIR)/usr/bin/$(ARCH)-linux-fakeroot $(TARGET_DIR)/usr/bin/fakeroot
|
|
||||||
|
|
||||||
host-fakeroot: uclibc $(STAGING_DIR)/usr/bin/fakeroot
|
host-fakeroot: uclibc $(STAGING_DIR)/usr/bin/fakeroot
|
||||||
|
|
||||||
|
@ -15,7 +15,11 @@ $(MAKEDEVS_DIR)/makedevs: $(MAKEDEVS_DIR)
|
|||||||
gcc -Wall -O2 makedevs.c -o makedevs
|
gcc -Wall -O2 makedevs.c -o makedevs
|
||||||
touch -c $(MAKEDEVS_DIR)/makedevs
|
touch -c $(MAKEDEVS_DIR)/makedevs
|
||||||
|
|
||||||
makedevs: $(MAKEDEVS_DIR)/makedevs
|
$(STAGING_DIR)/bin/makedevs: $(MAKEDEVS_DIR)/makedevs
|
||||||
|
$(INSTALL) -m 755 $(MAKEDEVS_DIR)/makedevs $(STAGING_DIR)/bin/makedevs
|
||||||
|
touch -c $(STAGING_DIR)/bin/makedevs
|
||||||
|
|
||||||
|
makedevs: $(STAGING_DIR)/bin/makedevs
|
||||||
|
|
||||||
makedevs-source:
|
makedevs-source:
|
||||||
|
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
This is a stupid little patch adding an option to change all uid/gid to
|
|
||||||
root/root in the generated filesystem. We really need to teach mksquashfs
|
|
||||||
about device tables though...
|
|
||||||
|
|
||||||
--- squashfs1.3r3/squashfs-tools/mksquashfs.c-dist 2004-03-29 20:35:37.000000000 -0600
|
|
||||||
+++ squashfs1.3r3/squashfs-tools/mksquashfs.c 2004-03-29 22:28:51.000000000 -0600
|
|
||||||
@@ -136,6 +136,8 @@
|
|
||||||
stotal_bytes, stotal_inode_bytes, stotal_directory_bytes, sinode_count, sfile_count, ssym_count, sdev_count, sdir_count, sdup_files;
|
|
||||||
int restore = 0;
|
|
||||||
|
|
||||||
+unsigned int root_owned = 0;
|
|
||||||
+
|
|
||||||
/*flag whether destination file is a block device */
|
|
||||||
int block_device = 0;
|
|
||||||
|
|
||||||
@@ -421,6 +423,11 @@
|
|
||||||
return SQUASHFS_INVALID;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (root_owned) {
|
|
||||||
+ buf.st_uid = 0;
|
|
||||||
+ buf.st_gid = 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
base->mode = SQUASHFS_MODE(buf.st_mode);
|
|
||||||
base->uid = get_uid(&file_type, (squashfs_uid) buf.st_uid);
|
|
||||||
base->inode_type = file_type;
|
|
||||||
@@ -1268,6 +1275,8 @@
|
|
||||||
root_name = argv[i];
|
|
||||||
} else if(strcmp(argv[i], "-version") == 0) {
|
|
||||||
VERSION();
|
|
||||||
+ } else if (strcmp(argv[i], "-root-owned") == 0) {
|
|
||||||
+ root_owned = TRUE;
|
|
||||||
} else {
|
|
||||||
ERROR("%s: invalid option\n\n", argv[0]);
|
|
||||||
printOptions:
|
|
@ -34,13 +34,25 @@ squashfs-dirclean:
|
|||||||
#
|
#
|
||||||
#############################################################
|
#############################################################
|
||||||
|
|
||||||
squashfsroot: squashfs
|
squashfsroot: squashfs host-fakeroot makedevs
|
||||||
#-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true;
|
rm -f $(STAGING_DIR)/fakeroot.env
|
||||||
|
touch $(STAGING_DIR)/fakeroot.env
|
||||||
|
# Use fakeroot to pretend all target binaries are owned by root
|
||||||
|
$(STAGING_DIR)/usr/bin/fakeroot -i $(STAGING_DIR)/fakeroot.env \
|
||||||
|
-s $(STAGING_DIR)/fakeroot.env -- \
|
||||||
|
find $(TARGET_DIR) | xargs chown -R root:root
|
||||||
|
# Use fakeroot to pretend to create all needed device nodes
|
||||||
|
$(STAGING_DIR)/usr/bin/fakeroot -i $(STAGING_DIR)/fakeroot.env \
|
||||||
|
-s $(STAGING_DIR)/fakeroot.env -- \
|
||||||
|
$(STAGING_DIR)/bin/makedevs -r $(TARGET_DIR) \
|
||||||
|
target/default/device_table.txt
|
||||||
-@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
|
-@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
|
||||||
@rm -rf $(TARGET_DIR)/usr/man
|
@rm -rf $(TARGET_DIR)/usr/man
|
||||||
@rm -rf $(TARGET_DIR)/usr/info
|
@rm -rf $(TARGET_DIR)/usr/info
|
||||||
#$(SQUASHFS_DIR)/squashfs-tools/mksquashfs -q -D target/default/device_table.txt $(TARGET_DIR) $(IMAGE)
|
# Use fakeroot to fake out mksquashfs per the previous fakery
|
||||||
$(SQUASHFS_DIR)/squashfs-tools/mksquashfs $(TARGET_DIR) $(IMAGE).squashfs -noappend -root-owned
|
$(STAGING_DIR)/usr/bin/fakeroot -i $(STAGING_DIR)/fakeroot.env -- \
|
||||||
|
$(SQUASHFS_DIR)/squashfs-tools/mksquashfs $(TARGET_DIR) \
|
||||||
|
$(IMAGE).squashfs -noappend
|
||||||
|
|
||||||
squashfsroot-source: squashfs-source
|
squashfsroot-source: squashfs-source
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user