Re: imgmath and PDF output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Thu, 25 Aug 2016 15:03:16 +0200
Markus Heiser <markus.heiser@xxxxxxxxxxx> escreveu:

> Hi Jon, Mauro, Jani,
> 
> today I tested imgmath, it worked well, but needs an
> additional dvipng installation ...
> 
> What do you think, should we document the prerequisites
> on different linux distributions to build documentation
> with sphinx.ext.imgmath and PDF output?
> 
> What I mean, in the meantime we have two PDF applications,
> the imgmath uses "latex" (plus dvipng) and the PDF output 
> uses "xetex".
> 
> I tested on a ubuntu 16.04 sandbox, so my experience is,
> on a debian based system it should be enough to install 
> *base*, *xetex* and *recommended* -TeX packages, the 
> imgmath extensions needs an additional dvipng package::
> 
>    sudo apt-get install \
>          dvipng texlive-base texlive-xetex \
>          texlive-latex-recommended
> 
> Jon and Mauro made there own experience with fedora, where
> the installation procedure seems much more complex.
> 
> Might it be good, to document these experiences, to preserve
> your experience?

Yes, IMHO we should document it somehow. What I do when I want to check the
minimum amount of packages to be installed is to create a LXC image
using the lxc-create scripts. This way, we can be sure that the
environment will be the bare minimum one.

On such environment, before the math extension, I had to install
those packages on Ubuntu Xenial, and on Debian Jessie, in order to
build the docs:

	texlive-xetex python3-sphinx python3-sphinx-rtd-theme ttf-dejavu make gcc python3-sphinx-rtd-theme

As the environment is the bare minimum, you'll notice that it also
required "make".

I didn't track the minimal requirements for Fedora, but I had to
install those patchages on my Fedora 24 server yesterday, for it to build
for PDF:

	texlive-amsmath.noarch texlive-mathtools.noarch
	texlive-anyfontsize.noarch texlive-xelatex
	texlive-xetex texlive-xecolor.noarch
	texlive-titlesec.noarch texlive-framed texlive-threeparttable
	texlive-wrapfig texlive-upquote texlive-capt-of eqparbox

With regards to documenting it, I would actually prefer to write a
shell or perl script (as it should require a bare minimum environment,
I would not write it in Python) that would be downloading what's needed,
based on the distribution type. I wrote one such script to allow building
the media drivers out of the tree:

	https://git.linuxtv.org/media_build.git/tree/build

It checks for the type of distribution using this logic:

	$system_release = qx(lsb_release -d) if which("lsb_release");
	$system_release =~ s/Description:\s*// if ($system_release);
	$system_release = catcheck("/etc/system-release") if !$system_release;
	$system_release = catcheck("/etc/redhat-release") if !$system_release;
	$system_release = catcheck("/etc/lsb-release") if !$system_release;
	$system_release = catcheck("/etc/gentoo-release") if !$system_release;
	$system_release = catcheck("/etc/issue") if !$system_release;
	$system_release =~ s/\s+$//;

and checks if the prereqs are available. If not, it displays a hint
with the distro-specific command needed to install the dependencies:

	sub need_program($)
	{
		my $prog = shift;

		return if findprog($prog);

		push @missing, $prog;

		$need++;
	}

	need_program "make";
	...

	give_hints if ($need);

	die "Build can't procceed as $need dependency is missing" if ($need == 1);
	die "Build can't procceed as $need dependencies are missing" if ($need);

The give_hints use the system_release to print the required needs:

	sub give_hints()
	{

		# Distro-specific hints
		if ($system_release =~ /Red Hat Enterprise Linux/) {
			give_redhat_hints;
			return;
		}
		...
	}

	sub give_redhat_hints()
	{
		my $install;

		my %map = (
			"wget"			=> "wget",
			"lsdiff"		=> "patchutils",
			"Digest::SHA"		=> "perl-Digest-SHA",
			"Proc::ProcessTable"	=> "perl-Proc-ProcessTable",
		);

		foreach my $prog (@missing) {
			print "ERROR: please install \"$prog\", otherwise, build won't work.\n";
			if (defined($map{$prog})) {
				$install .= " " . $map{$prog};
			} else {
				$install .= " " . $prog;
			}
		}

		printf("You should run:\n\tyum install -y $install\n");
	}



Thanks,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux