The cpio_init function is now only every called with the "discard" option.
But, moreover, what it does is create an initial mostly empty archive which
will just get overwritten by the final archive.
So, it's entirely unnecessary except for one subtlety. Our use of realpath
when generating the final output requires that a file already exist in the
output location. We can fix that by shuffling some things out of a
subshell, removing the need for realpath.
Signed-off-by: David Gibson
---
mbuto | 31 ++++---------------------------
1 file changed, 4 insertions(+), 27 deletions(-)
diff --git a/mbuto b/mbuto
index 550f76e..0c51e18 100755
--- a/mbuto
+++ b/mbuto
@@ -544,28 +544,6 @@ subopts_get() {
### CPIO #######################################################################
-# cpio_init() - Source existing CPIO archive, or create if needed
-# $1: Path to CPIO archive, might exist, might be discarded if existing
-cpio_init() {
- if [ -f "${OUT}" ] && [ "${1}" != "discard" ]; then
- info "Sourcing CPIO archive from ${OUT}"
-
- if ! "${GZIP}" -dfc "${OUT}" |
- "${CPIO}" --quiet -iD "${wd}"; then
- err "Invalid CPIO archive ${OUT}"
- fi
- else
- info "Creating new CPIO archive"
-
- if [ -z "${OUT}" ]; then
- OUT="$("${MKTEMP}")"
- notice "Creating image: ${OUT}"
- else
- OUT="$("${REALPATH}" "${OUT}")"
- fi
- fi
-}
-
# compress_select() - Try compressors and pick the fastest
# $1: Existing CPIO archive
compress_select() {
@@ -987,7 +965,6 @@ pkg_add() {
# build() - Build a new image, sourcing contents
build() {
- cpio_init discard
kmod_init
for __d in ${DIRS}; do
@@ -1083,11 +1060,11 @@ cmds() {
[ "${NOSTRIP}" != "y" ] && strip_all
- ( __out="$("${REALPATH}" "${OUT}")"
+ (
"${CD}" "${wd}"
- "${FIND}" . | "${CPIO}" --create -H newc --quiet > "${OUT}"
- cpio_compress "${__out}"
- )
+ "${FIND}" . | "${CPIO}" --create -H newc --quiet
+ ) > "${OUT}"
+ cpio_compress "${OUT}"
stats
--
2.44.0