FreeBSD 10 ispell port
Building and installing ispell on a new install of FreeBSD
10 (now RC5) failed. With ISPELL_BRITISH set, the following errors
occur during a "make install".
install -o root -g wheel -m 444 /usr/ports/textproc/ispell/work/ispell-3.3.02/languages/british/english.xlg /usr/local/share/ispell/english.dict install: /usr/ports/textproc/ispell/work/*/*.aff: No such file or directory *** Error code 71 (ignored) ====> Compressing man pages (compress-man) ===> Installing for ispell-3.3.02_5 ===> Checking if textproc/ispell already installed ===> Registering installation for ispell-3.3.02_5 pkg-static: lstat(/usr/ports/textproc/ispell/work/stage/usr/local/bin/buildhash): No such file or directory pkg-static: lstat(/usr/ports/textproc/ispell/work/stage/usr/local/bin/defmt-c): No such file or directory pkg-static: lstat(/usr/ports/textproc/ispell/work/stage/usr/local/bin/defmt-sh): No such file or directory ... the list goes on ...
There are two different errors: The first is the failure to install the *.aff files. The next is the slew of pkg-static errors.
On inspecting the Makefile, it seems that the
*.aff error was caused by the path specification not going
deep enough into the work directory tree. The second
problem, related to pkg-static, was due to the new method
of package creation implemented since pkgng hit mainstream. For
ports that are not yet packagised, the NO_STAGE
macro can be set to omit the staging step. This macro had been
added to the Makefile but was not evaluated when specifying
any non-US spelling environment.
The following unified diff shows the changes to the Makefile which made the install work in my environment (long lines folded).
root@cobalt:/usr/ports/textproc/ispell # diff -u Makefile.orig Makefile
--- Makefile.orig 2014-01-07 16:54:08.000000000 +0000
+++ Makefile 2014-01-07 17:07:26.000000000 +0000
@@ -35,9 +35,9 @@
DATADIR= ${PREFIX}/share/ispell
ISPELL= ${WRKSRC}/ispell
-.if (!defined(ISPELL_ES) && !defined(ISPELL_IT) && \
!defined(ISPELL_FR) && !defined(ISPELL_SE) && \
!defined(ISPELL_BR) && !defined(ISPELL_DENEU) && \
!defined(ISPELL_DEALT) && !defined(ISPELL_BRITISH) && \
!defined(ISPELL_NO) && !defined(ISPELL_NL) && \
!defined(ISPELL_DA) && !defined(ISPELL_AF) && \
!defined(ISPELL_FI) && !defined(ISPELL_PL) && \
!defined(ISPELL_BG) && !defined(ISPELL_SK) && \
!defined(ISPELL_CS))
NO_STAGE= yes
+.if (!defined(ISPELL_ES) && !defined(ISPELL_IT) && \
!defined(ISPELL_FR) && !defined(ISPELL_SE) && \
!defined(ISPELL_BR) && !defined(ISPELL_DENEU) && \
!defined(ISPELL_DEALT) && !defined(ISPELL_BRITISH) && \
!defined(ISPELL_NO) && !defined(ISPELL_NL) && \
!defined(ISPELL_DA) && !defined(ISPELL_AF) && \
!defined(ISPELL_FI) && !defined(ISPELL_PL) && \
!defined(ISPELL_BG) && !defined(ISPELL_SK) && \
!defined(ISPELL_CS))
pre-everything::
@${ECHO_MSG} '*********************************************************'
@${ECHO_MSG} '* You can add further dictionaries: *'
@@ -347,7 +347,7 @@
${INSTALL_DATA} ${WRKSRC}/languages/american/english.med+ \
${DATADIR}/english.dict
.endif
- @-${INSTALL_DATA} ${WRKDIR}/*/*.aff ${WRKDIR}/*/*.hash ${DATADIR}
+ @-${INSTALL_DATA} ${WRKDIR}/*/*/*/*.aff ${WRKDIR}/*/*/*/*.hash ${DATADIR}
.if defined(ISPELL_ES)
@${CAT} ${MASTERDIR}/pkg-plist.es >> ${TMPPLIST}
.endif
The defect has been reported.
Update: 31st January, 2014
The fix for the defect report was to remove the ispell port
from the ports tree. The replacement is aspell-ispell, an
ispell shim for aspell. The simplest way of installing the English
language version is to use pkg:
# pkg install -y en-aspell # (cd /usr/ports/textproc/aspell-ispell; make install)
There are other language ports for aspell, all starting with the standard two character code.