[SRU] intltool confused by separate build-dir
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
intltool |
Confirmed
|
Undecided
|
Unassigned | ||
intltool (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Gianfranco Costamagna | ||
Artful |
Fix Released
|
Undecided
|
Gianfranco Costamagna |
Bug Description
[Impact]
An old bug in intltool breaks out-of-tree builds, including "make distcheck", in a lot of intltool-using projects when automake version is 1.15 or newer.
The fix for this issue (by Aleksander Morgado) is provided in the debdiffs attached to the report.
It's a long-standing bug which is present in all current Ubuntu releases,
starting from Xenial. Would be really nice to get it finally fixed. The developers have to patch their intltool locally just to have a working distcheck target (which is used when making release tarballs).
[Test Case]
Try making release tarball for some upstream package. For example, it can be mate-desktop, a base project for various MATE components.
$ sudo apt-get build-dep mate-desktop
$ git clone https:/
$ cd mate-desktop
$ ./autogen.sh --enable-gtk-doc --enable-deprecated --disable-strict
$ make -j5 && make dist -j5 && make distcheck -j5
This will build the project, make release tarball and check it by unpacking it into a new directory and building (again) in it. The last step will fail:
-------
srcdir=../../../po /usr/bin/
The following files contain translations and are currently not in use. Please
consider adding these to the POTFILES.in file, located in the po/ directory.
sub/mate-
sub/tools/
If some of these files are left out on purpose then please add them to
POTFILES.skip instead of POTFILES.in. A file 'missing' containing this list
of left out files has been written in the current directory.
Please report to https:/
if [ -r missing -o -r notexist ]; then \
exit 1; \
fi
Makefile:179: recipe for target 'check' failed
-------
The out-of-tree build breaks here.
[Regression Potential]
None. This is a fix for a broken feature, it doesn't affects other ones.
Also the fix had been tested by MATE developers in various distros, including Debian, Ubuntu and Fedora.
[Original Description]
systemd uses 'intltool-update -m' from intltoolize in its 'make check'.
$(top_srcdir)
Changed in intltool: | |
assignee: | nobody → Rodney Dawes (dobey) |
tags: | added: patch |
Changed in intltool: | |
assignee: | Rodney Dawes (dobey) → nobody |
Changed in intltool: | |
status: | New → Confirmed |
Changed in intltool (Ubuntu): | |
status: | New → Confirmed |
Changed in intltool (Ubuntu): | |
importance: | Undecided → High |
tags: | added: yakkety zesty |
description: | updated |
tags: | removed: zesty |
tags: | removed: artful verification-done-artful |
Reproduced with intltool bzr master.
This issue gains importance due to the following change in automake 1.15:
The make distcheck target has been changed to use $(distdir) /_build/ sub as its working directory. Code making assumption on the value of srcdir and top_srcdir during make distcheck will fail.
When testing with automake 1.15, you may end up seeing that the files generated during compilation into builddir are not ignored from intltool-update -m even if they are listed in POTFILES.skip, e.g.:
make[2]: Entering directory '/home/ aleksander/ Development/ foss/ModemManag er/ModemManager -1.5.0/ _build/ sub/po' EXTRACT= "/usr/bin/ intltool- extract" XGETTEXT= "/usr/bin/ xgettext" srcdir=../../../po /usr/bin/ intltool- update --gettext-package ModemManager --pot intltool- update -m
INTLTOOL_
rm -f missing notexist
srcdir=../../../po /usr/bin/
The following files contain translations and are currently not in use. Please
consider adding these to the POTFILES.in file, located in the po/ directory.
sub/data/ org.freedesktop .ModemManager1. policy. in
If some of these files are left out on purpose then please add them to aleksander/ Development/ foss/ModemManag er/ModemManager -1.5.0/ _build/ sub/po' aleksander/ Development/ foss/ModemManag er/ModemManager -1.5.0/ _build/ sub'
POTFILES.skip instead of POTFILES.in. A file 'missing' containing this list
of left out files has been written in the current directory.
Please report to <email address hidden>
if [ -r missing -o -r notexist ]; then \
exit 1; \
fi
Makefile:150: recipe for target 'check' failed
make[2]: *** [check] Error 1
make[2]: Leaving directory '/home/
Makefile:511: recipe for target 'check-recursive' failed
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory '/home/
Makefile:716: recipe for target 'distcheck' failed
make: *** [distcheck] Error 1