docs
[pspp] / INSTALL
diff --git a/INSTALL b/INSTALL
index 23e5f25d0e5f85798dcfb368ecb2f04f59777f61..3016d0261970bb1132ab88d59bfdfcb351494f37 100644 (file)
--- a/INSTALL
+++ b/INSTALL
-Installation Instructions
-*************************
+Installation Instructions for GNU pspp
+**************************************
 
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
-Software Foundation, Inc.
+These instructions are based on the generic GNU installation
+instructions, but they have been tailored for PSPP.  These instructions
+apply only to people wishing to build and install PSPP from source.
 
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
+Overview
+========
+
+PSPP uses the standard GNU configuration system.  Therefore, if all is well,
+the following simple procedure should work, even on non-GNU systems:
+
+ tar -xzf pspp-*.tar.gz
+ cd pspp-*
+ ./configure
+ make
+ sudo make install
+
+Obviously, you should replace 'pspp-*' in the above, with the name of
+the tarball you are installing.
+
+In 99% of cases, that is all you have to do - FINISHED!
+
+
+
+
+If any part of the above process fails, then it is
+likely that one or more of the necessary prerequisites is missing
+from your system.  The following paragraphs contain highly detailed
+information which will help you fix this.
+
+
+Before You Install
+==================
+
+Before you install PSPP, you will need to install certain prerequisite
+packages.  You may also want to install other packages that enable
+additional functionality in PSPP.  Please note, if you are installing
+any of the libararies mentioned below using pre-prepared binary
+packages provided by popular GNU/Linux vendors, you may need to ensure
+that you install the "development" versions (normally postfixed with
+-dev or -devel).
+
+If you do not know whether you have these installed already, you may
+proceed to "Basic Installation", below.  The PSPP configuration
+process will notify you about required and optional packages that are
+not present on your system.
+
+The following packages are required to install PSPP:
+
+    * A C compiler and tool chain.  On Unix-like systems, we
+      recommend GCC, but any modern compilation environment should
+      work.  On Microsoft Windows, Cygwin (http://www.cygwin.com/) and
+      MinGW (http://www.mingw.org/) are known to work.
+
+    * The GNU Scientific Library (http://www.gnu.org/software/gsl/),
+      version 1.13 or later, including libgslcblas included with GSL.
+
+    * Python (https://python.org/), version 3.4 or later.  Python is
+      required during build but not after installation.
+
+    * iconv, which should be installed as part of a Unix-like system.
+      If you don't have a version already, you can install GNU
+      libiconv (http://www.gnu.org/software/libiconv/).
+
+    * Cairo (http://cairographics.org/), version 1.12 or later.
+
+    * Pango (http://www.pango.org/), version 1.22 or later.
+
+    * zlib (http://www.zlib.net/).
+
+    * libxml2 (http://xmlsoft.org/).
+
+    * gettext version 0.20 or later.
+
+The following packages are required to enable PSPPIRE, the graphical
+user interface for PSPP.  If you cannot install them or do not wish to
+use the GUI, you must run `configure' with --without-gui.
+
+    * pkg-config (http://pkg-config.freedesktop.org/wiki/).  Versions
+      0.18 and 0.19 have a bug that will prevent library detection,
+      but other versions should be fine.
+
+    * GTK+ (http://www.gtk.org/), version 3.22.0 or later.
+
+    * GtkSourceView (http://projects.gnome.org/gtksourceview/)
+      version 3.x (3.4.2 or later) or 4.x.
+
+    * GNU Spread Sheet Widget (http://www.gnu.org/software/ssw)
+      version 0.7 or later.
+
+The following packages are only needed to build and test the Perl
+module:
+
+    * Perl (https://www.perl.org/), version 5.005_03 or later.
+
+    * The Config::Perl::V module for Perl (https://cpan.org).
+
+    * Optionally, the Text::Diff and Memory::Usage modules for Perl
+      (https://cpan.org).  These modules enable PSPP to test its Perl
+      module more thoroughly.
+
+Other optional packages:
+
+    * libreadline and libhistory
+      (http://tiswww.case.edu/php/chet/readline/rltop.html).  Without
+      them, interactive command editing and history features in the
+      text-based user interface will be disabled.
+
+    * Texinfo (http://www.gnu.org/software/texinfo/), version 4.7 or
+      later.  Installing Texinfo will allow you to build PSPP
+      documentation in PostScript or PDF format.
+
+    * libpq, from Postgresql (http://postgresql.org).  This enables PSPP
+      to read Postgresql databases.  The tests for the Postgresql
+      interface, but not the Postgresql interface itself, requires the
+      Postgresql server to be installed.
 
 Basic Installation
 ==================
 
-These are generic installation instructions.
+These are installation instructions specific to PSPP (including PSPPIRE,
+the graphic user interface).  These instructions contain the
+information most commonly needed by people wishing to build the
+program from source.  More detailed information can be found in the
+generic autoconf manual which is available at
+http://www.gnu.org/software/autoconf/manual/html_node/Running-configure-Scripts.html
 
    The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
+various system-dependent variables used during compilation.
+
+   If you need to do unusual things to compile the package, please
+report the problem to bug-gnu-pspp@gnu.org.  We will try to figure out
+how `configure' could work better in your situation for the next
+release.
+
+   The simplest way to compile PSPP is:
 
   1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
+     `./configure' to configure the package for your system.
+
+     You may invoke `configure' with --help to see what options are
+     available.  The most common of these are listed under "Optional
+     Features", below.
+
+     It is best to build and install PSPP in directories whose names do
+     not contain unusual characters such as spaces or single-quotes, due
+     to limitations of the tools involved in the build process.
+
+     If you installed some of the libraries that PSPP uses in a
+     non-standard location (on many systems, anywhere other than
+     /usr), you may need to provide some special flags to `configure'
+     to tell it where to find them.  For example, on GNU/Linux, if you
+     installed some libraries in /usr/local, then you need to invoke
+     it with at least the following options:
+
+       ./configure LDFLAGS='-L/usr/local/lib -Wl,-rpath,/usr/local/lib' CPPFLAGS='-I/usr/local/include'
 
      Running `configure' takes awhile.  While running, it prints some
      messages telling which features it is checking for.
 
+     If `configure' completes successfully, it prints the message
+     "PSPP configured successfully." at the end of its run.
+     Otherwise, it may stop with a list of packages that you must
+     install before PSPP.  If it does, you need to install those
+     packages, then re-run this step.  Some prerequisites may be
+     omitted by passing a --without-<feature> flag to `configure' (see
+     "Optional Features", below).  If you use one of these flags, then
+     the feature that it disables will not be available in your PSPP
+     installation.
+
+     `configure' may also print a list of packages that you should
+     consider installing.  If you install them, then re-run
+     `configure', additional features will be available in your PSPP
+     installation.
+
   2. Type `make' to compile the package.
 
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
+  3. Optionally, type `make check' to run the self-tests that come
+     with the package.  If any of the self-tests fail, please mail
+     bug-gnu-pspp@gnu.org with the details, to give the PSPP
+     developers an opportunity to fix the problem in the next release.
+
+  4. Type `make install' to install the programs and any data files
+     and documentation.  Ordinarily you will need root permissions to
+     do this.  The "su" and "sudo" commands are common ways to obtain
+     root permissions.  If you cannot get root permissions, see
+     "Installation Names", below.
 
-  4. Type `make install' to install the programs and any data files and
-     documentation.
+     Please note:  The `make install' target does NOT install the perl
+     module (see below).  To install the perl module, you must change to
+     the `perl-module' directory and manually run `make install' there.
 
   5. You can remove the program binaries and object files from the
      source code directory by typing `make clean'.  To also remove the
      files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
+     a different kind of computer), type `make distclean'.
 
 Compilers and Options
 =====================
 
-Some systems require unusual options for compilation or linking that the
+Some systems may require unusual options for compilation or linking that the
 `configure' script does not know about.  Run `./configure --help' for
 details on some of the pertinent environment variables.
 
@@ -78,35 +208,77 @@ details on some of the pertinent environment variables.
 by setting variables in the command line or in the environment.  Here
 is an example:
 
-     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
-   *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory.  After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
+     ./configure CC=c89 CFLAGS=-O0 LIBS=-lposix
+
+Cross Compiling
+===============
+
+To cross-compile PSPP, you will likely need to set the
+PKG_CONFIG_LIBDIR environment variable to point to an
+appropriate pkg-config for the cross-compilation environment.
+
+Part of cross-compiling procedure builds a native binary.  Therefore, you
+will need not only the dependent libraries for your target, but also for the
+build machine.   This is because the native version is used to create
+examples for the user manual.
+
+To do a windows cross compilation on a debian build machine, the mingw64
+cross build system can be used. First you have to install the build
+dependencies with
+
+sudo apt install -y build-essential python3 perl texinfo texlive \
+        libgsl-dev libgtk-3-dev libgtksourceview-3.0-dev \
+        pkg-config gperf git zip curl autoconf libtool \
+        gettext libreadline-dev appstream \
+        mingw-w64 meson ninja-build \
+        imagemagick wget nsis texlive-plain-generic
+
+To build windows 64bit installers from the latest nightly do the following steps
+
+mkdir sandbox
+sandboxdir=`pwd`/sandbox
+curl -o pspp.tgz https://benpfaff.org/~blp/pspp-master/latest-source.tar.gz
+tar -xzf pspp.tgz
+./pspp-<version>/Windows/build-dependencies --arch=x86_64-w64-mingw32 --sandbox=$sandboxdir
+mkdir build
+cd build
+../pspp-<version>/configure --host="x86_64-w64-mingw32" \
+  CPPFLAGS="-I$sandboxdir/Install/include" \
+  LDFLAGS="-L$sandboxdir/Install/lib" \
+  PKG_CONFIG_LIBDIR="$sandboxdir/Install/lib/pkgconfig" \
+  --prefix=$sandboxdir/psppinst \
+  --enable-relocatable
+make -j4
+make install
+make install-html
+make install-pdf
+make Windows/installers
+
+The windows installers are then available in the build/Windows directory. Note that
+building via mingw64-configure/make does not work because some example outputs for the
+documentation are created during the build process. That requires a native version also
+during the cross compile build which does not work with mingw64-configure.
+
+See "Defining Variables", below, for more details.
 
 Installation Names
 ==================
 
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc.  You
+By default, `make install' installs PSPP's commands under
+`/usr/local/bin', data files under `/usr/local/share', etc.  You
 can specify an installation prefix other than `/usr/local' by giving
 `configure' the option `--prefix=PREFIX'.
 
+   You may wish to install PSPP on a machine where you do not have
+root permissions.  To do so, specify a prefix relative within your
+home directory, e.g. `--prefix=$HOME' or `--prefix=$HOME/inst'.  All
+PSPP files will be installed under the prefix directory, which `make
+install' will create if necessary.  You may run PSPP directly from the
+`bin' directory under the prefix directory as, e.g., `~/inst/bin/pspp'
+under most shells, or for added convenience you can add the
+installation directory to your PATH by editing a shell startup file
+such as `.bashrc'.
+
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
 pass the option `--exec-prefix=PREFIX' to `configure', the package uses
@@ -118,65 +290,33 @@ options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
 you can set and what kinds of files go in them.
 
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+   You can cause programs to be installed with an extra prefix or
+suffix on their names by giving `configure' the  option
+`--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
 
 Optional Features
 =================
 
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
-     CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
+`--without-gui'
+    Don't build the PSPPIRE gui.  Use this option if you only want to
+    build the command line version of PSPP.
 
-     OS KERNEL-OS
+`--without-lib{xx}'
+    Optional libraries should normally be detected and the relevant
+    functionality will be built they exist.  However, on some poorly
+    configured systems a library may exist, but be totally broken.
+    In these cases you can use --without-lib{xx} to force configure
+    to disregard it.
 
-   See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
+`--without-perl-module'
+   Disable building the Perl module, in case it does not build properly
+   or you do not need it.
 
-   If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
-   If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
+`--enable-relocatable'
+   This option is useful for building a package which can be installed
+   into an arbitrary directory and freely copied to any other directory.
+   If you use this option, you will probably want to install the pspp
+   with a command similar to "make install DESTDIR=<destination>".
 
 Defining Variables
 ==================
@@ -190,17 +330,17 @@ them in the `configure' command line, using `VAR=value'.  For example:
      ./configure CC=/usr/local2/bin/gcc
 
 causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).  Here is a another example:
+overridden in the site shell script).  Here is another example:
 
      /bin/bash ./configure CONFIG_SHELL=/bin/bash
 
 Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
 configuration-related scripts to be executed by `/bin/bash'.
 
-`configure' Invocation
-======================
+Generic `configure' Options
+===========================
 
-`configure' recognizes the following options to control how it operates.
+`configure' also recognizes the following options to control how it operates.
 
 `--help'
 `-h'
@@ -234,3 +374,10 @@ configuration-related scripts to be executed by `/bin/bash'.
 `configure' also accepts some other, not widely useful, options.  Run
 `configure --help' for more details.
 
+----------------------------------------------------------------------
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2013 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+