summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xopenslx8
-rwxr-xr-xserver/export_target10
-rw-r--r--server/includes/packing.inc14
3 files changed, 24 insertions, 8 deletions
diff --git a/openslx b/openslx
index e5026bab..47fc4070 100755
--- a/openslx
+++ b/openslx
@@ -207,6 +207,12 @@ read_params() {
shift
continue
;;
+ -i)
+ [ "$#" -lt "1" ] && perror "Missing argument to -i"
+ IGNORE_TARGET="$1"
+ shift
+ continue
+ ;;
*)
pwarning "Unknown flag to target: $PARAM"
print_usage
@@ -231,7 +237,7 @@ run() {
. "${SERVER_EXPORT_TARGET}" || perror "Cannot source ${SERVER_EXPORT_TARGET}"
[[ "$SERVER_SYNC" == 1 ]] && sync_remote
[[ "$SERVER_CLEAN" == 1 ]] && clean_target "$TARGET"
- [[ "$SERVER_EXPORT" == 1 ]] && export_target "$TARGET" "$SERVER_EXPORT_TYPE"
+ [[ "$SERVER_EXPORT" == 1 ]] && export_target "$TARGET" "$SERVER_EXPORT_TYPE" "$IGNORE_TARGET"
[[ "$SERVER_CONFIG" == 1 ]] && generate_config "$SERVER_CONFIG_TYPE"
pinfo "Exiting normally"
fi
diff --git a/server/export_target b/server/export_target
index 22b8b062..d930b8ee 100755
--- a/server/export_target
+++ b/server/export_target
@@ -140,20 +140,24 @@ export_target() {
initial_checks
copy_kernel
- TARGET=$1
+ local TARGET="$1"
[ -z "$TARGET" ] && perror "No target passed to export_target()"
[ -d "${SERVER_BUILD_DIR}/${TARGET}" ] || perror "Given target directory does not exist: ${SERVER_BUILD_DIR}/${TARGET}"
+ if [ -n "$3" ]; then
+ local IGNORE="${SERVER_BUILD_DIR}/$3"
+ [ -d "${IGNORE}" ] || perror "Given 'ignore target' does not exist: ${IGNORE}"
+ fi
case "$2" in
cpio)
local TOOL_STR="${TOOL_STR} generate_initramfs:"
pinfo "Writing 'initramfs-${TARGET}' to '${SERVER_BOOT_DIR}/'"
- generate_initramfs "${SERVER_BUILD_DIR}/${TARGET}/" "." "${SERVER_BOOT_DIR}/initramfs-${TARGET}"
+ generate_initramfs "${SERVER_BUILD_DIR}/${TARGET}/" "." "${SERVER_BOOT_DIR}/initramfs-${TARGET}" "$IGNORE"
;;
sqfs)
local TOOL_STR="${TOOL_STR} generate_squashfs:"
pinfo "Creating '${TARGET}.sqfs' in '${SERVER_BOOT_DIR}/'"
- generate_squashfs "${SERVER_BUILD_DIR}/${TARGET}/" "${SERVER_BOOT_DIR}/${TARGET}.sqfs"
+ generate_squashfs "${SERVER_BUILD_DIR}/${TARGET}/" "${SERVER_BOOT_DIR}/${TARGET}.sqfs" "$IGNORE"
;;
*)
perror "Invalid export format: $2"
diff --git a/server/includes/packing.inc b/server/includes/packing.inc
index 85d28de4..b94d06e8 100644
--- a/server/includes/packing.inc
+++ b/server/includes/packing.inc
@@ -7,7 +7,7 @@
# generate_initramfs "./server/boot/stage32_sqfs" "./mnt/openslx.sqfs" "./server/boot/initramfs2"
# generate_initramfs "./server/build/stage31" "." "./server/boot/initramfs"
generate_initramfs() {
- [ $# -ne 3 ] && perror "Sanity check failed: generate_initramfs needs exactly two params, but $# were given."
+ [ $# -lt 3 ] && perror "Sanity check failed: generate_initramfs needs at least three params, but $# were given."
cd "$1" || perror "Cannot cd to '$1'"
rm -f -- "$3"
@@ -23,14 +23,20 @@ generate_initramfs() {
# generates squashfs of directory
# usage:
-# generate_squashfs <source_dir> <destination_dir/filename>
+# generate_squashfs <source_dir> <destination_dir/filename> [ignore_root]
generate_squashfs() {
- [ $# -ne 2 ] && perror "Sanity check failed: generate_squashfs needs exactly two params, but $# were given."
+ [ $# -lt 2 ] && perror "Sanity check failed: generate_squashfs needs at least two params, but $# were given."
[ -d "$1" ] || perror "$1 is not a directory."
+ local IGNORE="${2}.ignore"
+ truncate -s 0 "$IGNORE"
+ if [ -n "$3" ]; then
+ find "$3" -type f -o -type l | cut -c "$(( ${#3} + 2 ))-" > "$IGNORE"
+ fi
rm -f -- "$2"
- mksquashfs "$1" "$2" -comp xz -b 1M -no-recovery >&6 \
+ mksquashfs "$1" "$2" -ef "$IGNORE" -comp xz -b 1M -no-recovery >&6 \
|| perror "mksquashfs failed ($?)."
pinfo "Created squashfs of $1 at $2"
pinfo "Size: $(du -bsh "$2" | awk 'END {print $1}')"
+ rm -f -- "$IGNORE"
}