#!/bin/sh # populates a directory with host directories. # modify and use as needed. [ "$1" ] || echo "usage: mkbootstrap " if [ ! -d "$1" ]; then echo "$1 is not a directory!" >&2 exit 1 fi dest="$1" case "$dest" in /usr/*|/lib/*|/libexec/*|/etc/*|/bin/*|/share/*) echo "destination path cannot be a subpath of the source paths." >&2 exit 1 ;; esac up() { printf "$(echo "checking $1 .........." | head -c 20)" if [ -d "/$1" ] && [ ! -d "$dest/$1" ]; then printf " merging $1\n" # is this a symlink to a directory? [ -h "/$1" ] \ && cp -a "/$1" "$dest/" \ || mkdir "$dest/$1" && lmr "/$1" "$dest/$1" else printf " skipping $1\n" fi } up lib up libexec up etc up bin up share mkdir -p "$dest/boot" # force bootstrap directory into lix os-style directory structure. lmr -f /usr $dest \ && echo "merged /usr into $dest" \ || echo "did not lmr /usr into $dest" lmr -f $dest/local $dest \ && echo "merged $dest/local into $dest" \ || echo "did not lmr $dest/local into $dest" rm -fr $dest/local \ && echo "removed $dest/local" \ || echo "did not remove $dest/local" lmr -f $dest/sbin $dest/bin \ && echo "merged $dest/sbin into $dest/bin" \ || echo "did not lmr $dest/sbin into $dest/bin" rm -fr $dest/sbin \ && echo "removed $dest/sbin" \ || echo "did not remove $dest/sbin" ln -sf . $dest/usr \ && echo "ln'ed $dest/usr to ." \ || echo "did not ln $dest/usr to ." ln -sf ./bin $dest/sbin \ && echo "ln'ed $dest/sbin to ./bin" \ || echo "did not ln $dest/sbin to ./bin"