Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp728775ybm; Wed, 22 May 2019 10:30:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqxtvwE6zxDTe3lqligshBQTHwsqlZZP3rwoh2cFocFnFuUFC7tYbSCaphwkB972hVXc3lym X-Received: by 2002:a62:51c2:: with SMTP id f185mr36549675pfb.16.1558546217558; Wed, 22 May 2019 10:30:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558546217; cv=none; d=google.com; s=arc-20160816; b=FwYGDWEX82usrR607gyYExJdY+zlQm81y4cYMrfajcdFsYBK383Hh7s0qqdllqB6/q 5z74/qa1LYP9aye05ShAp80np82ObNNiUenR+LnE8DFjrJ+xV4eVr7iW2Et/+Nr6E5Pl moeAcFNulSWnC037ilZ7YmWv3y0UBemSIw02pokM5xOh4OWKyTjiiXv+dAR27MoJhjk/ q08fUgBibeSFSRqU/iEcqLZhUA1w6hp0xSciBrbvDpymOrYGfrPKoxtPrezObYG0TdL7 L2xs2SQmJ5rhbPl1scqFiCmGGRc/ZERPzGDI4qf+fg+YpS5NcVSGvFKbWXS2aWEMC2j6 ScYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=UWF+0O1DMn3fjw5n3dlmwztB206X0RTJzr7XaVJzEJo=; b=YMtrHb8K+L9qClpx9HnsIgoF4QzsNDPHaiz8g+z0K4+hbDKF+soPmHxFiBlUSjOKy8 6ucZEx1pikOrH5pMcKuRl8pk23QSnHhQt++0m2lcwhfQwyhWwHkZawW2eFsz1tno1aSl HGCiM3pVbyGcMtZWyrrsrcKg1+F9hx1jK5FOYSWrzH7SEnmZwATZev7aMHsBQ1MxuyvD uizz1WSP+zRMP3KNgTnXcvb2A9cTZL8+ELRjeHrAd6XT3PTPUjD2TYupt2vz2hmZ37aY LmPrkF+KCLWcraWwCdwfjsteJ3It/10lv2wl2mFVoGD5mstssxmVExQ7mXhEyHsZuRwD FkTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=l1k9Had6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m13si130517pgp.577.2019.05.22.10.30.01; Wed, 22 May 2019 10:30:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=l1k9Had6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729749AbfEVR26 (ORCPT + 99 others); Wed, 22 May 2019 13:28:58 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:37448 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727499AbfEVR26 (ORCPT ); Wed, 22 May 2019 13:28:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Sender:Content-Transfer-Encoding: MIME-Version:Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=UWF+0O1DMn3fjw5n3dlmwztB206X0RTJzr7XaVJzEJo=; b=l1k9Had6FinYJp0UHkOpnCuns HcJfgtopDciAmbdkSgRDXaaamrDtj89nWniHJ1Zx0OkWJa8zG/gxTI5UWHCVPAJxs278+eeu2p4XQ cFhERJHwtWS9xKQBy727xP6S9/6zcieOHlUnuiwtvGoAO1sM0ZA60mbL8tsgmqPuVljq5TL6lqnks gbySJc3Yj8QaCZAaOLSQFMQ2nNie7nmebR1YxkKFsXmrDQ+mNiDdmA/jjmno5jpJIxIWia5qbrhHU MBH9MhqepYOrVczUOxP4wj7VEoFudCuCCj6eKtlqJh29whiE+JxDCU+0rcJkw6r+XxDQmlA6llqN9 oA1xrQE4Q==; Received: from [179.182.168.126] (helo=bombadil.infradead.org) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1hTV2s-0002IF-Fa; Wed, 22 May 2019 17:28:54 +0000 Received: from mchehab by bombadil.infradead.org with local (Exim 4.92) (envelope-from ) id 1hTV2o-0008Of-3X; Wed, 22 May 2019 13:28:50 -0400 From: Mauro Carvalho Chehab To: Jonathan Corbet Cc: Mauro Carvalho Chehab , Markus Heiser , Jani Nikula , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] scripts/sphinx-pre-install: make it handle Sphinx versions Date: Wed, 22 May 2019 13:28:34 -0400 Message-Id: X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As we want to switch to a newer Sphinx version in the future, add some version detected logic, checking if the current version meets the requirement and suggesting upgrade it the version is supported but too old. Signed-off-by: Mauro Carvalho Chehab --- scripts/sphinx-pre-install | 81 ++++++++++++++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 7 deletions(-) diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install index f6a5c0bae31e..e667db230d0a 100755 --- a/scripts/sphinx-pre-install +++ b/scripts/sphinx-pre-install @@ -13,7 +13,7 @@ use strict; # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -my $virtenv_dir = "sphinx_1.4"; +my $conf = "Documentation/conf.py"; my $requirement_file = "Documentation/sphinx/requirements.txt"; # @@ -26,7 +26,9 @@ my $need = 0; my $optional = 0; my $need_symlink = 0; my $need_sphinx = 0; +my $rec_sphinx_upgrade = 0; my $install = ""; +my $virtenv_dir = "sphinx_"; # # Command line arguments @@ -201,13 +203,15 @@ sub check_missing_tex($) } } -sub check_sphinx() +sub get_sphinx_fname() { - return if findprog("sphinx-build"); + my $fname = "sphinx-build"; + return $fname if findprog($fname); - if (findprog("sphinx-build-3")) { + $fname = "sphinx-build-3"; + if (findprog($fname)) { $need_symlink = 1; - return; + return $fname; } if ($virtualenv) { @@ -219,6 +223,68 @@ sub check_sphinx() } else { add_package("python-sphinx", 0); } + + return ""; +} + +sub check_sphinx() +{ + my $min_version; + my $rec_version; + my $cur_version; + + open IN, $conf or die "Can't open $conf"; + while () { + if (m/^\s*needs_sphinx\s*=\s*[\'\"]([\d\.]+)[\'\"]/) { + $min_version=$1; + last; + } + } + close IN; + + die "Can't get needs_sphinx version from $conf" if (!$min_version); + + open IN, $requirement_file or die "Can't open $requirement_file"; + while () { + if (m/^\s*Sphinx\s*==\s*([\d\.]+)$/) { + $rec_version=$1; + last; + } + } + close IN; + + die "Can't get recommended sphinx version from $requirement_file" if (!$min_version); + + my $sphinx = get_sphinx_fname(); + return if ($sphinx eq ""); + + open IN, "$sphinx --version 2>&1 |" or die "$sphinx returned an error"; + while () { + if (m/^\s*sphinx-build\s+([\d\.]+)$/) { + $cur_version=$1; + last; + } + } + close IN; + + $virtenv_dir .= $rec_version; + + die "$sphinx didn't return its version" if (!$cur_version); + + printf "Sphinx version %s (minimal: %s, recommended >= %s)\n", + $cur_version, $min_version, $rec_version; + + if ($cur_version lt $min_version) { + print "Warning: Sphinx version should be >= $min_version\n\n"; + $need_sphinx = 1; + return; + } + + if ($cur_version lt $rec_version) { + print "Warning: It is recommended at least Sphinx version $rec_version.\n"; + print " To upgrade, use:\n\n"; + $rec_sphinx_upgrade = 1; + } } # @@ -540,7 +606,7 @@ sub check_needs() printf "\tsudo ln -sf %s /usr/bin/sphinx-build\n\n", which("sphinx-build-3"); } - if ($need_sphinx) { + if ($need_sphinx || $rec_sphinx_upgrade) { my $activate = "$virtenv_dir/bin/activate"; if (-e "$ENV{'PWD'}/$activate") { printf "\nNeed to activate virtualenv with:\n"; @@ -554,7 +620,8 @@ sub check_needs() printf "\t$virtualenv $virtenv_dir\n"; printf "\t. $activate\n"; printf "\tpip install -r $requirement_file\n"; - $need++; + + $need++ if (!$rec_sphinx_upgrade); } } printf "\n"; -- 2.21.0