Commit 56e5a633 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

scripts/sphinx-pre-install: don't use LaTeX with CentOS 7



There aren't enough texlive packages for LaTeX-based builds
to work on CentOS/RHEL <= 7.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent b308467c
Loading
Loading
Loading
Loading
+50 −18
Original line number Diff line number Diff line
@@ -83,6 +83,17 @@ sub check_missing(%)
	foreach my $prog (sort keys %missing) {
		my $is_optional = $missing{$prog};

		# At least on some LTS distros like CentOS 7, texlive doesn't
		# provide all packages we need. When such distros are
		# detected, we have to disable PDF output.
		#
		# So, we need to ignore the packages that distros would
		# need for LaTeX to work
		if ($is_optional == 2 && !$pdf) {
			$optional--;
			next;
		}

		if ($is_optional) {
			print "Warning: better to also install \"$prog\".\n";
		} else {
@@ -333,10 +344,10 @@ sub give_debian_hints()

	if ($pdf) {
		check_missing_file("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
				   "fonts-dejavu", 1);
				   "fonts-dejavu", 2);
	}

	check_program("dvipng", 1) if ($pdf);
	check_program("dvipng", 2) if ($pdf);
	check_missing(\%map);

	return if (!$need && !$optional);
@@ -371,22 +382,40 @@ sub give_redhat_hints()
	#
	# Checks valid for RHEL/CentOS version 7.x.
	#
	my $old = 0;
	my $rel;
	$rel = $1 if ($system_release =~ /release\s+(\d+)/);

	if (!($system_release =~ /Fedora/)) {
		$map{"virtualenv"} = "python-virtualenv";
	}

	my $release;
		if ($rel && $rel < 8) {
			$old = 1;
			$pdf = 0;

	$release = $1 if ($system_release =~ /Fedora\s+release\s+(\d+)/);
			printf("Note: texlive packages on RHEL/CENTOS <= 7 are incomplete. Can't support PDF output\n");
			printf("If you want to build PDF, please read:\n");
			printf("\thttps://www.systutorials.com/241660/how-to-install-tex-live-on-centos-7-linux/\n");
		}
	} else {
		if ($rel && $rel < 26) {
			$old = 1;
		}
	}
	if (!$rel) {
		printf("Couldn't identify release number\n");
		$old = 1;
		$pdf = 0;
	}

	check_rpm_missing(\@fedora26_opt_pkgs, 1) if ($pdf && $release >= 26);
	check_rpm_missing(\@fedora_tex_pkgs, 1) if ($pdf);
	check_missing_tex(1) if ($pdf);
	check_rpm_missing(\@fedora26_opt_pkgs, 2) if ($pdf && !$old);
	check_rpm_missing(\@fedora_tex_pkgs, 2) if ($pdf);
	check_missing_tex(2) if ($pdf);
	check_missing(\%map);

	return if (!$need && !$optional);

	if ($release >= 18) {
	if (!$old) {
		# dnf, for Fedora 18+
		printf("You should run:\n\n\tsudo dnf install -y $install\n");
	} else {
@@ -425,8 +454,8 @@ sub give_opensuse_hints()
		"texlive-zapfding",
	);

	check_rpm_missing(\@suse_tex_pkgs, 1) if ($pdf);
	check_missing_tex(1) if ($pdf);
	check_rpm_missing(\@suse_tex_pkgs, 2) if ($pdf);
	check_missing_tex(2) if ($pdf);
	check_missing(\%map);

	return if (!$need && !$optional);
@@ -450,7 +479,7 @@ sub give_mageia_hints()
		"texlive-fontsextra",
	);

	check_rpm_missing(\@tex_pkgs, 1) if ($pdf);
	check_rpm_missing(\@tex_pkgs, 2) if ($pdf);
	check_missing(\%map);

	return if (!$need && !$optional);
@@ -473,7 +502,8 @@ sub give_arch_linux_hints()
		"texlive-latexextra",
		"ttf-dejavu",
	);
	check_pacman_missing(\@archlinux_tex_pkgs, 1) if ($pdf);
	check_pacman_missing(\@archlinux_tex_pkgs, 2) if ($pdf);

	check_missing(\%map);

	return if (!$need && !$optional);
@@ -492,7 +522,7 @@ sub give_gentoo_hints()
	);

	check_missing_file("/usr/share/fonts/dejavu/DejaVuSans.ttf",
			   "media-fonts/dejavu", 1) if ($pdf);
			   "media-fonts/dejavu", 2) if ($pdf);

	check_missing(\%map);

@@ -560,7 +590,7 @@ sub check_distros()
	my %map = (
		"sphinx-build" => "sphinx"
	);
	check_missing_tex(1) if ($pdf);
	check_missing_tex(2) if ($pdf);
	check_missing(\%map);
	print "I don't know distro $system_release.\n";
	print "So, I can't provide you a hint with the install procedure.\n";
@@ -589,11 +619,13 @@ sub check_needs()
	check_program("make", 0);
	check_program("gcc", 0);
	check_python_module("sphinx_rtd_theme", 1) if (!$virtualenv);
	check_program("xelatex", 1) if ($pdf);
	check_program("dot", 1);
	check_program("convert", 1);
	check_program("rsvg-convert", 1) if ($pdf);
	check_program("latexmk", 1) if ($pdf);

	# Extra PDF files - should use 2 for is_optional
	check_program("xelatex", 2) if ($pdf);
	check_program("rsvg-convert", 2) if ($pdf);
	check_program("latexmk", 2) if ($pdf);

	check_distros();