This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
created or not. Packages that include other ELP's buildlink3.mk must define
EMACS_BUILDLINK. Other packages don't create wrappers, which reduces build
time a lot.
Don't call pkg_info to get the installed Emacs version; always use the
version matching EMACS_TYPE set by users. Be DEPENDS to it. This should
address pkg/37146 by Aleksey Cheusov.
While here convert some emacs lisp packages to user-destdir.
bulk build code. emacs-w3m uses EMACS_FLAVOR and EMACS_VERSION_MAJOR
to conditionally add a build time dependency on Mule-UCS. The latter
variable is not set when no emacs package is installed though and
therefore a dependency got added between scan phase and build phase,
possibly resulting in multiple builds of Mule-UCS in older
(non-pbulk) bulk builds. Fix this by switching to EMACS_TYPE for
the logic.
A lot of changes since 1.3.3, including Unicode support and add-on modules
("shimbun").
NOTE:
I had to comment out w3m's "ucs_conv=1" option which is hard-coded in w3m.el,
so that w3m without unicode option also works with emacs-w3m. Do we want
w3m to always have its homegrown yet another Unicode mapping table?
% ls w3m.*
-rwxr-xr-x 1 uebayasi users 513186 Jan 27 20:46 w3m.no-unicode
-rwxr-xr-x 1 uebayasi users 1182323 Jan 27 20:48 w3m.unicode
rather than PKG_FAIL_REASON, so that they provide useful error
messages in build logs, and so that they continue to work on platforms
where they aren't broken.
1) Simplify the way how an emacs version is picked when no emacs
is installed, but a user try to install an Emacs Lisp package.
Just pick up the version set as EMACS_TYPE than searching for
versions already installed etc. If the EMACS_TYPE version is
not supported by the Emacs Lisp Package, just fail. EMACS_TYPE
be default to GNU Emacs 21.
(In other words, users should set EMACS_TYPE as they want.
Otherwise GNU Emacs 21 is used.)
2) All Emacs Lisp Packages *must* prepend EMACS_PKGNAME_PREFIX to
a) the PKGNAME itself, and b) PKGNAME in its dependency lines.
EMACS_PKGNAME_PREFIX is expanded to "xemacs-" when XEmacs is
used. This keeps dependency graph of Emacs-Lisp-packages-
installed-for-XEmacs consistent.
3) Document EMACS_* variables as much as possible.
4) Provide more cookies for PLIST. Maybe utilized later.
Note that the 2) change doesn't affect the default, GNU Emacs 21
behaviour. So no version / revision bumps in this commit.
User visible change summary:
* w3m.el (w3m-goto-url): Display a help message to stop
asynchronous process.
* w3m.el (w3m-emacs-w3m-icon): Use helvetica-bold to widen image.
* w3m.el (w3m-lynx-like-map): Don't define key bindings for
`w3m-zoom-out-image' and `w3m-zoom-in-image' when emacs-w3m in
running in non-graphical display.
* w3m.el (w3m-w3m-dump-head-source): Display the message which
describes how to stop asynchronous process.
(w3m-lynx-like-map): Changed the key binded to `w3m-process-stop'
from `C-c C-g' to `C-c C-k'.
* w3m-image (w3m-resize-image-by-rate): Limit the minimum scale.
* w3m.el (w3m-resize-inline-image-internal): Remove an existing
image only for XEmacs.
* w3m.el (w3m-resize-inline-image-internal): Remove an existing
image before resizing.
* w3m.el (w3m-lynx-like-map): Unbind the key "N" to the command
`w3m-namazu' in order to avoid binding collision to
`w3m-view-next-page'. Thanks to Satoshi TAOKA for his report.
* w3m.el (w3m-lynx-like-map): Bind key M-] to `w3m-zoom-in-image';
bind key M-[ to `w3m-zoom-out-image'.
Emacs-w3m, a simple interface program of w3m, which works on Emacs.
w3m itself is a good program for WWW. Emacs-w3m provides an interface of w3m
on Emacs so that users can use Emacs's editing environment for WWW access.
This benefits multibyte language users.