]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
install-deps.sh: update g++ symlink also 19680/head
authorKefu Chai <kchai@redhat.com>
Fri, 22 Dec 2017 14:42:16 +0000 (22:42 +0800)
committerKefu Chai <kchai@redhat.com>
Mon, 25 Dec 2017 17:13:36 +0000 (01:13 +0800)
we need to update g++ symlink also, if it points to the wrong version

http://tracker.ceph.com/issues/22220
Signed-off-by: Kefu Chai <kchai@redhat.com>
Conflicts: the libboost issue does not affect master. as master builds
     boost from source. so, it's not cherry-picked from master.
(cherry picked from commit 248a157635b46d3cf23e37ae263c62b0dc4e0e59)

install-deps.sh

index 59ad87a0abdb07b6006afb984a77ba3166980921..7e408ae146750a6c21afbf33c09c465f2f0180e0 100755 (executable)
@@ -26,21 +26,27 @@ function munge_ceph_spec_in {
 
 function ensure_decent_gcc_on_deb {
     # point gcc to the one offered by distro if the used one is different
-    local old=$(readlink -e /usr/bin/gcc | cut -d'-' -f2)
+    local old=$(gcc -dumpversion)
     local new=$1
-    if [ ! -f /usr/bin/gcc-${old} ]; then
-        $SUDO rm -f /usr/bin/gcc-${old}
-        $SUDO ln -sf /usr/bin/gcc-${new} /usr/bin/gcc
-        return
-    elif dpkg --compare-versions $old eq $new; then
+    if dpkg --compare-versions $old eq $new; then
            return
     fi
 
+    case $old in
+        4*)
+            old=4.8;;
+        5*)
+            old=5;;
+        7*)
+            old=7;;
+    esac
+
     cat <<EOF
 /usr/bin/gcc now points to gcc-$old, which is not the version shipped with the
 distro: gcc-$new. Reverting...
 EOF
 
+    $SUDO update-alternatives --remove-all gcc || true
     $SUDO update-alternatives \
         --install /usr/bin/gcc gcc /usr/bin/gcc-${new} 20 \
         --slave   /usr/bin/g++ g++ /usr/bin/g++-${new}