This document describe how to completely install Scholdoc from source. The instructions are largely adapted from Pandoc's installation instructions.
If you are installing the development version from Github, the procedure is identical to Pandoc:
https://github.com/jgm/pandoc/wiki/Installing-the-development-version-of-pandoc
However, Scholdoc relies on its own fork of pandoc-types
, texmath
, and
pandoc-citeproc
. The reposity for all these packages can be found in this
post:
http://forum.scholarlymarkdown.com/t/scholdoc-repository-information/
Scholdoc is written in pure Haskell. It requires the GHC compiler and the cabal-install build system. The easiest way to get it on all platforms is by installing the Haskell platform for your operating system. Please make sure you are using GHC version 7.4 or above. (unless you are using Homebrew with OSX or Ubuntu >12.04, see below).
Using Homebrew
OSX users running Homebrew can easily get the prerequisites by running
brew update
brew install ghc cabal-install
You can also install Scholdoc directly from the offical Homebrew tap by running
brew tap timtylin/scholdoc
brew update
brew install scholdoc scholdoc-citeproc
Herbert V. Riedel have conveniently provided a PPA of pre-compiled GHC and
Cabal for recent Ubuntu systems. Here's an example of how to get
recommended versions of GHC and cabal-install using apt-get
sudo add-apt-repository ppa:hvr/ghc
sudo apt-get update && apt-get install ghc-7.8.3 cabal-install-1.20
-
Install the Haskell platform. This will give you GHC and the cabal-install build tool.
-
Update your package database:
cabal update
-
Use
cabal
to install Scholdoc and its dependencies:cabal install scholdoc
This procedure will install the released version of Scholdoc, which will be downloaded automatically from HackageDB. It will also install scholdoc-citeproc
If you want to install a modified or development version of Scholdoc instead, switch to the source directory.
-
Install the Haskell platform. This will give you GHC and the cabal-install build tool.
-
Update your package database:
cabal update
-
Use the provided makefile to trigger the right install instructions for
cabal
:make deps make install
Note: If you obtained the source from the git repository (rather than a release tarball), you'll need to do
git submodule update --init
to fetch the contents of
data/templates
beforecabal install
. -
Make sure the
$CABALDIR/bin
directory is in your path. You should now be able to runscholdoc
:scholdoc --help
If you want to process citations with Scholdoc, you will also need to install a
separate package, scholdoc-citeproc
. This can be installed using cabal:
cabal install scholdoc-citeproc
By default scholdoc-citeproc
uses the "i;unicode-casemap" method to sort
bibliography entries (RFC 5051). If you would like to use the locale-sensitive
unicode collation algorithm instead, specify the unicode_collation
flag:
cabal install scholdoc-citeproc -funicode_collation
Note that this requires the text-icu
library, which in turn depends on the C
library icu4c
. Installation directions vary by platform. Here is how it might
work on OSX with homebrew:
brew install icu4c
cabal install --extra-lib-dirs=/usr/local/Cellar/icu4c/51.1/lib \
--extra-include-dirs=/usr/local/Cellar/icu4c/51.1/include \
-funicode_collation text-icu scholdoc-citeproc
This is a step-by-step procedure that offers maximal control over the build and installation. Most users should use the quick install, but this information may be of use to packagers. For more details, see the Cabal User's Guide. These instructions assume that the Scholdoc source directory is your working directory.
-
Install dependencies: in addition to the Haskell platform, you will need a number of additional libraries. You can install them all with
cabal update cabal install --only-dependencies
-
Configure:
cabal configure --prefix=DIR --bindir=DIR --libdir=DIR \ --datadir=DIR --libsubdir=DIR --datasubdir=DIR --docdir=DIR \ --htmldir=DIR --program-prefix=PREFIX --program-suffix=SUFFIX \ --mandir=DIR --flags=FLAGSPEC
All of the options have sensible defaults that can be overridden as needed.
FLAGSPEC
is a list of Cabal configuration flags, optionally preceded by a-
(to force the flag tofalse
), and separated by spaces. Scholdoc's flags include:-
embed_data_files
: embed all data files into the binary (default no). This is helpful if you want to create a relocatable binary. Note: if this option is selected, you need to install thehsb2hs
preprocessor:cabal install hsb2hs
-
https
: enable support for downloading resources over https (using thehttp-client
andhttp-client-tls
libraries). -
tryscholdoc
: builds a CGI executable that can be served to parse ScholarlMarkdown text over the internet. See the contents of thetryscholdoc
directory for more details.
-
-
Build:
cabal build
-
Build API documentation:
cabal haddock --html-location=URL --hyperlink-source
-
Copy the files:
cabal copy --destdir=PATH
The default destdir is
/
. -
Register Scholdoc as a GHC package:
cabal register
Package managers may want to use the
--gen-script
option to generate a script that can be run to register the package at install time.
It is possible to compile Scholdoc such that the data files Scholdoc uses are embedded in the binary. The resulting binary can be run from any directory and is completely self-contained.
cabal install hsb2hs # a required build tool
cabal install --flags="embed_data_files" citeproc-hs
cabal configure --flags="embed_data_files"
cabal build
You can find the Scholdoc executable in dist/build/scholdoc
. Copy this
wherever you please.
If you use the included Makefile
commands, then embedding the binary files is
the default behavior.
Scholdoc comes with an automated test suite integrated to cabal. The fastest way to access the tests is by the Makefile commands.
To build the tests:
make deps
make quick
To run the tests:
make test
To run particular tests (pattern-matching on their names), use cabal test
with the -t
option:
cabal test --test-options='-t markdown'
If you add a new feature to Scholdoc, please add tests as well, following the
pattern of the existing tests. The test suite code is in
tests/test-scholdoc.hs
. It is probably easiest to add/modify data files to
the tests
directory (and change tests/Tests/Old.hs
if addiitons are made).
For small, detailed behavior and messy edge cases, it is better to modify the
tests under the tests/Tests
hierarchy corresponding to the Scholdoc module
you are changing.
To build the benchmarks:
make deps
make full
To run the benchmarks:
make bench
To change the time allowed for each reader/writer benchmark:
cabal bench --benchmark-options='--time-limit 1.0'
To run just the markdown benchmarks:
cabal bench --benchmark-options='markdown'