All checksums have been double-checked against existing RMD160 and
SHA512 hashes
Could not be committed due to merge conflict:
devel/py-traitlets/distinfo
The following distfiles were unfetchable (note: some may be only fetched
conditionally):
./devel/pvs/distinfo pvs-3.2-solaris.tgz
./devel/eclipse/distinfo eclipse-sourceBuild-srcIncluded-3.0.1.zip
Some packages, for example GNU sed, still use old versions of
gettext.m4 (serial 67 or older) despite having recent releases.
These versions of gettext.m4 fail to detect gettext on musl, which
has gettext built-in to libc. While there is some logic in
gettext-lib/builtin.mk for this situation, it only covers the case
where libintl is separate from libc. To fix this, set the corresponding
configure variables when gettext is built-in to libc.
Version 0.21 - July 2020
* Programming languages support:
- Shell:
o xgettext now recognizes and ignores 'env' invocations and environment
variable assignments in front of commands.
- Java:
o xgettext now recognizes format strings in the Formatter syntax. They
are marked as 'java-printf-format' in POT and PO files.
o xgettext now recognizes text blocks as string literals.
- JavaScript:
xgettext parses JSX expressions more reliably.
- Ruby:
o xgettext now supports Ruby.
o 'msgfmt -c' now verifies the syntax of translations of Ruby format
strings.
* Runtime behaviour:
- On native Windows platforms, the directory that contains the message
catalogs may now contain arbitrary Unicode characters. To make use of
this feature, use the new function 'wbindtextdomain' instead of
'bindtextdomain'. It allows to pass a directory name in wchar_t[] encoding.
Note: 'wbindtextdomain' exists only on native Windows platforms.
* Improvements for translators:
- When msgfmt writes a MO file, it now does so in such a way that processes
that are currently using an older copy of the MO file will not crash.
* Libtextstyle:
- Added support for emitting hyperlinks.
- New API for doing formatted output.
- The example programs support the NO_COLOR environment variable.
Version 0.20.2 - April 2020
* Improvements for maintainers:
- A dependency bug in po/Makefile.in.in has been fixed.
* Programming languages support:
- Shell:
o The programs 'gettext', 'ngettext', when invoked with option -e, now
expand '\\' and octal escape sequences, instead of swallowing them.
(Bug present since the beginning.)
o xgettext now recognizes 'gettext' program invocations with the '-e'
option, such as
gettext -e 'some\nstring\n'
- Python:
xgettext now assumes a Python source file is in UTF-8 encoding by default,
as stated in PEP 3120.
- Desktop Entry:
The value of the 'Icon' property is no longer extracted into the POT file
by xgettext. The documentation explains how to localize icons.
* Runtime behaviour:
- The interpretation of the language preferences on macOS has been improved,
especially in the case where a system locale does not exist for the
combination of the selected primary language and the selected territory.
- Fixed a multithread-safety bug on Cygwin and native Windows.
The H_NGETTEXT_GETTEXT symbol was tested to determine whether we should use
the built-in implementation and to declare USE_BUILTIN.gettext. According
the associated comment, this symbol should be tested to determine if there
is a built-in implementation and to declare IS_BUILTIN.gettext.
Adding gettext libraries unconditionally can cause issues in a small number of
packages which deliberately try to build multilib, where the non-default arch
ends up failing as the gettext libraries are the wrong ELF class.
This will instead be fixed directly in glib2 which appears to be the root cause
of the recent fallout.
This effectively turns on BROKEN_GETTEXT_DETECTION=yes on SunOS and adds
-lintl whenever a package pulls in gettext-lib. The SunOS linker is
more strict than others and will ensure that library dependencies are
explicit. Recent changes to gettext-lib and glib made the dependency
implicit and caused a lot of fallout.
Use BUILDLINK_LDFLAGS instead of BUILDLINK_LIBS so that it actually gets
added through buildlink, not only when packages honour ${LIBS}.
Changelog:
Version 0.20.1 - May 2019
* Important bug fix:
- Fixed a wrong shared library versioning of libintl.so.
Version 0.20 - May 2019
* Support for reproducible builds:
- msgfmt now eliminates the POT-Creation-Date header field from .mo files.
* Improvements for translators:
- update-po target in Makefile.in.in now uses msgmerge --previous.
* Improvements for maintainers:
- msgmerge now has an option --for-msgfmt, that produces a PO file meant
for use by msgfmt only. This option saves processing time, in particular
by omitting fuzzy matching that is not useful in this situation.
- The .pot file in a 'po' directory is now erased by "make maintainer-clean".
- It is now possible to override xgettext options from the po/Makefile.in.in
through options in XGETTEXT_OPTIONS (declared in po/Makevars).
- The --intl option of the gettextize program (deprecated since 2010) is
no longer available. Instead of including the intl sources in your package,
we suggest making the libintl library an optional prerequisite of your
package. This will simplify the build system of your package.
- Accordingly, the Autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is gone as well.
* Programming languages support:
- C, C++:
xgettext now supports strings in u8"..." syntax, as specified in C11
and C++11.
- C, C++:
xgettext now supports 'p'/'P' exponent markers in number tokens, as
specified in C99 and C++17.
- C++:
xgettext now supports underscores in number tokens.
- C++:
xgettext now supports single-quotes in number tokens, as specified in
C++14.
- Shell:
o The programs 'gettext', 'ngettext' now support a --context argument.
o gettext.sh contains new function eval_pgettext and eval_npgettext
for producing translations of messages with context.
- Java:
o xgettext now supports UTF-8 encoded .properties files (a new feature
of Java 9).
o The build system and tools now support Java 9, 10, and 11. On the
other hand, support for old versions of Java (Java 5 and older,
GCJ 4.2.x and older) has been dropped.
- Perl:
o Native support for context functions (pgettext, dpgettext, dcpgettext,
npgettext, dnpgettext, dcnpgettext).
o better detection of question mark and slash as operators (as opposed
to regular expression delimiters).
- Scheme:
xgettext now parses the syntax for specialized byte vectors (#u8(...),
#vu8(...), etc.) correctly.
- Pascal:
xgettext can now extract strings from .rsj files, produced by the
Free Pascal compiler version 3.0.0 or newer.
- Vala:
xgettext now parses escape sequences in strings more accurately.
- JavaScript:
xgettext now parses template literals correctly.
* Runtime behaviour:
- The interpretation of the language preferences on macOS has been fixed.
- Per-thread locales are now also supported on Solaris 11.4.
- The replacements for the printf()/fprintf()/... functions that are
provided through <libintl.h> on native Windows and NetBSD are now POSIX
compliant. There is no conflict any more between these replacements
and other possible replacements provided by gnulib or mingw.
* Libtextstyle:
- This package installs a new library 'libtextstyle', together with a new
header file <textstyle.h>. It is a library for styling text output sent
to a console or terminal emulator.
Packagers: please see the suggested packaging hints in the file PACKAGING.
0.19.8.1 fixes an unintentional soname bump in the included libraries.
Version 0.19.8 - June 2016
* Support for reproducible builds:
- msgfmt now produces little-endian .mo files by default.
* Programming languages support:
- XML:
xgettext and msgfmt now look for .its files in directories
supplied through the GETTEXTDATADIRS or XDG_DATA_DIRS environment
variable.
- JavaScript:
xgettext and msgfmt now recognize numbered arguments in format
strings.
* Portability:
- Improve OS/2 kLIBC support.
- Fix libintl compilation issue with pre-C99 compilers. It was a
regression since 0.19.5.
- The AM_GNU_GETTEXT Autoconf macro can now detect musl-libc's
gettext as a compatible implementation.
* Programming languages support:
- XML:
xgettext can now load custom string extraction rules supplied by
consumer projects. The rules are written in XML, utilizing the
Internationalization Tag Set (ITS) standard. All the existing
XML-based language scanners (Glade, GSettings, and AppData) are
rewritten using ITS. In addition, msgfmt now has --xml option to
merge translations back to the original XML document.
* Portability:
- Improve OS/2 kLIBC support (still not complete)
- Remove dependency on expat
Issues found with existing distfiles:
distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip
distfiles/fortran-utils-1.1.tar.gz
distfiles/ivykis-0.39.tar.gz
distfiles/enum-1.11.tar.gz
distfiles/pvs-3.2-libraries.tgz
distfiles/pvs-3.2-linux.tgz
distfiles/pvs-3.2-solaris.tgz
distfiles/pvs-3.2-system.tgz
No changes made to these distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
Version 0.19.6 - September 2015
* Programming languages support:
- AppData:
xgettext now supports AppData file format, used by software center
applications (e.g., GNOME Software) to describe installable
applications.
* A new macro AM_GNU_GETTEXT_REQUIRE_VERSION can be used to indicate
autopoint to pull the latest available infrastructure, instead of
the exact version specified with AM_GNU_GETTEXT_VERSION. When
AM_GNU_GETTEXT_REQUIRE_VERSION is used, AM_GNU_GETTEXT_VERSION is
ignored.
* po/Makefile.in.in can now insert the file $(DOMAIN).pot-header to
$(DOMAIN).pot, instead of the standard header comments.
* Bug fixes:
- Fix mishandling of gettext version numbers for minor releases, in
po-mode.el and gettextize.
- Fix build with --enable-relocatable.
Version 0.19.5 - July 2015
* xgettext now has a feature to perform syntax checks on msgid, which
could enforce common styles of translatable strings, such as to
prefer Unicode characters to the corresponding ASCII characters.
They can be enabled with --check option or special "xgettext: "
comment in the source code. By default, no syntax checks are
enabled.
* msgfilter and msgexec now have an option --newline, which appends a
newline character to filter input and trims it from the filter
output. This would allow filter programs to be more POSIX friendly.
* The base Unicode standard is now updated to 8.0.0. This
particularly improves "\N{...}" notation handling of xgettext for
Perl and Python.
* msginit is now capable of generating "Plural-Forms:" from Unicode
CLDR. This feature is still experimental, but you can try it by
setting the GETTEXTCLDRDIR environment variable pointing to the
directory where the CLDR archive is extracted. The actual
conversion is done by a helper program 'cldr-plural', which can be
used as a generic converter and evaluator of CLDR plural forms.
* Programming languages support:
- C++ with KDE: xgettext and msgfmt can now recognize KUIT (KDE User
Interface Text) markup. See the documentation section "KUIT
Format Strings" for more info.
- C++ with KDE: xgettext now recognizes all default KDE keywords.
This removes the need for a long list of --keyword and --flag
options to perform a reasonable extraction.
* Bug fixes:
- xgettext C++11 raw string recognition is now stricter and don't
accept unbalanced delimiters.
- Suppress baseless warnings which msgfmt emits when processing a
.desktop file.
- xgettext line wrapping behaviour is now consistent between comment
lines and non-comment lines.
- Fix msgfilter-7 test failure on some platforms.
- Fix VPATH build.
Version 0.19.3 - October 2014
* Bug fixes:
- Fix xgettext mishandling of octal character escapes in C.
- Fix autopoint infinite recursion with certain configure.ac.
* The po/Makevars file has a new field MSGINIT_OPTIONS, that can be
used to adjust msginit's operation. This is particularly useful for
controlling line wrapping behavior together with MSGMERGE_OPTIONS
and XGETTEXT_OPTIONS.
* Portability:
- Building on Solaris 10 and 11 with Solaris Studio compiler is now
fixed.
Version 0.19.2 - July 2014
* Bug fixes:
- Fix xgettext crash in parsing empty string literals in C and Vala.
- ChangeLog file is added back to the gettext infrastructure. It was
mistakenly removed in 0.19.
- Autoconf macro trace in autopoint now works again with Autoconf 2.68
or earlier. It was a regression in 0.19.
Version 0.19.1 - June 2014
* Programming languages support:
- Desktop Entry:
msgfmt now always reads the po/LINGUAS file, regardless of whether
the LINGUAS environment variable is set. The variable can now be
used to restrict the languages list read from the po/LINGUAS file.
- Vala:
Bug fix in xgettext handling of "//" in string literals. This was
a regression after the C-99 Unicode escape support.
* The po/Makevars.template file now contains the newly added variables.
* msgfmt now treats errors in the PO file header as non-fatal. Since
0.19 msgfmt started to abort on the fatal errors, but some
translation systems are still not ready to supply valid headers.
* Future backward-incompatibilities:
- In future Gettext versions, msgfmt will treat header errors as
fatal and terminate the command execution.
Version 0.19 - June 2014
* Programming languages support:
- Desktop Entry:
xgettext and msgfmt now support .desktop files, used by desktop
applications, as input and output.
- GSettings:
xgettext now supports GSettings schema file format used by GNOME
applications.
- JavaScript:
xgettext now recognizes E4X (ECMA-357) constructs.
- PHP:
Single and double quotes around heredoc markers are now recognized.
- Python:
The acceptable format specifiers in the braced-syntax format
strings are now limited to the Standard Format Specifiers, to
reasonably avoid false-positives.
- Scheme:
The gettext shorthand form _"abc", used by GIMP script-fu, is now
recognized by xgettext.
- C and Vala:
xgettext now recognizes C99-style Unicode character escapes.
* The --add-location option of msgattrib, msgcat, msgcomm, msgconv,
msgen, msgfilter, msggrep, msgmerge, msguniq, and xgettext commands
now takes an optional argument 'never', 'full', or 'file', to
control the format of "#: ..." comments.
* msgfmt now has --source option to keep generated .java file when
running in Java mode.
* msgattrib now has --empty option that sets msgstr to empty when
clearing fuzzy flag.
* msgexec and msgfilter pass the plural information to subprocess
through the environment variable MSG{EXEC,FILTER}_MSGID_PLURAL and
MSG{EXEC,FILTER}_PLURAL_FORM.
* New built-in filters 'quot' and 'boldquot' have been added to
msgfilter. These filters convert Latin quotation marks ('...',
"...") into Unicode quotation marks (for example, U+2018) if
possible, similar to the sed commands used in po/Rules-quot and
po/Rules-boldquot.
* The po/Makevars file has a couple of new options PO_DEPENDS_ON_POT
and DIST_DEPENDS_ON_UPDATE_PO, that can be used to adjust the
behavior of updating PO files on demand.
* xgettext now strips prefixed string before the comment tag. This is
useful to support C-style comment like this:
/*
* TRANSLATORS: first line
* second line
*/
In this example, the extracted comment does not contain "* " at the
beginning of each line.
* libgettextpo library:
- Memory leak fixes in the PO file parser.
* Documentation:
- A complete example showing the use of GNU gettext in a GNOME 3
application has been added.
Version 0.18.3 - July 2013
* Runtime behaviour:
On Mac OS X systems, the setlocale() function now properly
invalidates loaded message catalogs when a locale has been set.
* Programming languages support:
- C++:
The gnu::autosprintf class now provides an assignment operator.
- Glade:
xgettext now supports GtkBuider file format used by Glade 3.
xgettext now also extracts contexts (msgctxt) from Glade 2 and
GtkBuider files.
- JavaScript:
xgettext now partially supports JavaScript. Since the current
JavaScript specification (ECMA-262) does not define the standard
set of formatting methods nor translation functions, the
implementation supports only a limited set of formatting methods
and translation functions commonly used in Gjs and other popular
JavaScript implemenations and libraries.
- Lua:
xgettext now supports Lua, using Ľubomír Remák's lua-gettext.
- Python:
xgettext and msgfmt's format string checking now recognize Python
format string in braced syntax (PEP 3101). xgettext now also
supports explicit string concatenation with '+' and handles
platform dependent line terminators (LF/CR/CRLF) transparently.
- Tcl:
Bug fix in xgettext Unicode escape handling.
- Vala:
xgettext now supports Vala.
* msgattrib now has --previous option to keep previous msgid when
making messages fuzzy, similar to msgmerge --previous.
* msgfmt now checks PO file headers more strictly with less
false-positives.
* 'gettextize' now checks macro directories specified with
AC_CONFIGURE_MACRO_DIRS in configure.ac.
* Portability:
- msginit now does not require GNU sed.
- The Makefile rule for generating en@quot and en@boldquot now uses
@SED@ variable instead of hard-coded 'sed' command to allow users
to supply GNU sed.
* Future backward-incompatibilities:
- In future Gettext versions, the files installed by 'gettextize'
will require Automake 1.10 or later. This will improve the
compatibility of user projects with newer Automake versions.
* xgettext now understands the block comment syntax of Guile 2.0.
* libgettextpo library:
- The initial msgstr of a new message is now "", not NULL.
- Bug fixes in the functions po_message_is_range, po_file_check_all,
po_message_check_all.
* Installation options:
The configure options --with-xz and --with-bzip2 can be used to specify
alternate compression methods for the archive used by the 'autopoint'
program. These options, together with --with-git, allow to trade
dependencies against installed package size. --with-xz has the highest
compression rate, followed by --with-git, followed by --with-bzip2.
* Autoconf macros:
- The autoconf macros installed by 'gettextize' now work with the
forthcoming Automake 1.14 and require Autoconf version 2.60 or
newer.
* Portability:
- Building on MacOS X 10.7, Cygwin 1.7.10, and newer 64-bit mingw is
now supported.
The previous change to devel/gettext-lib moved the libintl header to
include/gettext. For platforms that don't have native libintl, this
header needs to be at include inside the buildlink directory. This
patch makes that happen.
Contributed-by: OBATA Akio
1) The libintl.h from gettext-lib renames the gettext functions so that
they are prefixed with 'libintl_' (So that the functions named in
libintl don't conflict with any that maybe in libc).
2) gettext-tools is _always_ built with gettext-lib.
3) The tools architecture may make gettext-tools a build dependence or
someone may choose to install gettext-tools.
4) The OS has built in gettext.
5) For some reason ${PREFIX}/include is add to the compiler search path and
libintl.h from gettext-lib is found before the system one.
The result is that all the gettext functions are renamed to have the
'libintl_' prefix but libintl is not linked with and the following happens:
${FILENAME}: undefined reference to `libintl_gettext'
${FILENAME}: undefined reference to `libintl_textdomain'
${FILENAME}: undefined reference to `libintl_bindtextdomain'
collect2: error: ld returned 1 exit status
Solution:
Hide libintl.h from gettext-lib in ${PREFIX}/include/gettext then add that
to the compiler search path when realy needed.
This should permanently fix PR's pkg/24326 pkg/36201 pkg/40153 pkg/43129
pkg/44009 and pkg/44016.
Bump PKGREVISION.
* msggrep: A '$' anchor in a regular expression now also matches the end of
the string, even if it does not end in a newline.
* Dependencies:
The libraries and programs are now linked with libunistring if this library
is already installed.
* Installation options:
The configure option --with-cvs is deprecated. The 'autopoint' program will
now use the 'git' program by default to compress its archive. If the
configure option --without-git is specified, 'autopoint' will not rely on
'git', but will instead rely on a locally installed a 3 MB large archive.
Changes 0.18:
* Runtime behaviour:
- On MacOS X and Windows systems, <libintl.h> now extends setlocale() and
newlocale() so that their determination of the default locale considers
the choice the user has made in the system control panels.
- On MacOS X systems, the gettext()/dgettext()/... functions now respect the
locale of the current thread, if a thread-specific locale has been set.
* PO file format:
There is a new field 'Language' in the header entry. It denotes the language
code (plus optional country code) for the PO file. This field can be used
by automated tools, such as spell checkers. It is expected to be more
reliable than looking at the file name or at the 'Language-Team' field in
the header entry.
msgmerge, msgcat, msgen have a new option --lang that allows to specify
this field. Additionally, msgmerge fills in this new field by looking at
the 'Language-Team' field (if the --lang option is not given).
* xgettext and PO file format:
For messages with plural forms, programmers can inform the translators
about the range of possible values of the numeric argument, like this:
/* xgettext: range: 0..15 */
This information 'range: 0..15' is stored in the PO file as a flag attached
to the message. Translators can produce better translations when they know
that the numeric argument is small.
* Colorized PO files:
msgattrib, msgcomm, msgconv, msgen, msgfilter, msggrep, msginit, msgmerge,
msgunfmt, msguniq, xgettext now have options --color and --style, like msgcat
has since version 0.17.
* msgmerge is up to 10 times faster when the PO and POT files are large.
This speedup was contributed by Ralf Wildenhues.
* msgcmp has a new option -N/--no-fuzzy-matching, like msgmerge has since
version 0.12.
* msgfilter now sets environment variables during the invocation of the
filter, indicating the msgid and location of the messge being processed.
* xgettext now can extract plural forms from Qt 4 programs. The recommended
xgettext command-line options for this case are:
--qt --keyword=tr:1,1t --keyword=tr:1,2c,2t --keyword=tr:1,1,2c,3t
* xgettext --language=GCC-source now recognizes also the format strings
used in the Fortran front-end of the GCC compiler, and marks them as
'gfc-internal-format'.
* autopoint can now be used to update several PO directories all together.
caused PR 44003.
Fix PR 43879 by removing patch-ac which was added in 2004 to fix a problem
on Darwin -- Darwins from at least 10.4 up don't need it any longer.
This package are using some files outside of the directory specified by WRKSRC,
(ex. ../build-aux/config.*). But some pkgsrc checks/replacements/modifications
are only effect to below ${WRKSRC}.
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.
needs -liconv in order to satisfy linkage requirements. This is now
patterned after the approach taken with readline and termlib.
Examples on NetBSD for a package that includes only
gettext-lib/buildlink3.mk:
PREFER_NATIVE= yes
PREFER_PKGSRC= # empty
# This uses the native gettext and native iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl"
PREFER_NATIVE= yes
PREFER_PKGSRC= iconv
# This uses the native gettext and native iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl"
PREFER_NATIVE= yes
PREFER_PKGSRC= gettext
# This uses the pkgsrc gettext and native iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl"
PREFER_NATIVE= yes
PREFER_PKGSRC= gettext iconv
# This uses the pkgsrc gettext and pkgsrc iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl -liconv"
PREFER_NATIVE= # empty
PREFER_PKGSRC= yes
# This uses the pkgsrc gettext and pkgsrc iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl -liconv"
PREFER_NATIVE= iconv
PREFER_PKGSRC= yes
# This uses the pkgsrc gettext and native iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl"
PREFER_NATIVE= gettext
PREFER_PKGSRC= yes
# This uses the native gettext and native iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl"
PREFER_NATIVE= gettext iconv
PREFER_PKGSRC= yes
# This uses the native gettext and native iconv, with:
# BUILDLINK_LDADD.gettext == "-lintl"