diff options
author | Dieter Plaetinck <dieter@plaetinck.be> | 2010-12-05 18:10:00 +0100 |
---|---|---|
committer | Dieter Plaetinck <dieter@plaetinck.be> | 2010-12-05 18:10:00 +0100 |
commit | 839ade1073032d841a3823e0a25d0ded19cc8b71 (patch) | |
tree | d97a513f1b53e8ac0e6faa6e724c344b86296748 /src/core/libs | |
parent | aebbe84b8e5c195e2c6238f6e1770f41b0612a9c (diff) |
make AIF track needed filesystem packages
filesystem packages are scheduled to go out of base, hence
AIF must track which ones are needed and which are not by keeping an eye
open during the filesystems creation (and rollback) steps.
In the interactive procedure, the appropriate packages will be
preselected, in the automatic procedure, you're supposed to configure
the needed packages yourself now. This is reflected in the examples.
Diffstat (limited to 'src/core/libs')
-rw-r--r-- | src/core/libs/lib-blockdevices-filesystems.sh | 12 | ||||
-rw-r--r-- | src/core/libs/lib-ui-interactive.sh | 10 |
2 files changed, 19 insertions, 3 deletions
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")" |