= Step by step tutorial on how to use PARI/GP development version in Sage =

This tutorial explains how to use a PARI/GP development version inside Sage. This is currently a bit hackish and the aim is to have this possibility natively supported (see [[https://groups.google.com/forum/#!topic/sage-devel/nTwhCV89FXE|this thread on sage-devel]].

== Prerequisites ==

 1. We assume that your PARI/GP source code is at `$PARI_ROOT`

 2. You need version of Sage compiled from source that is run with the command `sage`

== Procedure ==

 1. Download the script [[attachment:pari_sage.sh]]

 2. Start Sage environment {{{
$ cd $PARI_ROOT
$ sage -sh                # starts Sage environment
}}}

 3. Optional step: apply Sage patches located in `$SAGE_ROOT/build/pkg/pari/patches`.

 3. Compile pari {{{
$ cd $PARI_ROOT
$ make clean              # start with a clean slate
$ source pari_sage.sh     # reading pari_build.sh
$ pari_set_environment    # setting properly environment variables for compilation
$ pari_build              # building pari
$ pari_install            # installing pari
}}}

 3. Recompile cysignals {{{
$ sage -f cysignals       # recompile cysignals (to be linked correctly against pari)
}}}

 4. Compile the last version of cypari (this currently breaks, but [[https://github.com/defeo/cypari2/pull/28|this pull request fixes it]]) {{{
$ sage -pip install git+https://github.com/defeo/cypari2
}}}

 5. Recompile what needs to be {{{
$ sage -br
}}}

== Procedure to restore the standard PARI package in Sage ==

 1. {{{
$ sage -f pari
$ sage -f cysignals
$ sage -f cypari
$ sage -br
}}}