From 38508b41dc7f33a0b35e3633be3da1d2dae844dc Mon Sep 17 00:00:00 2001 From: Nathan Cutler Date: Wed, 1 Aug 2018 12:52:45 +0200 Subject: [PATCH] build/ops: refrain from installing/using lsb_release in install-deps.sh Unfortunately the mapping between release number and codename (which is only relevant for Debian and Ubuntu btw) is not available from /etc/os-release. In that one respect, lsb_release was "better". However, when I weigh the advantages of obtaining that mapping from an external tool, with the (substantial) risk that the external dependency might cause trouble on one or more supported distros (to say nothing of the non- or semi-/pseudo-supported ones), against the work involved in maintaining a hard-coded mapping (negligible), the needle on my scale immediately swings toward eliminating the dependency. Also, I see this commit as part of the longer-term effort to completely expunge lsb_release from our codebase. See git log --grep lsb_release. For another example of an external distro-detection tool (albeit one that was included in Python 2) gone awry, see http://tracker.ceph.com/issues/18163. Signed-off-by: Nathan Cutler --- install-deps.sh | 54 ++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/install-deps.sh b/install-deps.sh index bc7e2681ac093..fafcd0176772d 100755 --- a/install-deps.sh +++ b/install-deps.sh @@ -45,22 +45,21 @@ function munge_ceph_spec_in { fi } -function ensure_decent_gcc_on_deb { +function ensure_decent_gcc_on_ubuntu { # point gcc to the one offered by g++-7 if the used one is not # new enough local old=$(gcc -dumpversion) local new=$1 + local codename=$2 if dpkg --compare-versions $old ge 7.0; then return fi - local dist=$(lsb_release --short --codename) - if [ ! -f /usr/bin/g++-${new} ]; then $SUDO tee /etc/apt/sources.list.d/ubuntu-toolchain-r.list < $control - backports="-t $(lsb_release -sc)-backports" + backports="-t $codename-backports" ;; esac @@ -233,30 +235,28 @@ else builddepcmd="dnf -y builddep --allowerasing" fi echo "Using $yumdnf to install dependencies" - if [ $(lsb_release -si) = CentOS -a $(uname -m) = aarch64 ]; then + if [ "$ID" = "centos" -a $(uname -m) = aarch64 ]; then $SUDO yum-config-manager --disable centos-sclo-sclo || true $SUDO yum-config-manager --disable centos-sclo-rh || true $SUDO yum remove centos-release-scl || true fi - $SUDO $yumdnf install -y redhat-lsb-core - case $(lsb_release -si) in - Fedora) + case $ID in + fedora) if test $yumdnf = yum; then $SUDO $yumdnf install -y yum-utils fi ;; - CentOS|RedHatEnterpriseServer|VirtuozzoLinux) + centos|rhel|ol|virtuozzo) $SUDO yum install -y yum-utils - MAJOR_VERSION=$(lsb_release -rs | cut -f1 -d.) - if test $(lsb_release -si) = RedHatEnterpriseServer ; then - $SUDO yum-config-manager --enable rhel-$MAJOR_VERSION-server-optional-rpms + if test $ID = rhel ; then + $SUDO yum-config-manager --enable rhel-$VERSION_ID-server-optional-rpms fi - $SUDO yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/$MAJOR_VERSION/x86_64/ + $SUDO yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/$VERSION_ID/x86_64/ $SUDO yum install --nogpgcheck -y epel-release - $SUDO rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$MAJOR_VERSION + $SUDO rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$VERSION_ID $SUDO rm -f /etc/yum.repos.d/dl.fedoraproject.org* - if test $(lsb_release -si) = CentOS -a $MAJOR_VERSION = 7 ; then + if test $ID = centos -a $VERSION_ID = 7 ; then $SUDO yum-config-manager --enable cr case $(uname -m) in x86_64) @@ -270,10 +270,10 @@ else dts_ver=7 ;; esac - elif test $(lsb_release -si) = RedHatEnterpriseServer -a $MAJOR_VERSION = 7 ; then + elif test $ID = rhel -a $MAJOR_VERSION = 7 ; then $SUDO yum-config-manager --enable rhel-server-rhscl-7-rpms dts_ver=7 - elif test $(lsb_release -si) = VirtuozzoLinux -a $MAJOR_VERSION = 7 ; then + elif test $ID = virtuozzo -a $MAJOR_VERSION = 7 ; then $SUDO yum-config-manager --enable cr fi ;; @@ -289,7 +289,7 @@ else opensuse*|suse|sles) echo "Using zypper to install dependencies" zypp_install="zypper --gpg-auto-import-keys --non-interactive install --no-recommends" - $SUDO $zypp_install lsb-release systemd-rpm-macros + $SUDO $zypp_install systemd-rpm-macros munge_ceph_spec_in $DIR/ceph.spec $SUDO $zypp_install $(rpmspec -q --buildrequires $DIR/ceph.spec) || exit 1 ;; -- 2.39.5