diff --git a/modules/profile.eselect b/modules/profile.eselect index f33f8d1..18aeccf 100644 --- a/modules/profile.eselect +++ b/modules/profile.eselect @@ -87,12 +87,18 @@ set_symlink() { repo=${target%%::*}; target=${target#*::} repopath=${target%%::*}; target=${target#*::} status=${target#*::}; status=${status%%::*} target=${target%%::*} if [[ ${status} == exp && -z ${force} ]]; then - write_error_msg "Profile ${target} is experimental" - die -q "Refusing to select ${status} profile without --force option" + # are any non-experimental targets available? + local t + for t in "${targets[@]#*::*::*::}"; do + [[ ${t%%::*} == exp ]] && continue + write_error_msg "Profile ${target} is experimental" + die -q "Refusing to select exp profile without --force option" + done + write_warning_msg "Profile ${target} is experimental" fi elif [[ -n ${target} ]]; then # if the profile was explicitly specified (rather than a number) # double check and make sure it's valid arch=$(arch)