#!/bin/sh -e [ -n "$spt_dir" ] || spt_dir=/usr/share/spt3 . $spt_dir/init [ -z "$debug"] || set -x copy_type="${1:-image}" files_list="$0.$copy_type" [ -r "$files_list" ] || exit 0 Pwd=$(realpath "`pwd`") Home=$(realpath "$HOME") # copy files into FS image copy_into_fs() { local shar_flags chroot_install sharutils Verbose "Copying files to filesystem image (via shar)" [ -n "$setup_dir" ] || setup_dir="$profile_dir/setup.d" [ -n "$files_script" ] || files_script="$setup_dir/000files" [ -n "$pass_dir" ] || pass_dir="$tmp_dir/.pass" [ -n "$user_home" ] || user_home="/home/skel" [ -n "$verbose" ] && shar_flags="" || shar_flags="-q -Q" rm -rf "$pass_dir" "$files_script" sed "s|^~|$Home|g" < "$files_list" | while read src dst do case "$src" in ""|\#) continue ;; esac rsrc=$(dirname "$(realpath $src)") case "$rsrc" in $Pwd/root/*) dstold="$pass_dir/`relative $rsrc $Pwd/root/`" ;; $Home/*) dstold="$pass_dir$user_home/`relative $rsrc $Home/`" ;; $Pwd/*) dstold="$pass_dir$user_home" ;; /*) dstold="$pass_dir`dirname $src`" ;; esac case "$dst" in "") dst="$dstold" ;; /*) dst="$pass_dir$dst" ;; [^/]*) dst="$pass_dir$user_home$dst" ;; esac Verbose " ...$src" mkdir -p "$dst" cp -a "$src" "$dst" done # if sample home is created ( cd "$profile_dir/home" 2>/dev/null && Verbose " patching Home" && mkdir -p "$pass_dir$user_home" && cp -a . "$pass_dir$user_home" || : ) # if sample root is also here ( cd "$profile_dir/root" 2>/dev/null && Verbose " patching Root" && cp -a . "$pass_dir" || : ) # ok, make a shar ( echo "#!/bin/sh" echo "cd /" cd "$pass_dir" && shar $shar_flags . ) > "$files_script" } copy_into_iso() { local cp_flags [ -n "$verbose" ] && cp_flags="-avu" || cp_flags="-au" Verbose "Copying files to ISO image" sed "s|^~|$HOME|g" < "$files_list" | while read src dst do case "$src" in ""|\#) continue ;; esac case "$dst" in "") dst="$out_dir" ;; *) dst="$out_dir/$dst" ;; esac Verbose " ...$src" mkdir -p "$dst" cp $cp_flags "$src" "$dst" done } case "$copy_type" in image) copy_into_fs ;; iso) copy_into_iso ;; *) Fatal "Unknown copy type '$copy_type'" ;; esac