On ubuntu, if we run into an error installing the package, it can be
because of transient upstream errors with repo sync state. Although
retrying the update won't fix it all of the time, it's low cost enough
to be worth a try before we totally give up.
Related-bug: 1286818
Change-Id: I522ac0d0bd8f82dc98f386c89f66c2b743efa525
... | ... |
@@ -881,29 +881,43 @@ function get_packages { |
881 | 881 |
|
882 | 882 |
# Distro-agnostic package installer |
883 | 883 |
# install_package package [package ...] |
884 |
-function install_package { |
|
885 |
- local xtrace=$(set +o | grep xtrace) |
|
886 |
- set +o xtrace |
|
887 |
- if is_ubuntu; then |
|
888 |
- # if there are transient errors pulling the updates, that's fine. It may |
|
889 |
- # be secondary repositories that we don't really care about. |
|
890 |
- [[ "$NO_UPDATE_REPOS" = "True" ]] || apt_get update || /bin/true |
|
891 |
- NO_UPDATE_REPOS=True |
|
884 |
+function update_package_repo { |
|
885 |
+ if [[ "NO_UPDATE_REPOS" = "True" ]]; then |
|
886 |
+ return 0 |
|
887 |
+ fi |
|
892 | 888 |
|
889 |
+ if is_ubuntu; then |
|
890 |
+ local xtrace=$(set +o | grep xtrace) |
|
891 |
+ set +o xtrace |
|
892 |
+ if [[ "$REPOS_UPDATED" != "True" || "$RETRY_UPDATE" = "True" ]]; then |
|
893 |
+ # if there are transient errors pulling the updates, that's fine. |
|
894 |
+ # It may be secondary repositories that we don't really care about. |
|
895 |
+ apt_get update || /bin/true |
|
896 |
+ REPOS_UPDATED=True |
|
897 |
+ fi |
|
893 | 898 |
$xtrace |
899 |
+ fi |
|
900 |
+} |
|
901 |
+ |
|
902 |
+function real_install_package { |
|
903 |
+ if is_ubuntu; then |
|
894 | 904 |
apt_get install "$@" |
895 | 905 |
elif is_fedora; then |
896 |
- $xtrace |
|
897 | 906 |
yum_install "$@" |
898 | 907 |
elif is_suse; then |
899 |
- $xtrace |
|
900 | 908 |
zypper_install "$@" |
901 | 909 |
else |
902 |
- $xtrace |
|
903 | 910 |
exit_distro_not_supported "installing packages" |
904 | 911 |
fi |
905 | 912 |
} |
906 | 913 |
|
914 |
+# Distro-agnostic package installer |
|
915 |
+# install_package package [package ...] |
|
916 |
+function install_package { |
|
917 |
+ update_package_repo |
|
918 |
+ real_install_package $@ || RETRY_UPDATE=True update_package_repo && real_install_package $@ |
|
919 |
+} |
|
920 |
+ |
|
907 | 921 |
# Distro-agnostic function to tell if a package is installed |
908 | 922 |
# is_package_installed package [package ...] |
909 | 923 |
function is_package_installed { |