dm dust: use dust block size for badblocklist index
[linux-2.6-microblaze.git] / scripts / sphinx-pre-install
index f230e65..3b638c0 100755 (executable)
@@ -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,13 @@ sub give_debian_hints()
 
        if ($pdf) {
                check_missing_file("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
-                                  "fonts-dejavu", 1);
+                                  "fonts-dejavu", 2);
+
+               check_missing_file("/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc",
+                                  "fonts-noto-cjk", 2);
        }
 
-       check_program("dvipng", 1) if ($pdf);
+       check_program("dvipng", 2) if ($pdf);
        check_missing(\%map);
 
        return if (!$need && !$optional);
@@ -363,6 +377,7 @@ sub give_redhat_hints()
        my @fedora_tex_pkgs = (
                "texlive-collection-fontsrecommended",
                "texlive-collection-latex",
+               "texlive-xecjk",
                "dejavu-sans-fonts",
                "dejavu-serif-fonts",
                "dejavu-sans-mono-fonts",
@@ -371,22 +386,45 @@ sub give_redhat_hints()
        #
        # Checks valid for RHEL/CentOS version 7.x.
        #
-       if (! $system_release =~ /Fedora/) {
+       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;
+
+                       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;
+       }
 
-       $release = $1 if ($system_release =~ /Fedora\s+release\s+(\d+)/);
+       if ($pdf) {
+               check_missing_file("/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc",
+                                  "google-noto-sans-cjk-ttc-fonts", 2);
+       }
 
-       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 +463,15 @@ sub give_opensuse_hints()
                "texlive-zapfding",
        );
 
-       check_rpm_missing(\@suse_tex_pkgs, 1) if ($pdf);
-       check_missing_tex(1) if ($pdf);
+       $map{"latexmk"} = "texlive-latexmk-bin";
+
+       # FIXME: add support for installing CJK fonts
+       #
+       # I tried hard, but was unable to find a way to install
+       # "Noto Sans CJK SC" on openSUSE
+
+       check_rpm_missing(\@suse_tex_pkgs, 2) if ($pdf);
+       check_missing_tex(2) if ($pdf);
        check_missing(\%map);
 
        return if (!$need && !$optional);
@@ -450,7 +495,14 @@ sub give_mageia_hints()
                "texlive-fontsextra",
        );
 
-       check_rpm_missing(\@tex_pkgs, 1) if ($pdf);
+       $map{"latexmk"} = "texlive-collection-basic";
+
+       if ($pdf) {
+               check_missing_file("/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc",
+                                  "google-noto-sans-cjk-ttc-fonts", 2);
+       }
+
+       check_rpm_missing(\@tex_pkgs, 2) if ($pdf);
        check_missing(\%map);
 
        return if (!$need && !$optional);
@@ -473,7 +525,13 @@ 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);
+
+       if ($pdf) {
+               check_missing_file("/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc",
+                                  "noto-fonts-cjk", 2);
+       }
+
        check_missing(\%map);
 
        return if (!$need && !$optional);
@@ -492,15 +550,31 @@ 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);
+
+       if ($pdf) {
+               check_missing_file("/usr/share/fonts/noto-cjk/NotoSansCJKsc-Regular.otf",
+                                  "media-fonts/noto-cjk", 2);
+       }
 
        check_missing(\%map);
 
        return if (!$need && !$optional);
 
        printf("You should run:\n\n");
-       printf("\tsudo su -c 'echo \"media-gfx/imagemagick svg png\" > /etc/portage/package.use/imagemagick'\n");
-       printf("\tsudo su -c 'echo \"media-gfx/graphviz cairo pdf\" > /etc/portage/package.use/graphviz'\n");
+
+       my $imagemagick = "media-gfx/imagemagick svg png";
+       my $cairo = "media-gfx/graphviz cairo pdf";
+       my $portage_imagemagick = "/etc/portage/package.use/imagemagick";
+       my $portage_cairo = "/etc/portage/package.use/graphviz";
+
+       if (qx(cat $portage_imagemagick) ne "$imagemagick\n") {
+               printf("\tsudo su -c 'echo \"$imagemagick\" > $portage_imagemagick'\n")
+       }
+       if (qx(cat $portage_cairo) ne  "$cairo\n") {
+               printf("\tsudo su -c 'echo \"$cairo\" > $portage_cairo'\n");
+       }
+
        printf("\tsudo emerge --ask $install\n");
 
 }
@@ -560,7 +634,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 +663,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();