When running 'make clean' in an extracted release tarball, file
mercurial/__version__.py is removed, causing a subsequent install to
indicate 'version unknown'.
This problem was reported in the past [1] and a patch proposed in that mail,
but was never properly sent nor applied.
[1] http://selenic.com/pipermail/mercurial/2010-December/036249.html
OS X would offer to expand the zip so the (multi file) installer inside it
could be run ... but that would leave the expanded zip folder around.
Instead, use a .dmg file that automatically will be mounted - that seems more
common on OS X.
Still, there is two levels of levels of clicking before actually launching the
installer. Having a single file installer would be better ... but seems to be
hard. A more feasible improvement would be some fancy layout inside the .dmg .
`which -s` is a BSDism that doesn't exist on other versions of
`which`. That means that even on Mac OS X, `make osx` breaks if you have
another utils package installed (e.g. debianutils installed thru
fink). Redirect output to /dev/null instead.
"make clean" already removed __index__.py[cdo], but not the __index__.py
(automatically generated by "python setup.py build_hgextindex").
"setup.py build_hgextindex" did not generate a new index if file
__index__.py[cdo] already existed, because if __index__.py was removed,
the compiled file containing the old information was imported and used.
Generate an empty file (with a new timestamp to generate a new .py[cdo])
instead and make mercurial.extensions ignore the unset docs attribute.
One of the problems was a failed test-help.t, to reproduce:
$ rm hgext/__index__.py*
$ echo 'docs = {"mq": "dummy"}' > hgext/__index__.py
$ make test-help.t
With this a "make clean" or "python setup.py build_hgextindex" helps.
The update is done on a temporary file since d6abb3586946. The name of this
file was first XX.po~ and has been changed to XX.po.tmp in all except of one
place. Do this now.
Allow overwrite LANGUAGE and LC_ALL make variables, for make i18n man and html.
After this patch, we can make i18n man and html by following command:
$ make clean all LANGUAGE=ja
When running 'python setup.py sdist' many files were omitted from the resulting
tarball that are required for a complete build, including the .h file for the
inotify extension due to a python2.7+ distutils bug. This would cause 'make dist'
to fail to build a correct dist on python2.7
By building a MANIFEST.in that is the same as the old MANIFEST with 'include'
at the start of each line will cause a correct MANIFEST to be built and used
by distutils.
Comments marked with "i18n:", like:
# i18n: do not translate the field names
msg = _("Valid entries for the format field are topic, bar, number.")
will become available for translators in the .po files:
#. i18n: do not translate the field names
msgid "Valid entries for the format field are topic, bar, number."
msgstr ""
Given a system Python version of 2.6, the following won't clean up build:
$ make local PYTHON=python2.7
$ make clean
Distutils only cleans up build subdirectories for the current Python
version.
This patch cleans up the build folder even if PYTHON=python2.7 isn't
specified to clean.
The DESTDIR variable used to tell 'make install' an alternate system root
to install the software to. Since setup.py supports the same via its --root
parameter, it's easy to make life easier for many packagers.
By default, xgettext will wrap strings at 79 characters. This width
includes the two double-quotes and the '\n' added. Our strings are now
wrapped at 78 characters and a line can therefore be up to 82
characters wide in the .po file.
Setting the width to 82 characters ensures that xgettext does no silly
wrapping on our already-wrapped strings while still wrapping long
one-liners at 82 characters.
The xgettext program knows about Python string formatting and will
mark messages with a special "#, python-format" comment in the hg.pot
file. When msgfmt compiles the file, it can check these messages to
ensure that the translated string uses the same conversion specifiers
as the original string.
The pygettext program is still used to extract the docstrings.
The target update-pot extracts strings using pygettext and updates the
i18n/hg.pot file. The translators can then use msgmerge to merge the
new strings in hg.pot with their xx.po file when they want to.
The setup.py file now includes files under both templates/ and i18n/
as data files.
local: build extensions inplace (the former "all" target")
all: "local" (for people who expect this) and build everything else
install: install pre-built things (so root doesn't have to write to $HOME)
install-home: use setup.py's --home option instead of --prefix