@@ -21,3 +21,90 @@ Summary: you can do anything except sell this library in source
2121form. Blitz is licensed under either the Lesser GPL version 3 license
2222(see COPYING and COPYING.LESSER), the BSD license (see COPYRIGHT), and
2323the less restrictive Perl "artistic license" version 2.0 (see LICENSE).
24+
25+ Installing Blitz
26+ ================
27+
28+ We recommend that users consider using Spack to install Blitz++ (see
29+ below; use ` spack install blitz ` ). For those who enjoy spending hours
30+ upon hours installing software by hand...
31+
32+ Blitz++ is distributed with a GNU Autotools build. Autotools was
33+ originally developed to address the non-portability of hand-built
34+ Makefiles. It was a big step forward, and for the first time allowed
35+ users to install programs on their own Unix/Linux system, without too
36+ many hassles due to minor differences between Unices. While
37+ frequently easy to use for end users, Autotools is also arcane and
38+ difficult to use. It has since been supplanted by ` CMake ` , which
39+ offers a somewhat more straightforward way of doing things. It is our
40+ recommendation that any new projects are produced with CMake builds
41+ --- not Autotools or hand-built Makefiles. See
42+ [ here] ( https://devmanual.gentoo.org/general-concepts/autotools/index.html )
43+ --- or search around --- for more information on Autotools:
44+
45+ NOTES:
46+
47+ 1 . Autools-based tarballs are normally distributed with a
48+ ` ./configure ` script. This is most convenient for the user, since
49+ nothing special must be installed on the system for it to work.
50+ Autotools-based Git repositories normally do * not* contain the
51+ ` ./configure ` script: because that script is a generated file, not an
52+ original source file. Anyone checking out an Autotools-based project
53+ from a Git repository needs to run ` autoreconf ` to first generate the
54+ ` ./configure ` file; this is a fundamental fact of life when using
55+ Autotools and Git. Search around for instructions on how to do so.
56+
57+ Auto-Builders: Spack
58+ =====================
59+
60+ Although Autotools is not in itself particularly difficult to use,
61+ modern open source software stacks frequently require dozens or even
62+ hundreds of packages for a particular project. Blitz++ does not have
63+ any dependencies, and is therefore pretty "easy" to install; but
64+ typical projects that involve Blitz++ could require the installation
65+ of many more packages. Installing a dozen or more packages by hand is
66+ slow, error-prone, and must be re-done every time something
67+ foundational changes (compiler or OS version) --- in other words, hand
68+ installation of packages is a waste of time. Nobody hand-builds
69+ assembly code today either. Some things are better automated.
70+
71+ [ Spack] ( https://spack.io ) is an auto-installer that automates the
72+ installation (and re-installation) of packages. People have
73+ successfully used it to manage software stacks for particular projects
74+ involving over 100 packages --- which would previously have taken
75+ weeks for one person to complete by hand. We recommend that people
76+ interested in Blitz++ use Spack for installation, for the following
77+ reaosns:
78+
79+ 1 . Spack already knows the intricacies of building and installing
80+ software --- including Autotools, Autoreconf, CMake, dependency
81+ management, compiler versions, shared libraries, etc. This is arcane,
82+ tricky stuff that should not be foisted on everybody just because they
83+ want to use open source software.
84+
85+ 1 . Spack already knows the package-specific "gotchas" involved in
86+ installing any particular piece of software. Many packages are quite
87+ standard, and don't require much special knowledge beyond a general
88+ understanding of Autotools or CMake --- but many others have a variety
89+ of "gotchas": they require patches or workardounds for particular
90+ situations, they use standard tools in non-standard ways, they have
91+ bugs that require patching, they involve a one-off hand-built
92+ Makefile; the list goes on. Every package-specific "gotcha" requires
93+ minutes or hours of effort to understand when installing that package
94+ --- effort that does not help in installing any other package, nor
95+ does it help the next person installing the same package. This is a
96+ big waste of time. Spack knows the "gotchas" for each package so you
97+ don't have to.
98+
99+ 1 . The use of Spack avoides the need for project authors (such as
100+ those at Blitz++) to answer an unending stream of build questions,
101+ almost all of which are entirely generic and have nothing to do with
102+ the actual project. If Spack fails on a particular package, and then
103+ questions are asked on the Spack forum --- then people who spend every
104+ day on build system minutea will be there to help.
105+
106+ 1 . Spack recipes provide a clear and concise explanation (in Python
107+ code) of how to install a particular package. For those who prefer to
108+ continue stone age traditions, inspection of the Spack package will
109+ tell exactly what is required to install a package by hand, including
110+ the package-specific "gotchas."
0 commit comments