INSTALL: update for v14.6
[s-mailx.git] / INSTALL
blob74af203e12408b2a01f09ca046ebd361c76e1179
1 I n s t a l l i n g  S - n a i l
2 ================================
4 Compilation
5 -----------
7 System specific notes can be found in the next section.
8 Any (optional) feature is adjustable and documented in `conf.rc'.
9 Adjustments may also take place, and are usually done, from the command
10 line, overriding those made in `conf.rc' (if any):
12   $ [make &&] make install
13   $ make uninstall          # Won't remove the system wide startup file!
14   $ make distclean          # *Completely* cleanup working directory
16 With adjustments:
18   $ make WANT_IMAP=0 install
19   $ make WANT_NCL=0 PREFIX=/some/nasty/prefix install
21 There are also some predefined restricted configuration sets available,
22 which take precedence over anything else:
24 . CONFIG=MINIMAL
25   little is left but some air to breathe; no internet connectivity, no
26   internationalized domain names, no IMAP-searches, no regular
27   expression searches, no command line editor, no documentation strings.
29 . CONFIG=MEDIUM
30   Like MINIMAL, but with documentation strings, and the regular
31   expression searches as well as the builtin command line editor will be
32   included if that is possible.
34 . CONFIG=NETSEND
35   WANT_SMTP and WANT_SSL settings are enabled, internationalized domain
36   names will be supported if the necessary libraries are available,
37   otherwise identical to MEDIUM.
39 E.g.:
41   $ make CONFIG=MINIMAL DESTDIR=xtest install
43 would create a `s-nail' binary and install a `s-nail' manual etc.
44 under the prefix `/usr/local' but rooted under [./]`xtest', i.e., the
45 binary would be installed as `[./]xtest/usr/local/bin/s-nail'.
46 The following make(1) target exists, and note that you can use
47 a VERBOSE=1 command line option to gain more (or a different kind of)
48 verbosity:
50 . all         Create / check and update configuration, build.
51 . install     Create / check and update configuration, build, install.
52 . clean       Remove anything which can be rebuild.
53 . distclean   Remove anything which can be rebuild or reconfigured.
54 . uninstall   Uninstall (if configured).
56 . config      Only create or check and update the configuration.
57 . build       Only build (using the existing configuration).
58 . test        Run ./cc-test.sh in --check-only mode on the built binary.
59 . packager-install
60               Only install using the built files of the existing
61               configuration.  It is possible to overwrite DESTDIR= when
62               using this target nonetheless (a following `uninstall'
63               won't know about that overwritten value, however).
65 If some libraries are missing that you know are installed on your
66 system, or if other errors occur due to missing files but which you know
67 exist, please ensure that the environment variable `C_INCLUDE_PATH'
68 includes the necessary `include/' paths and the environment variable
69 `LD_LIBRARY_PATH' includes the necessary `lib/'rary paths.
71 The S-nail make system will inspect these two environment variables and
72 *automatically* convert them to cc(1) (c99(1)) -I and -L options (since
73 these environment variables are, different to the command line options,
74 not part of the POSIX standard).
75 To set these environment variables, the following can be done in
76 a Bourne/Korn/POSIX compatible shell:
78   $ C_INCLUDE_PATH="${C_INCLUDE_PATH}:/usr/local/include"
79   $ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib"
80   $ export C_INCLUDE_PATH LD_LIBRARY_PATH
81   $ make install
83 The S-nail make system will also automatically integrate pkgsrc(7) paths
84 into this mechanism.  pkgsrc(7) is used to handle building (compilation),
85 installation and removal of software packages on a lot of operating
86 systems, including all BSD systems, Linux, Solaris ...
88 Notes for S-nail(1) v14.6*
89 --------------------------
91 Note first that MAILSPOOL is by default `/var/mail' (see `conf.rc').
92 Running `make test' should succeed always and everywhere.
94 S-nail(1) has been or is used regulary on these systems (`uname -srm').
95 Also, i'm (compile) testing manually with WANT_AUTOCC=1, WANT_DEBUG=[01]
96 and WANT_AMALGAMATION=[01] (and WANT_GSSAPI=1), which is what is
97 reflected by the following statements.
99 . All with WANT_AMALGAMATION=1:
100   - Dependent on the configuration you may see some warnings about
101     unused functions.  This shouldn't happen for a any of the predefined
102     CONFIG= urations, including the one that results from the default
103     settings of `conf.rc'.  It may temporarily happen for other
104     individual configurations as long as the codebase is in that heavy
105     fluctuation state.  Reports are welcome to vanish them until v20.
107 . All 32-bit systems:
108   - There _may_ be warnings about format strings, like, e.g.,
110       auxlily.c:1610:10: warning: format '%lu' expects type 'long
111       unsigned int', but argument 3 has type 'size_t'
113     This is ugly, but it has been decided to keep the S-nail codebase
114     ISO C89 compatible, so that there is no %z format string modifier.
115     However, `nail.h' tries hard to detect the real type sizes and ends
116     up in a way that should ensure that the actually expected datatype
117     is of the same size in reality -- please see the definition of the
118     `ZFMT' macro in `nail.h' to verify this statement is true.
120 . Mac OS X <https://www.apple.com/>
121   (Snow Leopard) Darwin 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun
122   7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386.
123   - gcc-mp-4.8 (MacPorts gcc48 4.8.2_0) 4.8.2.
124     + Two warnings on 'signed overflow'.  I think they're wrong.
125   - clang version 3.4 (branches/release_34 197314)
126     Target: x86_64-apple-darwin10.8.0
127     Thread model: posix.
128   - i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666)
129     (dot 3).
130     + Some (i think faulty) warnings on signed overflow.
131   - Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM
132     2.9svn).
134 . ArchLinux <https://www.archlinux.org/>
135   Linux arlx 3.12.9-2-ARCH #1 SMP PREEMPT Fri Jan 31 10:22:54 CET 2014
136   x86_64 GNU/Linux
137   - gcc (GCC) 4.8.2 20131219 (prerelease)
138     + `devel'opment target: warnings on unused results, just ignore (for
139       now).
141 . CRUX Linux <http://www.crux.nu/>
142   Linux 3.6.11 #1 SMP Sun Sep 15 17:47:31 UTC 2013 x86_64.
143   - gcc (CRUX-x86_64-multilib) 4.7.2.
144     + A single (i think faulty) warning on 'signed overflow'.
145     + `devel'opment target: warnings on unused results, just ignore
146       (for now).
147     + In a very special test mailbox the character `☕' (U+2615 HOT
148       BEVERAGE) is displayed as `[3m<98><95>' (`set PAGER='cat -vet''
149       prints `M-bM-^XM-^U').  Because this is the only system i have
150       seen this, and only in this single mailbox, i suspect a problem
151       in the character conversion environment.  (I hope v14.7 brings
152       sole usage of mbrtowc(3) instead of mbtowc(3) and per-message
153       multibyte states.  Let's see if that fixes this problem.  I'll
154       keep the VM around.)
156 . NetBSD <https://www.netbsd.org/>
157   NetBSD 6.99.28 NetBSD 6.99.28 (GENERIC) #0: Fri Jan  3 05:24:46 UTC
158   2014 i386
159   - gcc (NetBSD nb1 20120916) 4.5.4
160     + Warnings on format strings -- as above.
161     + Faulty message on longjmp() clobbering (on a const variable).
163   NetBSD 6.99.24 NetBSD 6.99.24 (GENERIC) #0: Tue Oct 29 08:23:21 UTC
164   2013 amd64.
165   - gcc (NetBSD nb1 20120916) 4.5.4.
166     + Faulty message on longjmp() clobbering (on a const variable).
168 . FreeBSD <https://www.freebsd.org/>
169   FreeBSD 10.0-RELEASE amd64
170   - FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610
171     Target: x86_64-unknown-freebsd10.0
172     Thread model: posix
174 . Void Linux <http://www.voidlinux.eu/>
175   Linux 3.10.19_1 i686.
176   - gcc (GCC) 4.7.3.
177     + A single (i think faulty) warning on 'signed overflow'.
178     + `devel'opment target: warnings on unused results, just ignore (for
179       now).
180     + `devel'opment target: warnings on format strings -- as above.
182 . OpenBSD <http://www.openbsd.org/>
183   OpenBSD 5.4 i386.
184   - gcc (GCC) 4.2.1 20070719.
185     + Faulty message on longjmp() clobbering (on a const variable).
186     + Warning on usage of strcat(3) in smime_split() (to be addressed
187       for real (i.e., without loosing S/MIME support) in next minor).
189 . DragonFly BSD <https://www.dragonflybsd.org/>
190   DragonFly 3.6-RELEASE x86_64
191   - gcc 4.7.3 [DragonFly] Release/2013-04-11.
192     + A single (i think faulty) warning on 'signed overflow'.
193       (Yep, i think it's finally time to fix it once in a while.)
194     + Harmless iconv(3) warning again (as if we didn't have had to
195       treat it specially already).
197 . UnixWare 7.1.4.
198   + Note: this make(1) requires the -e option to pass values to make(1)
199     subprocesses, so, if you want to overwrite DESTDIR= when doing
200     `packager-install', you better say '$ make -e DESTDIR=xy ...'.
201   + You'll see some harmless and ignorable warnings (the problematic
202     looking warning `"openssl.c", line 88: initialization type mismatch'
203     refers to a cast from non-const to const, which shouldn't matter).
205 I'm very interested in reports from other combinations.
206 (It should work practically everywhere, generally speaking.)
208 Program features yet to be overhauled
209 -------------------------------------
211 Since i've forked Heirloom mailx(1) (for real) as S-nail(1) on
212 2012-09-18 i make my way through the codebase, and i'm getting more
213 and more used to it as time goes by -- of course, i'm thinking object
214 and thus this codebase and i are antipodes.
215 The following modules have not yet been looked at and/or have known
216 design flaws or bugs:
218   IMAP, (IMAP-) GSSAPI, (IMAP-) Caching
220 I'll hope to be able to release S-nail v20 on 2018-03-25, the 40th
221 anniversary of Mail, as a good one, then.  Also see `TODO'.
223 vim:set fenc=utf-8:s-ts-mode