#!/bin/bash export LB_VERSION=$VERSION export LB_BASE="${LB_BASE:-/usr/share/live/build}" current_script="$(basename "$0"|sed 's/^lb_//')" Compat_arguments () { while [ "$#" -gt 0 ] do arg="$1" shift case "$arg" in -r|--repositories) arg="--archives";; --architecture) arg="--architectures";; --syslinux-theme) ;; # ignore other unsupported arguments --syslinux-*|--bootstrap-config|-e|--encryption|-l|--language) shift; continue;; --binary-indices|--packages|--symlinks|--sysvinit|--tasks|--virtual-root-size) shift; continue;; --packages-lists|--package-lists|-p) shift; continue;; esac echo -n "$arg$IFS" done } Compat_arguments_functions () { while [ "$#" -gt 0 ] do arg="$1" shift case "$arg" in --packages-lists|--package-lists|-p) Compat_packagelists $1; shift; continue;; esac done } Compat_config () { if [ -e config/chroot ]; then cat <> config/chroot # Compat (Live-build 2 -> 3) eof [ "$LB_ARCHIVES" ] && echo "LB_REPOSITORIES=\"$LB_ARCHIVES\"" >> config/chroot [ "$LB_PACKAGE_LISTS" ] && echo "LB_PACKAGE_LISTS=\"$LB_PACKAGE_LISTS\";LB_PACKAGES_LISTS=\"$LB_PACKAGE_LISTS\"" >> config/chroot fi [ -e config/bootstrap ] && [ "$LB_ARCHITECTURES" ] && cat <> config/bootstrap # Compat (Live-build 2 -> 3) LB_ARCHITECTURE="$LB_ARCHITECTURES" eof } Compat_dir () { dir2="$1" dir3="$2" ext2="$3" ext3="$4" [ ! -e "config/$dir2" ] && return 0 if [ -z "$ext2$ext3" ]; then rm -r "config/$dir3" ln -s "$(basename "$dir2")" "config/$dir3" else mkdir -p config/$dir3 for i in config/$dir2/* do [ ! -e "$i" ] && return target="$(basename "$i" $ext2)$ext3" rm -f config/$dir3/"$target" if [ -d "$i" ]; then ln -s "../../../$i" /config/$dir3/"$target" else cp -l "$i" config/$dir3/"$target" fi done fi touch config/$dir3.compat } Compat_packagelists() { LB_PACKAGE_LISTS="$@" LB_PACKAGES_LISTS="$@" mkdir -p config/package-lists ( echo '# AUTOGENERATED from "lb config -p" option - DO NOT CHANGE' IFS=" " for packagelist in $@ do echo "#include <$packagelist>" done ) > config/package-lists/compat.list.chroot } Compat_clean() { for i in config/*.compat do [ -e "$i" ] || return 0 target="$(basename "$i" .compat)" [ -e config/$target ] || continue rm -r config/$target rm "$i" done return 0 } case "$LB_VERSION" in 3*) case "$current_script" in config) if [ -z "$LB_COMPAT_CONFIG_AUTO" ]; then export LB_COMPAT_CONFIG_AUTO=1 auto/config "$@" exit $? fi Compat_arguments_functions "$@" OIFS="$IFS"; IFS="$(printf \\a)" set -- $(Compat_arguments "$@") IFS="$OIFS" [ -z "$LB_ARCHIVES" ] && LB_ARCHIVES="$LB_REPOSITORIES" LB_REPOSITORIES="$LB_ARCHIVES" [ -z "$LB_PACKAGE_LISTS" ] && LB_PACKAGE_LISTS="$LB_PACKAGES_LISTS" LB_PACKAGES_LISTS="$LB_PACKAGE_LISTS" [ -z "$LB_ARCHITECTURES" ] && LB_ARCHITECTURES="$LB_ARCHITECTURE" LB_ARCHITECTURE="$LB_ARCHITECTURES" Compat_config || : trap Compat_config EXIT ;; chroot_apt) Compat_dir chroot_local-packages packages.chroot ;; chroot_archives) mkdir -p config/archives touch config/archives.compat . config/bootstrap for REPO in $LB_ARCHIVES do for i in config/repositories/$REPO config/repositories/$REPO.gpg do [ ! -e "$i" ] && continue case "$i" in *.gpg) target="$(basename "$i" .gpg).key";; *) target="$(basename "$i" .list).list";; esac rm -f config/archives/"$target" cp -l "$i" config/archives/"$target" done done ;; chroot_preseed) Compat_dir chroot_local-preseed preseed .cfg .preseed ;; chroot_includes) Compat_dir chroot_local-includes includes.chroot ;; chroot_hooks) Compat_dir chroot_local-hooks hooks - .chroot ;; binary_hooks) Compat_dir binary_local-hooks hooks - .binary ;; build|clean) trap Compat_clean EXIT ;; esac [ -d config/lists ] && . auto/compat ;; esac