From 26a9b8002fde7bb8d8dd46742332a9fee92caabf Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 7 Mar 2019 08:23:09 +0100 Subject: [PATCH] Cleanup rootfs package - move the skeleton setup stuff out of the rootfs package into a sperate package called "basefiles" - remove manual unpacking from rootfs, we already have all the dependencies installed in the toolchain sysroot. Signed-off-by: David Oberhollenzer --- layer/pygos-cli/ROOTFS | 1 + pkg/basefiles/basefiles.desc | 1 + pkg/basefiles/basefiles.files | 24 +++++++ pkg/basefiles/build | 27 ++++++++ pkg/{rootfs => basefiles}/etc/group | 0 pkg/{rootfs => basefiles}/etc/hostname | 0 pkg/{rootfs => basefiles}/etc/hosts | 0 pkg/{rootfs => basefiles}/etc/passwd | 0 pkg/{rootfs => basefiles}/etc/shadow | 0 pkg/{rootfs => basefiles}/lib/charset.alias | 0 pkg/rootfs/build | 69 ++++++++------------- pkg/rootfs/etc/mtab | 1 - pkg/rootfs/rootfs_files.txt | 29 --------- pkg/toolchain/build | 2 +- 14 files changed, 80 insertions(+), 74 deletions(-) create mode 100644 pkg/basefiles/basefiles.desc create mode 100644 pkg/basefiles/basefiles.files create mode 100644 pkg/basefiles/build rename pkg/{rootfs => basefiles}/etc/group (100%) rename pkg/{rootfs => basefiles}/etc/hostname (100%) rename pkg/{rootfs => basefiles}/etc/hosts (100%) rename pkg/{rootfs => basefiles}/etc/passwd (100%) rename pkg/{rootfs => basefiles}/etc/shadow (100%) rename pkg/{rootfs => basefiles}/lib/charset.alias (100%) delete mode 120000 pkg/rootfs/etc/mtab delete mode 100644 pkg/rootfs/rootfs_files.txt diff --git a/layer/pygos-cli/ROOTFS b/layer/pygos-cli/ROOTFS index 2a80dad..2b3c86e 100644 --- a/layer/pygos-cli/ROOTFS +++ b/layer/pygos-cli/ROOTFS @@ -1,3 +1,4 @@ +basefiles bash bash-completion coreutils diff --git a/pkg/basefiles/basefiles.desc b/pkg/basefiles/basefiles.desc new file mode 100644 index 0000000..708a3a0 --- /dev/null +++ b/pkg/basefiles/basefiles.desc @@ -0,0 +1 @@ +name basefiles diff --git a/pkg/basefiles/basefiles.files b/pkg/basefiles/basefiles.files new file mode 100644 index 0000000..25e4953 --- /dev/null +++ b/pkg/basefiles/basefiles.files @@ -0,0 +1,24 @@ +dir bin 0755 0 0 +dir lib 0755 0 0 +dir dev 0755 0 0 +dir etc 0755 0 0 +dir sys 0755 0 0 +dir proc 0755 0 0 +dir tmp 0755 0 0 +dir run 0755 0 0 +dir boot 0755 0 0 +dir usr 0755 0 0 +dir mnt 0755 0 0 +dir share 0755 0 0 +dir var 0755 0 0 +dir etc/profile.d 0755 0 0 +dir etc/skel 0755 0 0 +dir var/lib 0755 0 0 +dir lib/libexec 0755 0 0 +slink etc/mtab 0777 0 0 /proc/self/mounts +file etc/group 0644 0 0 +file etc/hostname 0644 0 0 +file etc/hosts 0644 0 0 +file etc/passwd 0644 0 0 +file etc/shadow 0644 0 0 +file lib/charset.alias 0644 0 0 diff --git a/pkg/basefiles/build b/pkg/basefiles/build new file mode 100644 index 0000000..2b36e7d --- /dev/null +++ b/pkg/basefiles/build @@ -0,0 +1,27 @@ +build() { + return +} + +deploy() { + cp $SCRIPTDIR/pkg/$PKGNAME/*.{files,desc} "$PKGDEPLOYDIR" + cp -r "$SCRIPTDIR/pkg/$PKGNAME/etc" "$PKGDEPLOYDIR" + cp -r "$SCRIPTDIR/pkg/$PKGNAME/lib" "$PKGDEPLOYDIR" + + # version info + local fname=$(echo "${OS_NAME}-release" | tr '[:upper:]' '[:lower:]') + echo "$OS_RELEASE" > "$PKGDEPLOYDIR/etc/$fname" + echo "file etc/$fname 0644 0 0" >> "$PKGDEPLOYDIR/${PKGNAME}.files" + + # local config files + fname=$(file_path_override "resolv.conf") + + if [ ! -z "$fname" ]; then + cp "$fname" "$PKGDEPLOYDIR/etc/resolv.conf" + echo "file etc/resolv.conf 0644 0 0" \ + >> "$PKGDEPLOYDIR/${PKGNAME}.files" + fi +} + +check_update() { + return +} diff --git a/pkg/rootfs/etc/group b/pkg/basefiles/etc/group similarity index 100% rename from pkg/rootfs/etc/group rename to pkg/basefiles/etc/group diff --git a/pkg/rootfs/etc/hostname b/pkg/basefiles/etc/hostname similarity index 100% rename from pkg/rootfs/etc/hostname rename to pkg/basefiles/etc/hostname diff --git a/pkg/rootfs/etc/hosts b/pkg/basefiles/etc/hosts similarity index 100% rename from pkg/rootfs/etc/hosts rename to pkg/basefiles/etc/hosts diff --git a/pkg/rootfs/etc/passwd b/pkg/basefiles/etc/passwd similarity index 100% rename from pkg/rootfs/etc/passwd rename to pkg/basefiles/etc/passwd diff --git a/pkg/rootfs/etc/shadow b/pkg/basefiles/etc/shadow similarity index 100% rename from pkg/rootfs/etc/shadow rename to pkg/basefiles/etc/shadow diff --git a/pkg/rootfs/lib/charset.alias b/pkg/basefiles/lib/charset.alias similarity index 100% rename from pkg/rootfs/lib/charset.alias rename to pkg/basefiles/lib/charset.alias diff --git a/pkg/rootfs/build b/pkg/rootfs/build index ed0517d..c8c7714 100755 --- a/pkg/rootfs/build +++ b/pkg/rootfs/build @@ -1,62 +1,45 @@ DEPENDS=$(cat_file_merge "ROOTFS" | sort -u) build() { - # setup skeleton - mkdir -pv ${PKGBUILDDIR}/{bin,dev,sys,proc,tmp,run,boot,usr,mnt,share} - mkdir -pv ${PKGBUILDDIR}/cfg/{preserve,overlay} - mkdir -pv ${PKGBUILDDIR}/etc/{profile.d,skel} - mkdir -pv ${PKGBUILDDIR}/var/lib - mkdir -pv ${PKGBUILDDIR}/lib/libexec - - cp -r "$SCRIPTDIR/pkg/$PKGNAME/etc" "$PKGBUILDDIR" - cp -r "$SCRIPTDIR/pkg/$PKGNAME/lib" "$PKGBUILDDIR" - cp "$SCRIPTDIR/pkg/$PKGNAME/rootfs_files.txt" "$PKGDEPLOYDIR/pseudo" - - # version info - local fname=$(echo "${OS_NAME}-release" | tr '[:upper:]' '[:lower:]') - - echo $OS_RELEASE > $PKGBUILDDIR/etc/$fname - - echo "etc/$fname m 644 0 0" >> "$PKGDEPLOYDIR/pseudo" - - # local config files - fname=$(file_path_override "resolv.conf") - - if [ ! -z "$fname" ]; then - cp "$fname" "./etc/resolv.conf" - echo "etc/resolv.conf m 644 0 0" >> "$PKGDEPLOYDIR/pseudo" - fi - - # gather rootfs dependencies - cat_file_merge "ROOTFS" | sort -u | \ - xargs pkg install -om -R "$REPODIR" -r "$PKGBUILDDIR" - - cat_file_merge "ROOTFS" | sort -u | \ - xargs pkg install -R "$REPODIR" \ - -r "$PKGBUILDDIR" -F sqfs -l >> "$PKGDEPLOYDIR/pseudo" + # generate pseudo file listing for squashfs + pkg install -l -R "$REPODIR" -r "$TCDIR/$TARGET" \ + -F sqfs $DEPENDS | sort -u > "$PKGDEPLOYDIR/pseudo" # setup root home directory - cp -r "$PKGBUILDDIR/etc/skel" "$PKGBUILDDIR/usr/root" + cp -r "$TCDIR/$TARGET/etc/skel" "$TCDIR/$TARGET/usr/root" echo "usr/root m 700 0 0" >> "$PKGDEPLOYDIR/pseudo" - find "./usr/root" -exec stat {} --printf="%n m %a 0 0\\n" \; | \ - sed 's#^./##g' | tail -n +2 >> "$PKGDEPLOYDIR/pseudo" + find "$TCDIR/$TARGET/usr/root" \ + -exec stat {} --printf="%n m %a 0 0\\n" \; | \ + sed 's#^$TCDIR/$TARGET/##g' | tail -n +2 >> "$PKGDEPLOYDIR/pseudo" # move configuration to preserve directory - mv "$PKGBUILDDIR/etc" "$PKGBUILDDIR/cfg/preserve/etc" - mv "$PKGBUILDDIR/usr" "$PKGBUILDDIR/cfg/preserve/usr" - mv "$PKGBUILDDIR/var/lib" "$PKGBUILDDIR/cfg/preserve/var_lib" - rm -rf "$PKGBUILDDIR/var" + mkdir -pv "$TCDIR/$TARGET/cfg/preserve" + mkdir -pv "$TCDIR/$TARGET/cfg/overlay" - mkdir -p ${PKGBUILDDIR}/{etc,var,usr} + echo <<_EOF >> "$PKGDEPLOYDIR/pseudo" +cfg m 755 0 0 +cfg/preserve m 755 0 0 +cfg/preserve/etc m 755 0 0 +cfg/preserve/usr m 755 0 0 +cfg/preserve/var_lib m 755 0 0 +cfg/overlay m 755 0 0 +_EOF + + mv "$TCDIR/$TARGET/etc" "$TCDIR/$TARGET/cfg/preserve/etc" + mv "$TCDIR/$TARGET/usr" "$TCDIR/$TARGET/cfg/preserve/usr" + mv "$TCDIR/$TARGET/var/lib" "$TCDIR/$TARGET/cfg/preserve/var_lib" + rm -rf "$TCDIR/$TARGET/var" + + mkdir -p $TCDIR/$TARGET/{etc,var,usr} sed -i 's#etc/#cfg/preserve/etc/#g' "$PKGDEPLOYDIR/pseudo" sed -i 's#var/lib/#cfg/preserve/var_lib/#g' "$PKGDEPLOYDIR/pseudo" sed -i 's#usr/#cfg/preserve/usr/#g' "$PKGDEPLOYDIR/pseudo" # don't add stuff for the boot partition to the squashfs image - mv ${PKGBUILDDIR}/boot/* "$PKGDEPLOYDIR" + mv $TCDIR/$TARGET/boot/* "$PKGDEPLOYDIR" grep -v "^boot/" "$PKGDEPLOYDIR/pseudo" > "$PKGDEPLOYDIR/pseudo.temp" mv "$PKGDEPLOYDIR/pseudo.temp" "$PKGDEPLOYDIR/pseudo" @@ -64,7 +47,7 @@ build() { } deploy() { - mksquashfs "$PKGBUILDDIR" "$PKGDEPLOYDIR/rootfs.img" -comp xz \ + mksquashfs "$TCDIR/$TARGET" "$PKGDEPLOYDIR/rootfs.img" -comp xz \ -no-progress -no-xattrs -pf "$PKGDEPLOYDIR/pseudo" rm "$PKGDEPLOYDIR/pseudo" diff --git a/pkg/rootfs/etc/mtab b/pkg/rootfs/etc/mtab deleted file mode 120000 index 27e43cc..0000000 --- a/pkg/rootfs/etc/mtab +++ /dev/null @@ -1 +0,0 @@ -/proc/self/mounts \ No newline at end of file diff --git a/pkg/rootfs/rootfs_files.txt b/pkg/rootfs/rootfs_files.txt deleted file mode 100644 index 8b87024..0000000 --- a/pkg/rootfs/rootfs_files.txt +++ /dev/null @@ -1,29 +0,0 @@ -bin m 555 0 0 -dev m 755 0 0 -sys m 755 0 0 -proc m 755 0 0 -tmp m 1777 0 0 -run m 755 0 0 -boot m 755 0 0 -usr m 755 0 0 -mnt m 755 0 0 -share m 555 0 0 -cfg m 755 0 0 -cfg/preserve m 755 0 0 -cfg/preserve/etc m 755 0 0 -cfg/preserve/usr m 755 0 0 -cfg/preserve/var_lib m 755 0 0 -cfg/overlay m 755 0 0 -etc m 755 0 0 -etc/profile.d m 755 0 0 -etc/skel m 755 0 0 -etc/group m 644 0 0 -etc/hosts m 644 0 0 -etc/passwd m 644 0 0 -etc/hostname m 644 0 0 -etc/shadow m 600 0 0 -etc/mtab m 777 0 0 -var m 755 0 0 -lib m 555 0 0 -lib/libexec m 555 0 0 -lib/charset.alias m 444 0 0 diff --git a/pkg/toolchain/build b/pkg/toolchain/build index 733a26e..48dc5dc 100755 --- a/pkg/toolchain/build +++ b/pkg/toolchain/build @@ -1,4 +1,4 @@ -DEPENDS="tc-binutils crt-dev tc-pkg-config tc-file tc-pkgtool" +DEPENDS="tc-binutils crt-dev tc-pkg-config tc-file tc-pkgtool basefiles" build() { return