diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/aif.sh | 1 | ||||
-rw-r--r-- | src/core/libs/lib-blockdevices-filesystems.sh | 12 | ||||
-rw-r--r-- | src/core/libs/lib-ui-interactive.sh | 10 |
3 files changed, 20 insertions, 3 deletions
@@ -39,6 +39,7 @@ echo "Welcome to $TITLE" mount -o remount,rw / &>/dev/null cleanup_runtime +needed_pkgs_fs= # will hold extra needed packages for blockdevices/filesystems, populated when the Fs'es are created ### Set configuration values ### # note : you're free to use or ignore these in your procedure. probably you want to use these variables to override defaults in your configure worker diff --git a/src/core/libs/lib-blockdevices-filesystems.sh b/src/core/libs/lib-blockdevices-filesystems.sh index 3ebdc75..897c97e 100644 --- a/src/core/libs/lib-blockdevices-filesystems.sh +++ b/src/core/libs/lib-blockdevices-filesystems.sh @@ -478,6 +478,17 @@ process_filesystems () then debug 'FS' "$fs_id ->Already done" else + needs_pkg= + [ $fs_type = 'lvm-pv' ] && needs_pkg=lvm2 + [ $fs_type = 'xfs' ] && needs_pkg=xfsprogs + [ $fs_type = 'jfs' ] && needs_pkg=jfsutils + [ $fs_type = 'reiserfs' ] && needs_pkg=reiserfsprogs + [[ $fs_type =~ ext.* ]] && needs_pkg=e2fsprogs + [ $fs_type = 'vfat' ] && needs_pkg=dosfstools + [ $fs_type = 'dm_crypt' ] && needs_pkg=cryptsetup + + [ -n "$needs_pkg" ] && check_is_in $needs_pkg "${needed_pkgs_fs[@]}" || needed_pkgs_fs+=($needs_pkg) + # We can't always do -b on the lvm VG. because the devicefile sometimes doesn't exist for a VG. vgdisplay to the rescue! if [ "$part_type" = lvm-vg ] && vgdisplay $part | grep -q 'VG Name' # $part is a lvm VG and it exists. note that vgdisplay exists 0 when the requested vg doesn't exist. then @@ -687,6 +698,7 @@ rollback_filesystems () [ -n "$warnings" ] && inform "Rollback failed" disks 1 && show_warning "Rollback problems" "Some problems occurred while rolling back: $warnings.\n Thisk needs to be fixed before retrying disk/filesystem creation or restarting the installer" && return 1 inform "Rollback succeeded" disks 1 done_filesystems= + needed_pkgs_fs= BLOCK_ROLLBACK_USELESS=1 return 0 } diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh index 8d1acc8..4351e48 100644 --- a/src/core/libs/lib-ui-interactive.sh +++ b/src/core/libs/lib-ui-interactive.sh @@ -750,7 +750,8 @@ interactive_select_packages() { repos=`list_pacman_repos target` notify "Package selection is split into two stages. First you will select package groups that contain packages you may be interested in. Then you will be presented with a full list of packages for each group, allowing you to fine-tune.\n\n -Note that right now the packages (and groups) selection is limited to the repos available at this time ($repos). Once you have your Arch system up and running, you have access to more repositories and packages." +Note that right now the packages (and groups) selection is limited to the repos available at this time ($repos). Once you have your Arch system up and running, you have access to more repositories and packages.\n\n +If any previous configuration you've done until now (like fancy filesystems) require extra packages, we've already preselected them for your convenience" # show group listing for group selection, base is ON by default, all others are OFF local _grouplist="base ^ ON" @@ -763,14 +764,17 @@ Note that right now the packages (and groups) selection is limited to the repos # assemble a list of packages with groups, marking pre-selected ones # <package> <group> <selected> - local _pkgtmp="$(list_packages repo core | awk '{print $2}')" # all packages in core repository + local _pkgtmp="$(list_packages repo core | awk '{print $2}')" # all packages in core repository. TODO: we should use $repos here local _pkglist='' which_group "$_pkgtmp" + # assemble some packages which we'll definitely select by default because we figured out we'll need them: + needed_pkgs=("${needed_pkgs_fs[@]}") while read pkgname pkggroup; do # check if this package is in a selected group # slightly ugly but sorting later requires newlines in the variable - if [ "${_grouplist/"\"$pkggroup\""/XXXX}" != "${_grouplist}" ]; then + if [ "${_grouplist/"\"$pkggroup\""/XXXX}" != "${_grouplist}" ] || check_is_in $pkgname "${needed_pkgs[@]}" + then _pkglist="$(echo -e "${_pkglist}\n${pkgname} ${pkggroup} ON")" else _pkglist="$(echo -e "${_pkglist}\n${pkgname} ${pkggroup} OFF")" |